1 """Button entities for Tami4Edge."""
3 from collections.abc
import Callable
4 from dataclasses
import dataclass
7 from Tami4EdgeAPI
import Tami4EdgeAPI
8 from Tami4EdgeAPI.drink
import Drink
16 from .const
import API, DOMAIN
17 from .entity
import Tami4EdgeBaseEntity
19 _LOGGER = logging.getLogger(__name__)
22 @dataclass(frozen=True, kw_only=True)
24 """A class that describes Tami4Edge button entities."""
26 press_fn: Callable[[Tami4EdgeAPI],
None]
29 @dataclass(frozen=True, kw_only=True)
31 """A class that describes Tami4Edge Drink button entities."""
33 press_fn: Callable[[Tami4EdgeAPI, Drink],
None]
38 translation_key=
"boil_water",
39 press_fn=
lambda api: api.boil_water(),
44 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
46 """Perform the setup for Tami4Edge."""
48 api: Tami4EdgeAPI = hass.data[DOMAIN][entry.entry_id][API]
49 buttons: list[Tami4EdgeBaseEntity] = [
Tami4EdgeButton(api, BOIL_WATER_BUTTON)]
51 device = await hass.async_add_executor_job(api.get_device)
52 drinks = device.drinks
59 translation_key=
"prepare_drink",
60 translation_placeholders={
"drink_name": drink.name},
61 press_fn=
lambda api, drink: api.prepare_drink(drink),
72 """Button entity for Tami4Edge."""
74 entity_description: Tami4EdgeButtonEntityDescription
77 """Handle the button press."""
82 """Drink Button entity for Tami4Edge."""
84 entity_description: Tami4EdgeDrinkButtonEntityDescription
87 self, api: Tami4EdgeAPI, entity_description: EntityDescription, drink: Drink
89 """Initialize the drink button."""
90 super().
__init__(api=api, entity_description=entity_description)
94 """Handle the button press."""