Home Assistant Unofficial Reference 2024.12.1
button.py
Go to the documentation of this file.
1 """Support for Yale Smart Alarm button."""
2 
3 from __future__ import annotations
4 
5 from typing import TYPE_CHECKING
6 
7 from homeassistant.components.button import ButtonEntity, ButtonEntityDescription
8 from homeassistant.core import HomeAssistant
9 from homeassistant.exceptions import HomeAssistantError
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 
12 from . import YaleConfigEntry
13 from .const import DOMAIN, YALE_ALL_ERRORS
14 from .coordinator import YaleDataUpdateCoordinator
15 from .entity import YaleAlarmEntity
16 
17 BUTTON_TYPES = (
19  key="panic",
20  translation_key="panic",
21  ),
22 )
23 
24 
26  hass: HomeAssistant,
27  entry: YaleConfigEntry,
28  async_add_entities: AddEntitiesCallback,
29 ) -> None:
30  """Set up the button from a config entry."""
31 
32  coordinator = entry.runtime_data
33 
35  [YalePanicButton(coordinator, description) for description in BUTTON_TYPES]
36  )
37 
38 
40  """A Panic button for Yale Smart Alarm."""
41 
42  entity_description: ButtonEntityDescription
43 
44  def __init__(
45  self,
46  coordinator: YaleDataUpdateCoordinator,
47  description: ButtonEntityDescription,
48  ) -> None:
49  """Initialize the plug switch."""
50  super().__init__(coordinator)
51  self.entity_descriptionentity_description = description
52  self._attr_unique_id_attr_unique_id = f"yale_smart_alarm-{description.key}"
53 
54  async def async_press(self) -> None:
55  """Press the button."""
56  if TYPE_CHECKING:
57  assert self.coordinator.yale, "Connection to API is missing"
58 
59  try:
60  await self.hasshasshass.async_add_executor_job(
61  self.coordinator.yale.trigger_panic_button
62  )
63  except YALE_ALL_ERRORS as error:
64  raise HomeAssistantError(
65  translation_domain=DOMAIN,
66  translation_key="could_not_trigger_panic",
67  translation_placeholders={
68  "entity_id": self.entity_identity_id,
69  "error": str(error),
70  },
71  ) from error
None __init__(self, YaleDataUpdateCoordinator coordinator, ButtonEntityDescription description)
Definition: button.py:48
None async_setup_entry(HomeAssistant hass, YaleConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: button.py:29