Add base entity for Airgradient (#117135)

This commit is contained in:
Joost Lekkerkerker 2024-05-09 11:12:47 +02:00 committed by GitHub
parent 6485973d9b
commit b30a02dee6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 15 deletions

View File

@ -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,
)

View File

@ -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: