Home Assistant Unofficial Reference 2024.12.1
event.py
Go to the documentation of this file.
1 """Support for Fibaro event entities."""
2 
3 from __future__ import annotations
4 
5 from pyfibaro.fibaro_device import DeviceModel, SceneEvent
6 from pyfibaro.fibaro_state_resolver import FibaroEvent
7 
9  ENTITY_ID_FORMAT,
10  EventDeviceClass,
11  EventEntity,
12 )
13 from homeassistant.config_entries import ConfigEntry
14 from homeassistant.const import Platform
15 from homeassistant.core import HomeAssistant
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 
18 from . import FibaroController
19 from .const import DOMAIN
20 from .entity import FibaroEntity
21 
22 
24  hass: HomeAssistant,
25  entry: ConfigEntry,
26  async_add_entities: AddEntitiesCallback,
27 ) -> None:
28  """Set up the Fibaro event entities."""
29  controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
30 
31  # Each scene event represents a button on a device
33  (
34  FibaroEventEntity(device, scene_event)
35  for device in controller.fibaro_devices[Platform.EVENT]
36  for scene_event in device.central_scene_event
37  ),
38  True,
39  )
40 
41 
43  """Representation of a Fibaro Event Entity."""
44 
45  def __init__(self, fibaro_device: DeviceModel, scene_event: SceneEvent) -> None:
46  """Initialize the Fibaro device."""
47  super().__init__(fibaro_device)
48 
49  key_id = scene_event.key_id
50 
51  self.entity_identity_identity_id = ENTITY_ID_FORMAT.format(f"{self.ha_id}_button_{key_id}")
52 
53  self._button_button = key_id
54 
55  self._attr_name_attr_name_attr_name = f"{fibaro_device.friendly_name} Button {key_id}"
56  self._attr_device_class_attr_device_class = EventDeviceClass.BUTTON
57  self._attr_event_types_attr_event_types = scene_event.key_event_types
58  self._attr_unique_id_attr_unique_id_attr_unique_id = f"{fibaro_device.unique_id_str}.{key_id}"
59 
60  async def async_added_to_hass(self) -> None:
61  """Call when entity is added to hass."""
62  await super().async_added_to_hass()
63 
64  # Register event callback
65  self.controllercontroller.register_event(
66  self.fibaro_devicefibaro_device.fibaro_id, self._event_callback_event_callback
67  )
68 
69  def _event_callback(self, event: FibaroEvent) -> None:
70  if event.key_id == self._button_button:
71  self._trigger_event_trigger_event(event.key_event_type)
72  self.schedule_update_ha_stateschedule_update_ha_state()
None _trigger_event(self, str event_type, dict[str, Any]|None event_attributes=None)
Definition: __init__.py:148
None _event_callback(self, FibaroEvent event)
Definition: event.py:69
None __init__(self, DeviceModel fibaro_device, SceneEvent scene_event)
Definition: event.py:45
None schedule_update_ha_state(self, bool force_refresh=False)
Definition: entity.py:1244
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: event.py:27