Home Assistant Unofficial Reference 2024.12.1
button.py
Go to the documentation of this file.
1 """Support for StarLine button."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.button import ButtonEntity, ButtonEntityDescription
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.core import HomeAssistant
8 from homeassistant.helpers.entity_platform import AddEntitiesCallback
9 
10 from .account import StarlineAccount, StarlineDevice
11 from .const import DOMAIN
12 from .entity import StarlineEntity
13 
14 BUTTON_TYPES: tuple[ButtonEntityDescription, ...] = (
16  key="poke",
17  translation_key="horn",
18  ),
20  key="panic",
21  translation_key="panic",
22  entity_registry_enabled_default=False,
23  ),
24  *[
26  key=f"flex_{i}",
27  translation_key="flex",
28  translation_placeholders={"num": str(i)},
29  entity_registry_enabled_default=False,
30  )
31  for i in range(1, 10)
32  ],
33 )
34 
35 
37  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
38 ) -> None:
39  """Set up the StarLine button."""
40  account: StarlineAccount = hass.data[DOMAIN][entry.entry_id]
42  StarlineButton(account, device, description)
43  for device in account.api.devices.values()
44  if device.support_state
45  for description in BUTTON_TYPES
46  )
47 
48 
50  """Representation of a StarLine button."""
51 
52  entity_description: ButtonEntityDescription
53 
54  def __init__(
55  self,
56  account: StarlineAccount,
57  device: StarlineDevice,
58  description: ButtonEntityDescription,
59  ) -> None:
60  """Initialize the button."""
61  super().__init__(account, device, description.key)
62  self.entity_descriptionentity_description = description
63 
64  @property
65  def available(self):
66  """Return True if entity is available."""
67  return super().available and self._device_device.online
68 
69  def press(self):
70  """Press the button."""
71  self._account_account.api.set_car_state(self._device_device.device_id, self._key_key, True)
None __init__(self, StarlineAccount account, StarlineDevice device, ButtonEntityDescription description)
Definition: button.py:59
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: button.py:38