Home Assistant Unofficial Reference 2024.12.1
scene.py
Go to the documentation of this file.
1 """Support for Nexia Automations."""
2 
3 from typing import Any
4 
5 from nexia.automation import NexiaAutomation
6 
7 from homeassistant.components.scene import Scene
8 from homeassistant.core import HomeAssistant
9 from homeassistant.helpers.entity_platform import AddEntitiesCallback
10 from homeassistant.helpers.event import async_call_later
11 
12 from .const import ATTR_DESCRIPTION
13 from .coordinator import NexiaDataUpdateCoordinator
14 from .entity import NexiaEntity
15 from .types import NexiaConfigEntry
16 
17 SCENE_ACTIVATION_TIME = 5
18 
19 
21  hass: HomeAssistant,
22  config_entry: NexiaConfigEntry,
23  async_add_entities: AddEntitiesCallback,
24 ) -> None:
25  """Set up automations for a Nexia device."""
26  coordinator = config_entry.runtime_data
27  nexia_home = coordinator.nexia_home
30  coordinator, nexia_home.get_automation_by_id(automation_id)
31  )
32  for automation_id in nexia_home.get_automation_ids()
33  )
34 
35 
37  """Provides Nexia automation support."""
38 
39  _attr_translation_key = "automation"
40 
41  def __init__(
42  self, coordinator: NexiaDataUpdateCoordinator, automation: NexiaAutomation
43  ) -> None:
44  """Initialize the automation scene."""
45  super().__init__(coordinator, automation.automation_id)
46  self._attr_name_attr_name = automation.name
47  self._automation_automation = automation
48  self._attr_extra_state_attributes_attr_extra_state_attributes = {ATTR_DESCRIPTION: automation.description}
49 
50  async def async_activate(self, **kwargs: Any) -> None:
51  """Activate an automation scene."""
52  await self._automation_automation.activate()
53 
54  async def refresh_callback(_):
55  await self.coordinator.async_refresh()
56 
57  async_call_later(self.hasshasshass, SCENE_ACTIVATION_TIME, refresh_callback)
None __init__(self, NexiaDataUpdateCoordinator coordinator, NexiaAutomation automation)
Definition: scene.py:43
None activate(self, **Any kwargs)
Definition: __init__.py:131
None async_setup_entry(HomeAssistant hass, NexiaConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: scene.py:24
CALLBACK_TYPE async_call_later(HomeAssistant hass, float|timedelta delay, HassJob[[datetime], Coroutine[Any, Any, None]|None]|Callable[[datetime], Coroutine[Any, Any, None]|None] action)
Definition: event.py:1597