mirror of https://github.com/home-assistant/core
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""Base entity for the BleBox devices integration."""
|
|
|
|
import logging
|
|
|
|
from blebox_uniapi.error import Error
|
|
from blebox_uniapi.feature import Feature
|
|
|
|
from homeassistant.helpers.device_registry import DeviceInfo
|
|
from homeassistant.helpers.entity import Entity
|
|
|
|
from .const import DOMAIN
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
class BleBoxEntity[_FeatureT: Feature](Entity):
|
|
"""Implements a common class for entities representing a BleBox feature."""
|
|
|
|
def __init__(self, feature: _FeatureT) -> None:
|
|
"""Initialize a BleBox entity."""
|
|
self._feature = feature
|
|
self._attr_name = feature.full_name
|
|
self._attr_unique_id = feature.unique_id
|
|
product = feature.product
|
|
self._attr_device_info = DeviceInfo(
|
|
identifiers={(DOMAIN, product.unique_id)},
|
|
manufacturer=product.brand,
|
|
model=product.model,
|
|
name=product.name,
|
|
sw_version=product.firmware_version,
|
|
configuration_url=f"http://{product.address}",
|
|
)
|
|
|
|
async def async_update(self) -> None:
|
|
"""Update the entity state."""
|
|
try:
|
|
await self._feature.async_update()
|
|
except Error as ex:
|
|
_LOGGER.error("Updating '%s' failed: %s", self.name, ex)
|