Home Assistant Unofficial Reference 2024.12.1
button.py
Go to the documentation of this file.
1 """TOLO Sauna Button controls."""
2 
3 from tololib import LampMode
4 
5 from homeassistant.components.button import ButtonEntity
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.const import EntityCategory
8 from homeassistant.core import HomeAssistant
9 from homeassistant.helpers.entity_platform import AddEntitiesCallback
10 
11 from .const import DOMAIN
12 from .coordinator import ToloSaunaUpdateCoordinator
13 from .entity import ToloSaunaCoordinatorEntity
14 
15 
17  hass: HomeAssistant,
18  entry: ConfigEntry,
19  async_add_entities: AddEntitiesCallback,
20 ) -> None:
21  """Set up buttons for TOLO Sauna."""
22  coordinator = hass.data[DOMAIN][entry.entry_id]
24  [
25  ToloLampNextColorButton(coordinator, entry),
26  ]
27  )
28 
29 
31  """Button for switching to the next lamp color."""
32 
33  _attr_entity_category = EntityCategory.CONFIG
34  _attr_translation_key = "next_color"
35 
36  def __init__(
37  self, coordinator: ToloSaunaUpdateCoordinator, entry: ConfigEntry
38  ) -> None:
39  """Initialize lamp next color button entity."""
40  super().__init__(coordinator, entry)
41 
42  self._attr_unique_id_attr_unique_id = f"{entry.entry_id}_lamp_next_color"
43 
44  @property
45  def available(self) -> bool:
46  """Return if entity is available."""
47  return (
48  self.coordinator.data.status.lamp_on
49  and self.coordinator.data.settings.lamp_mode == LampMode.MANUAL
50  )
51 
52  def press(self) -> None:
53  """Execute action when lamp change color button was pressed."""
54  self.coordinator.client.lamp_change_color()
None __init__(self, ToloSaunaUpdateCoordinator coordinator, ConfigEntry entry)
Definition: button.py:38
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: button.py:20