From 375af6cb1cc9ac879a85ddc5933ab6bff2943686 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Fri, 27 Dec 2024 21:18:01 +0100 Subject: [PATCH] Introduce base entity for Tile (#134109) --- .../components/tile/device_tracker.py | 18 ++----------- homeassistant/components/tile/entity.py | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 16 deletions(-) create mode 100644 homeassistant/components/tile/entity.py diff --git a/homeassistant/components/tile/device_tracker.py b/homeassistant/components/tile/device_tracker.py index 9994994ec09..a61534ffdea 100644 --- a/homeassistant/components/tile/device_tracker.py +++ b/homeassistant/components/tile/device_tracker.py @@ -8,13 +8,12 @@ from homeassistant.components.device_tracker import TrackerEntity from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_USERNAME from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.util.dt import as_utc from . import TileCoordinator, TileData from .const import DOMAIN +from .entity import TileEntity _LOGGER = logging.getLogger(__name__) @@ -43,10 +42,9 @@ async def async_setup_entry( ) -class TileDeviceTracker(CoordinatorEntity[TileCoordinator], TrackerEntity): +class TileDeviceTracker(TileEntity, TrackerEntity): """Representation of a network infrastructure device.""" - _attr_has_entity_name = True _attr_name = None _attr_translation_key = "tile" @@ -55,19 +53,7 @@ class TileDeviceTracker(CoordinatorEntity[TileCoordinator], TrackerEntity): super().__init__(coordinator) self._attr_extra_state_attributes = {} - self._tile = coordinator.tile self._attr_unique_id = f"{entry.data[CONF_USERNAME]}_{self._tile.uuid}" - self._entry = entry - - @property - def available(self) -> bool: - """Return if entity is available.""" - return super().available and not self._tile.dead - - @property - def device_info(self) -> DeviceInfo: - """Return device info.""" - return DeviceInfo(identifiers={(DOMAIN, self._tile.uuid)}, name=self._tile.name) @callback def _handle_coordinator_update(self) -> None: diff --git a/homeassistant/components/tile/entity.py b/homeassistant/components/tile/entity.py new file mode 100644 index 00000000000..55cdaef1527 --- /dev/null +++ b/homeassistant/components/tile/entity.py @@ -0,0 +1,26 @@ +"""Define a base Tile entity.""" + +from homeassistant.helpers.device_registry import DeviceInfo +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from .const import DOMAIN +from .coordinator import TileCoordinator + + +class TileEntity(CoordinatorEntity[TileCoordinator]): + """Define a base Tile entity.""" + + _attr_has_entity_name = True + + def __init__(self, coordinator: TileCoordinator) -> None: + """Initialize.""" + super().__init__(coordinator) + self._tile = coordinator.tile + self._attr_device_info = DeviceInfo( + identifiers={(DOMAIN, self._tile.uuid)}, name=self._tile.name + ) + + @property + def available(self) -> bool: + """Return if entity is available.""" + return super().available and not self._tile.dead