1 """Event entity for Knocki integration."""
3 from knocki
import Event, EventType, KnockiClient, Trigger
10 from .
import KnockiConfigEntry
11 from .const
import DOMAIN
16 entry: KnockiConfigEntry,
17 async_add_entities: AddEntitiesCallback,
19 """Set up Knocki from a config entry."""
20 coordinator = entry.runtime_data
22 added_triggers = set(coordinator.data)
26 current_triggers = set(coordinator.data)
27 new_triggers = current_triggers - added_triggers
28 added_triggers.update(new_triggers)
32 for trigger
in new_triggers
35 coordinator.async_add_listener(_async_add_entities)
39 for trigger
in coordinator.data.values()
43 EVENT_TRIGGERED =
"triggered"
47 """Representation of a Knocki trigger."""
49 _attr_event_types = [EVENT_TRIGGERED]
50 _attr_has_entity_name =
True
51 _attr_should_poll =
False
52 _attr_translation_key =
"knocki"
54 def __init__(self, trigger: Trigger, client: KnockiClient) ->
None:
55 """Initialize the entity."""
60 identifiers={(DOMAIN, trigger.device_id)},
61 manufacturer=
"Knocki",
62 serial_number=trigger.device_id,
63 name=trigger.device_id,
65 self.
_attr_unique_id_attr_unique_id = f
"{trigger.device_id}_{trigger.details.trigger_id}"
68 """Register listener."""
75 """Handle incoming event."""
77 event.payload.details.trigger_id == self.
_trigger_trigger.details.trigger_id
78 and event.payload.device_id == self.
_trigger_trigger.device_id
None _trigger_event(self, str event_type, dict[str, Any]|None event_attributes=None)
None async_added_to_hass(self)
None __init__(self, Trigger trigger, KnockiClient client)
None _handle_event(self, Event event)
None async_on_remove(self, CALLBACK_TYPE func)
None schedule_update_ha_state(self, bool force_refresh=False)
None _async_add_entities(AvmWrapper avm_wrapper, AddEntitiesCallback async_add_entities, FritzData data_fritz)
None async_setup_entry(HomeAssistant hass, KnockiConfigEntry entry, AddEntitiesCallback async_add_entities)