Home Assistant Unofficial Reference 2024.12.1
button.py
Go to the documentation of this file.
1 """Plugwise Button component for Home Assistant."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.button import ButtonDeviceClass, ButtonEntity
6 from homeassistant.const import EntityCategory
7 from homeassistant.core import HomeAssistant
8 from homeassistant.helpers.entity_platform import AddEntitiesCallback
9 
10 from . import PlugwiseConfigEntry
11 from .const import GATEWAY_ID, REBOOT
12 from .coordinator import PlugwiseDataUpdateCoordinator
13 from .entity import PlugwiseEntity
14 from .util import plugwise_command
15 
16 
18  hass: HomeAssistant,
19  entry: PlugwiseConfigEntry,
20  async_add_entities: AddEntitiesCallback,
21 ) -> None:
22  """Set up the Plugwise buttons from a ConfigEntry."""
23  coordinator = entry.runtime_data
24 
25  gateway = coordinator.data.gateway
27  PlugwiseButtonEntity(coordinator, device_id)
28  for device_id in coordinator.data.devices
29  if device_id == gateway[GATEWAY_ID] and REBOOT in gateway
30  )
31 
32 
34  """Defines a Plugwise button."""
35 
36  _attr_device_class = ButtonDeviceClass.RESTART
37  _attr_entity_category = EntityCategory.CONFIG
38 
39  def __init__(
40  self,
41  coordinator: PlugwiseDataUpdateCoordinator,
42  device_id: str,
43  ) -> None:
44  """Initialize the button."""
45  super().__init__(coordinator, device_id)
46  self._attr_translation_key_attr_translation_key = REBOOT
47  self._attr_unique_id_attr_unique_id = f"{device_id}-reboot"
48 
49  @plugwise_command
50  async def async_press(self) -> None:
51  """Triggers the Plugwise button press service."""
52  await self.coordinator.api.reboot_gateway()
None __init__(self, PlugwiseDataUpdateCoordinator coordinator, str device_id)
Definition: button.py:43
None async_setup_entry(HomeAssistant hass, PlugwiseConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: button.py:21