Home Assistant Unofficial Reference 2024.12.1
button.py
Go to the documentation of this file.
1 """Renson ventilation unit buttons."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 
8 from renson_endura_delta.renson import RensonVentilation
9 
11  ButtonDeviceClass,
12  ButtonEntity,
13  ButtonEntityDescription,
14 )
15 from homeassistant.config_entries import ConfigEntry
16 from homeassistant.const import EntityCategory
17 from homeassistant.core import HomeAssistant
18 from homeassistant.helpers.entity_platform import AddEntitiesCallback
19 
20 from . import RensonCoordinator, RensonData
21 from .const import DOMAIN
22 from .entity import RensonEntity
23 
24 
25 @dataclass(frozen=True, kw_only=True)
27  """Class describing Renson button entity."""
28 
29  action_fn: Callable[[RensonVentilation], None]
30 
31 
32 ENTITY_DESCRIPTIONS: tuple[RensonButtonEntityDescription, ...] = (
34  key="sync_time",
35  entity_category=EntityCategory.CONFIG,
36  translation_key="sync_time",
37  action_fn=lambda api: api.sync_time(),
38  ),
40  key="restart",
41  device_class=ButtonDeviceClass.RESTART,
42  entity_category=EntityCategory.CONFIG,
43  action_fn=lambda api: api.restart_device(),
44  ),
46  key="reset_filter",
47  translation_key="reset_filter",
48  entity_category=EntityCategory.CONFIG,
49  action_fn=lambda api: api.reset_filter(),
50  ),
51 )
52 
53 
55  hass: HomeAssistant,
56  config_entry: ConfigEntry,
57  async_add_entities: AddEntitiesCallback,
58 ) -> None:
59  """Set up the Renson button platform."""
60 
61  data: RensonData = hass.data[DOMAIN][config_entry.entry_id]
62 
63  entities = [
64  RensonButton(description, data.api, data.coordinator)
65  for description in ENTITY_DESCRIPTIONS
66  ]
67 
68  async_add_entities(entities)
69 
70 
72  """Representation of a Renson actions."""
73 
74  _attr_has_entity_name = True
75  entity_description: RensonButtonEntityDescription
76 
77  def __init__(
78  self,
79  description: RensonButtonEntityDescription,
80  api: RensonVentilation,
81  coordinator: RensonCoordinator,
82  ) -> None:
83  """Initialize class."""
84  super().__init__(description.key, api, coordinator)
85 
86  self.entity_descriptionentity_description = description
87 
88  def press(self) -> None:
89  """Triggers the action."""
90  self.entity_descriptionentity_description.action_fn(self.apiapiapi)
None __init__(self, RensonButtonEntityDescription description, RensonVentilation api, RensonCoordinator coordinator)
Definition: button.py:82
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: button.py:58