Home Assistant Unofficial Reference 2024.12.1
scene.py
Go to the documentation of this file.
1 """Support for KNX scenes."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from xknx.devices import Scene as XknxScene
8 
9 from homeassistant import config_entries
10 from homeassistant.components.scene import Scene
11 from homeassistant.const import CONF_ENTITY_CATEGORY, CONF_NAME, Platform
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 from homeassistant.helpers.typing import ConfigType
15 
16 from . import KNXModule
17 from .const import KNX_ADDRESS, KNX_MODULE_KEY
18 from .entity import KnxYamlEntity
19 from .schema import SceneSchema
20 
21 
23  hass: HomeAssistant,
24  config_entry: config_entries.ConfigEntry,
25  async_add_entities: AddEntitiesCallback,
26 ) -> None:
27  """Set up scene(s) for KNX platform."""
28  knx_module = hass.data[KNX_MODULE_KEY]
29  config: list[ConfigType] = knx_module.config_yaml[Platform.SCENE]
30 
31  async_add_entities(KNXScene(knx_module, entity_config) for entity_config in config)
32 
33 
35  """Representation of a KNX scene."""
36 
37  _device: XknxScene
38 
39  def __init__(self, knx_module: KNXModule, config: ConfigType) -> None:
40  """Init KNX scene."""
41  super().__init__(
42  knx_module=knx_module,
43  device=XknxScene(
44  xknx=knx_module.xknx,
45  name=config[CONF_NAME],
46  group_address=config[KNX_ADDRESS],
47  scene_number=config[SceneSchema.CONF_SCENE_NUMBER],
48  ),
49  )
50  self._attr_entity_category_attr_entity_category = config.get(CONF_ENTITY_CATEGORY)
51  self._attr_unique_id_attr_unique_id = (
52  f"{self._device.scene_value.group_address}_{self._device.scene_number}"
53  )
54 
55  async def async_activate(self, **kwargs: Any) -> None:
56  """Activate the scene."""
57  await self._device_device.run()
None __init__(self, KNXModule knx_module, ConfigType config)
Definition: scene.py:39
None async_activate(self, **Any kwargs)
Definition: scene.py:55
None async_setup_entry(HomeAssistant hass, config_entries.ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: scene.py:26
int run(RuntimeConfig runtime_config)
Definition: runner.py:146