From b30a02dee62de056ad1b2b8f428787d77f0efa3c Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Thu, 9 May 2024 11:12:47 +0200 Subject: [PATCH] Add base entity for Airgradient (#117135) --- .../components/airgradient/entity.py | 24 +++++++++++++++++++ .../components/airgradient/sensor.py | 17 ++----------- 2 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 homeassistant/components/airgradient/entity.py diff --git a/homeassistant/components/airgradient/entity.py b/homeassistant/components/airgradient/entity.py new file mode 100644 index 00000000000..e663a75bd91 --- /dev/null +++ b/homeassistant/components/airgradient/entity.py @@ -0,0 +1,24 @@ +"""Base class for AirGradient entities.""" + +from homeassistant.helpers.device_registry import DeviceInfo +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from .const import DOMAIN +from .coordinator import AirGradientDataUpdateCoordinator + + +class AirGradientEntity(CoordinatorEntity[AirGradientDataUpdateCoordinator]): + """Defines a base AirGradient entity.""" + + _attr_has_entity_name = True + + def __init__(self, coordinator: AirGradientDataUpdateCoordinator) -> None: + """Initialize airgradient entity.""" + super().__init__(coordinator) + self._attr_device_info = DeviceInfo( + identifiers={(DOMAIN, coordinator.data.serial_number)}, + model=coordinator.data.model, + manufacturer="AirGradient", + serial_number=coordinator.data.serial_number, + sw_version=coordinator.data.firmware_version, + ) diff --git a/homeassistant/components/airgradient/sensor.py b/homeassistant/components/airgradient/sensor.py index 5347e55cacd..450655de67b 100644 --- a/homeassistant/components/airgradient/sensor.py +++ b/homeassistant/components/airgradient/sensor.py @@ -21,13 +21,12 @@ from homeassistant.const import ( UnitOfTemperature, ) from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType -from homeassistant.helpers.update_coordinator import CoordinatorEntity from . import AirGradientDataUpdateCoordinator from .const import DOMAIN +from .entity import AirGradientEntity @dataclass(frozen=True, kw_only=True) @@ -159,13 +158,9 @@ async def async_setup_entry( add_entities() -class AirGradientSensor( - CoordinatorEntity[AirGradientDataUpdateCoordinator], SensorEntity -): +class AirGradientSensor(AirGradientEntity, SensorEntity): """Defines an AirGradient sensor.""" - _attr_has_entity_name = True - entity_description: AirGradientSensorEntityDescription def __init__( @@ -175,16 +170,8 @@ class AirGradientSensor( ) -> None: """Initialize airgradient sensor.""" super().__init__(coordinator) - self.entity_description = description self._attr_unique_id = f"{coordinator.data.serial_number}-{description.key}" - self._attr_device_info = DeviceInfo( - identifiers={(DOMAIN, coordinator.data.serial_number)}, - model=coordinator.data.model, - manufacturer="AirGradient", - serial_number=coordinator.data.serial_number, - sw_version=coordinator.data.firmware_version, - ) @property def native_value(self) -> StateType: