1 """Support for doorbird events."""
3 from typing
import TYPE_CHECKING
8 EventEntityDescription,
14 from .const
import DOMAIN
15 from .device
import DoorbirdEvent
16 from .entity
import DoorBirdEntity
17 from .models
import DoorBirdConfigEntry, DoorBirdData
19 EVENT_DESCRIPTIONS = {
22 translation_key=
"doorbell",
23 device_class=EventDeviceClass.DOORBELL,
28 translation_key=
"motion",
29 device_class=EventDeviceClass.MOTION,
30 event_types=[
"motion"],
37 config_entry: DoorBirdConfigEntry,
38 async_add_entities: AddEntitiesCallback,
40 """Set up the DoorBird event platform."""
41 door_bird_data = config_entry.runtime_data
44 for doorbird_event
in door_bird_data.door_station.event_descriptions
45 if (description := EVENT_DESCRIPTIONS.get(doorbird_event.event_type))
50 """A doorbird event entity."""
52 entity_description: EventEntityDescription
53 _attr_has_entity_name =
True
57 door_bird_data: DoorBirdData,
58 doorbird_event: DoorbirdEvent,
59 entity_description: EventEntityDescription,
61 """Initialize an event for a doorbird device."""
65 event = doorbird_event.event
67 slug_name = event.removeprefix(self.
_door_station_door_station.slug).strip(
"_")
68 friendly_name = slug_name.replace(
"_",
" ")
69 self.
_attr_name_attr_name = friendly_name[0:1].upper() + friendly_name[1:].lower()
72 """Subscribe to device events."""
76 f
"{DOMAIN}_{self._doorbird_event.event}",
83 """Handle a device event."""
86 assert event_types
is not None
None async_added_to_hass(self)
None __init__(self, DoorBirdData door_bird_data, DoorbirdEvent doorbird_event, EventEntityDescription entity_description)
None _async_handle_event(self)
None _trigger_event(self, str event_type, dict[str, Any]|None event_attributes=None)
None async_write_ha_state(self)
None async_on_remove(self, CALLBACK_TYPE func)
None async_setup_entry(HomeAssistant hass, DoorBirdConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)