Ensure all devices show up in Tuya (#58280)
This commit is contained in:
parent
23e362faf3
commit
a4641a91ff
1 changed files with 15 additions and 7 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue