diff --git a/homeassistant/components/tuya/__init__.py b/homeassistant/components/tuya/__init__.py index d1e661fbe42..bcc5c9dc79c 100644 --- a/homeassistant/components/tuya/__init__.py +++ b/homeassistant/components/tuya/__init__.py @@ -16,7 +16,7 @@ from tuya_iot import ( from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers import device_registry +from homeassistant.helpers import device_registry as dr from homeassistant.helpers.dispatcher import dispatcher_send from .const import ( @@ -116,7 +116,15 @@ async def _init_tuya_sdk(hass: HomeAssistant, entry: ConfigEntry) -> bool: await cleanup_device_registry(hass, device_manager) # Register known device IDs + device_registry = dr.async_get(hass) for device in device_manager.device_map.values(): + device_registry.async_get_or_create( + config_entry_id=entry.entry_id, + identifiers={(DOMAIN, device.id)}, + manufacturer="Tuya", + name=device.name, + model=f"{device.product_name} (unsupported)", + ) device_ids.add(device.id) hass.config_entries.async_setup_platforms(entry, PLATFORMS) @@ -127,11 +135,11 @@ async def cleanup_device_registry( hass: HomeAssistant, device_manager: TuyaDeviceManager ) -> None: """Remove deleted device registry entry if there are no remaining entities.""" - device_registry_object = device_registry.async_get(hass) - for dev_id, device_entry in list(device_registry_object.devices.items()): + device_registry = dr.async_get(hass) + for dev_id, device_entry in list(device_registry.devices.items()): for item in device_entry.identifiers: if DOMAIN == item[0] and item[1] not in device_manager.device_map: - device_registry_object.async_remove_device(dev_id) + device_registry.async_remove_device(dev_id) break @@ -198,10 +206,10 @@ class DeviceListener(TuyaDeviceListener): def async_remove_device(self, device_id: str) -> None: """Remove device from Home Assistant.""" _LOGGER.debug("Remove device: %s", device_id) - device_registry_object = device_registry.async_get(self.hass) - device_entry = device_registry_object.async_get_device( + device_registry = dr.async_get(self.hass) + device_entry = device_registry.async_get_device( identifiers={(DOMAIN, device_id)} ) if device_entry is not None: - device_registry_object.async_remove_device(device_entry.id) + device_registry.async_remove_device(device_entry.id) self.device_ids.discard(device_id)