Add coordinator to Knocki (#120251)

This commit is contained in:
Joost Lekkerkerker 2024-06-24 11:41:33 +02:00 committed by GitHub
parent c04a6cc639
commit f3a1ca6d54
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 89 additions and 22 deletions

View file

@ -3,7 +3,7 @@
from knocki import Event, EventType, KnockiClient, Trigger
from homeassistant.components.event import EventEntity
from homeassistant.core import HomeAssistant
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@ -17,10 +17,26 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up Knocki from a config entry."""
entry_data = entry.runtime_data
coordinator = entry.runtime_data
added_triggers = set(coordinator.data)
@callback
def _async_add_entities() -> None:
current_triggers = set(coordinator.data)
new_triggers = current_triggers - added_triggers
added_triggers.update(new_triggers)
if new_triggers:
async_add_entities(
KnockiTrigger(coordinator.data[trigger], coordinator.client)
for trigger in new_triggers
)
coordinator.async_add_listener(_async_add_entities)
async_add_entities(
KnockiTrigger(trigger, entry_data.client) for trigger in entry_data.triggers
KnockiTrigger(trigger, coordinator.client)
for trigger in coordinator.data.values()
)