Improve entity descriptions in Tami4 (#106776)

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4
This commit is contained in:
Joost Lekkerkerker 2024-01-02 13:11:19 +01:00 committed by GitHub
parent 4747460286
commit 0d7bb2d124
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,12 +1,13 @@
"""Button entities for Tami4Edge.""" """Button entities for Tami4Edge."""
from collections.abc import Callable
from dataclasses import dataclass
import logging import logging
from Tami4EdgeAPI import Tami4EdgeAPI from Tami4EdgeAPI import Tami4EdgeAPI
from homeassistant.components.button import ButtonEntity from homeassistant.components.button import ButtonEntity, ButtonEntityDescription
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import API, DOMAIN from .const import API, DOMAIN
@ -14,10 +15,21 @@ from .entity import Tami4EdgeBaseEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
ENTITY_DESCRIPTION = EntityDescription(
key="boil_water", @dataclass(frozen=True, kw_only=True)
translation_key="boil_water", class Tami4EdgeButtonEntityDescription(ButtonEntityDescription):
icon="mdi:kettle-steam", """A class that describes Tami4Edge button entities."""
press_fn: Callable[[Tami4EdgeAPI], None]
BUTTONS: tuple[Tami4EdgeButtonEntityDescription] = (
Tami4EdgeButtonEntityDescription(
key="boil_water",
translation_key="boil_water",
icon="mdi:kettle-steam",
press_fn=lambda api: api.boil_water(),
),
) )
@ -27,16 +39,16 @@ async def async_setup_entry(
"""Perform the setup for Tami4Edge.""" """Perform the setup for Tami4Edge."""
api: Tami4EdgeAPI = hass.data[DOMAIN][entry.entry_id][API] api: Tami4EdgeAPI = hass.data[DOMAIN][entry.entry_id][API]
async_add_entities([Tami4EdgeBoilButton(api)]) async_add_entities(
Tami4EdgeButton(api, entity_description) for entity_description in BUTTONS
)
class Tami4EdgeBoilButton(Tami4EdgeBaseEntity, ButtonEntity): class Tami4EdgeButton(Tami4EdgeBaseEntity, ButtonEntity):
"""Boil button entity for Tami4Edge.""" """Button entity for Tami4Edge."""
def __init__(self, api: Tami4EdgeAPI) -> None: entity_description: Tami4EdgeButtonEntityDescription
"""Initialize the button entity."""
super().__init__(api, ENTITY_DESCRIPTION)
def press(self) -> None: def press(self) -> None:
"""Handle the button press.""" """Handle the button press."""
self._api.boil_water() self.entity_description.press_fn(self._api)