Home Assistant Unofficial Reference 2024.12.1
button.py
Go to the documentation of this file.
1 """Button entity for LIFX devices.."""
2 
3 from __future__ import annotations
4 
6  ButtonDeviceClass,
7  ButtonEntity,
8  ButtonEntityDescription,
9 )
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.const import EntityCategory
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from .const import DOMAIN, IDENTIFY, RESTART
16 from .coordinator import LIFXUpdateCoordinator
17 from .entity import LIFXEntity
18 
19 RESTART_BUTTON_DESCRIPTION = ButtonEntityDescription(
20  key=RESTART,
21  device_class=ButtonDeviceClass.RESTART,
22  entity_category=EntityCategory.CONFIG,
23 )
24 
25 IDENTIFY_BUTTON_DESCRIPTION = ButtonEntityDescription(
26  key=IDENTIFY,
27  device_class=ButtonDeviceClass.IDENTIFY,
28  entity_category=EntityCategory.CONFIG,
29 )
30 
31 
33  hass: HomeAssistant,
34  entry: ConfigEntry,
35  async_add_entities: AddEntitiesCallback,
36 ) -> None:
37  """Set up LIFX from a config entry."""
38  domain_data = hass.data[DOMAIN]
39  coordinator: LIFXUpdateCoordinator = domain_data[entry.entry_id]
41  [LIFXRestartButton(coordinator), LIFXIdentifyButton(coordinator)]
42  )
43 
44 
46  """Base LIFX button."""
47 
48  _attr_should_poll = False
49 
50  def __init__(self, coordinator: LIFXUpdateCoordinator) -> None:
51  """Initialise a LIFX button."""
52  super().__init__(coordinator)
53  self._attr_unique_id_attr_unique_id = (
54  f"{coordinator.serial_number}_{self.entity_description.key}"
55  )
56 
57 
59  """LIFX restart button."""
60 
61  entity_description = RESTART_BUTTON_DESCRIPTION
62 
63  async def async_press(self) -> None:
64  """Restart the bulb on button press."""
65  self.bulbbulb.set_reboot()
66 
67 
69  """LIFX identify button."""
70 
71  entity_description = IDENTIFY_BUTTON_DESCRIPTION
72 
73  async def async_press(self) -> None:
74  """Identify the bulb by flashing it when the button is pressed."""
75  await self.coordinator.async_identify_bulb()
None __init__(self, LIFXUpdateCoordinator coordinator)
Definition: button.py:50
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: button.py:36