Home Assistant Unofficial Reference 2024.12.1
scene.py
Go to the documentation of this file.
1 """Support for Fibaro scenes."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from pyfibaro.fibaro_scene import SceneModel
8 
9 from homeassistant.components.scene import Scene
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.device_registry import DeviceInfo
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 from homeassistant.util import slugify
15 
16 from . import FibaroController
17 from .const import DOMAIN
18 
19 
21  hass: HomeAssistant,
22  entry: ConfigEntry,
23  async_add_entities: AddEntitiesCallback,
24 ) -> None:
25  """Perform the setup for Fibaro scenes."""
26  controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
28  [FibaroScene(scene, controller) for scene in controller.read_scenes()],
29  True,
30  )
31 
32 
34  """Representation of a Fibaro scene entity."""
35 
36  def __init__(self, fibaro_scene: SceneModel, controller: FibaroController) -> None:
37  """Initialize the Fibaro scene."""
38  self._fibaro_scene_fibaro_scene = fibaro_scene
39 
40  room_name = controller.get_room_name(fibaro_scene.room_id)
41  if not room_name:
42  room_name = "Unknown"
43 
44  self._attr_name_attr_name = f"{room_name} {fibaro_scene.name}"
45  self._attr_unique_id_attr_unique_id = (
46  f"{slugify(controller.hub_serial)}.scene.{fibaro_scene.fibaro_id}"
47  )
48  self._attr_extra_state_attributes_attr_extra_state_attributes = {"fibaro_id": fibaro_scene.fibaro_id}
49  # propagate hidden attribute set in fibaro home center to HA
50  self._attr_entity_registry_visible_default_attr_entity_registry_visible_default = fibaro_scene.visible
51  # All scenes are shown on hub device
52  self._attr_device_info_attr_device_info = DeviceInfo(
53  identifiers={(DOMAIN, controller.hub_serial)}
54  )
55 
56  def activate(self, **kwargs: Any) -> None:
57  """Activate the scene."""
58  self._fibaro_scene_fibaro_scene.start()
None __init__(self, SceneModel fibaro_scene, FibaroController controller)
Definition: scene.py:36
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: scene.py:24