Optimized setup_entities by regrouping platforms

This commit is contained in:
rospogrigio
2022-06-20 10:15:55 +02:00
committed by rospogrigio
parent 1499120665
commit dd565379a3

View File

@@ -259,24 +259,28 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
res = await tuya_api.async_get_devices_list() res = await tuya_api.async_get_devices_list()
hass.data[DOMAIN][DATA_CLOUD] = tuya_api hass.data[DOMAIN][DATA_CLOUD] = tuya_api
async def setup_entities(dev_id): async def setup_entities(device_ids):
dev_entry = entry.data[CONF_DEVICES][dev_id] platforms = set()
device = TuyaDevice(hass, entry, dev_id) for dev_id in device_ids:
hass.data[DOMAIN][TUYA_DEVICES][dev_id] = device entities = entry.data[CONF_DEVICES][dev_id][CONF_ENTITIES]
platforms = platforms.union(
set(entity[CONF_PLATFORM] for entity in entities)
)
hass.data[DOMAIN][TUYA_DEVICES][dev_id] = TuyaDevice(hass, entry, dev_id)
platforms = set(entity[CONF_PLATFORM] for entity in dev_entry[CONF_ENTITIES])
await asyncio.gather( await asyncio.gather(
*[ *[
hass.config_entries.async_forward_entry_setup(entry, platform) hass.config_entries.async_forward_entry_setup(entry, platform)
for platform in platforms for platform in platforms
] ]
) )
device.async_connect()
for dev_id in device_ids:
hass.data[DOMAIN][TUYA_DEVICES][dev_id].async_connect()
await async_remove_orphan_entities(hass, entry) await async_remove_orphan_entities(hass, entry)
for dev_id in entry.data[CONF_DEVICES]: hass.async_create_task(setup_entities(entry.data[CONF_DEVICES].keys()))
hass.async_create_task(setup_entities(dev_id))
unsub_listener = entry.add_update_listener(update_listener) unsub_listener = entry.add_update_listener(update_listener)
hass.data[DOMAIN][entry.entry_id] = {UNSUB_LISTENER: unsub_listener} hass.data[DOMAIN][entry.entry_id] = {UNSUB_LISTENER: unsub_listener}