Home Assistant Unofficial Reference 2024.12.1
scene.py
Go to the documentation of this file.
1 """Support for Lutron Caseta scenes."""
2 
3 from typing import Any
4 
5 from pylutron_caseta.smartbridge import Smartbridge
6 
7 from homeassistant.components.scene import Scene
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.device_registry import DeviceInfo
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 
13 from .const import DOMAIN as CASETA_DOMAIN
14 from .util import serial_to_unique_id
15 
16 
18  hass: HomeAssistant,
19  config_entry: ConfigEntry,
20  async_add_entities: AddEntitiesCallback,
21 ) -> None:
22  """Set up the Lutron Caseta scene platform.
23 
24  Adds scenes from the Caseta bridge associated with the config_entry as
25  scene entities.
26  """
27  data = config_entry.runtime_data
28  bridge = data.bridge
29  scenes = bridge.get_scenes()
30  async_add_entities(LutronCasetaScene(scenes[scene], data) for scene in scenes)
31 
32 
34  """Representation of a Lutron Caseta scene."""
35 
36  def __init__(self, scene, data):
37  """Initialize the Lutron Caseta scene."""
38  self._scene_id_scene_id = scene["scene_id"]
39  self._bridge: Smartbridge = data.bridge
40  bridge_unique_id = serial_to_unique_id(data.bridge_device["serial"])
41  self._attr_device_info_attr_device_info = DeviceInfo(
42  identifiers={(CASETA_DOMAIN, data.bridge_device["serial"])},
43  )
44  self._attr_name_attr_name = scene["name"]
45  self._attr_unique_id_attr_unique_id = f"scene_{bridge_unique_id}_{self._scene_id}"
46 
47  async def async_activate(self, **kwargs: Any) -> None:
48  """Activate the scene."""
49  await self._bridge.activate_scene(self._scene_id_scene_id)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: scene.py:21