Home Assistant Unofficial Reference 2024.12.1
scene.py
Go to the documentation of this file.
1 """Support for Powerview scenes from a Powerview hub."""
2 
3 from __future__ import annotations
4 
5 import logging
6 from typing import Any
7 
8 from aiopvapi.helpers.constants import ATTR_NAME
9 from aiopvapi.resources.scene import Scene as PvScene
10 
11 from homeassistant.components.scene import Scene
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from .const import STATE_ATTRIBUTE_ROOM_NAME
16 from .coordinator import PowerviewShadeUpdateCoordinator
17 from .entity import HDEntity
18 from .model import PowerviewConfigEntry, PowerviewDeviceInfo
19 
20 _LOGGER = logging.getLogger(__name__)
21 
22 RESYNC_DELAY = 60
23 
24 
26  hass: HomeAssistant,
27  entry: PowerviewConfigEntry,
28  async_add_entities: AddEntitiesCallback,
29 ) -> None:
30  """Set up powerview scene entries."""
31  pv_entry = entry.runtime_data
32  pvscenes: list[PowerViewScene] = []
33  for scene in pv_entry.scene_data.values():
34  room_name = getattr(pv_entry.room_data.get(scene.room_id), ATTR_NAME, "")
35  pvscenes.append(
36  PowerViewScene(pv_entry.coordinator, pv_entry.device_info, room_name, scene)
37  )
38  async_add_entities(pvscenes)
39 
40 
42  """Representation of a Powerview scene."""
43 
44  _attr_icon = "mdi:blinds"
45 
46  def __init__(
47  self,
48  coordinator: PowerviewShadeUpdateCoordinator,
49  device_info: PowerviewDeviceInfo,
50  room_name: str,
51  scene: PvScene,
52  ) -> None:
53  """Initialize the scene."""
54  super().__init__(coordinator, device_info, room_name, scene.id)
55  self._scene: PvScene = scene
56  self._attr_name_attr_name = scene.name
57  self._attr_extra_state_attributes_attr_extra_state_attributes = {STATE_ATTRIBUTE_ROOM_NAME: room_name}
58 
59  async def async_activate(self, **kwargs: Any) -> None:
60  """Activate scene. Try to get entities into requested state."""
61  shades = await self._scene.activate()
62  _LOGGER.debug("Scene activated for shade(s) %s", shades)
None __init__(self, PowerviewShadeUpdateCoordinator coordinator, PowerviewDeviceInfo device_info, str room_name, PvScene scene)
Definition: scene.py:52
None activate(self, **Any kwargs)
Definition: __init__.py:131
None async_setup_entry(HomeAssistant hass, PowerviewConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: scene.py:29