mirror of
https://github.com/home-assistant/core.git
synced 2025-11-09 10:59:40 +00:00
Merge coordinators in Airgradient (#124714)
This commit is contained in:
committed by
GitHub
parent
9da5dd0090
commit
30aa3a26ad
@@ -32,7 +32,7 @@ from homeassistant.helpers.typing import StateType
|
||||
|
||||
from . import AirGradientConfigEntry
|
||||
from .const import PM_STANDARD, PM_STANDARD_REVERSE
|
||||
from .coordinator import AirGradientConfigCoordinator, AirGradientMeasurementCoordinator
|
||||
from .coordinator import AirGradientCoordinator
|
||||
from .entity import AirGradientEntity
|
||||
|
||||
|
||||
@@ -218,7 +218,7 @@ async def async_setup_entry(
|
||||
) -> None:
|
||||
"""Set up AirGradient sensor entities based on a config entry."""
|
||||
|
||||
coordinator = entry.runtime_data.measurement
|
||||
coordinator = entry.runtime_data
|
||||
listener: Callable[[], None] | None = None
|
||||
not_setup: set[AirGradientMeasurementSensorEntityDescription] = set(
|
||||
MEASUREMENT_SENSOR_TYPES
|
||||
@@ -232,7 +232,7 @@ async def async_setup_entry(
|
||||
not_setup = set()
|
||||
sensors = []
|
||||
for description in sensor_descriptions:
|
||||
if description.value_fn(coordinator.data) is None:
|
||||
if description.value_fn(coordinator.data.measures) is None:
|
||||
not_setup.add(description)
|
||||
else:
|
||||
sensors.append(AirGradientMeasurementSensor(coordinator, description))
|
||||
@@ -248,64 +248,65 @@ async def async_setup_entry(
|
||||
add_entities()
|
||||
|
||||
entities = [
|
||||
AirGradientConfigSensor(entry.runtime_data.config, description)
|
||||
AirGradientConfigSensor(coordinator, description)
|
||||
for description in CONFIG_SENSOR_TYPES
|
||||
]
|
||||
if "L" in coordinator.data.model:
|
||||
if "L" in coordinator.data.measures.model:
|
||||
entities.extend(
|
||||
AirGradientConfigSensor(entry.runtime_data.config, description)
|
||||
AirGradientConfigSensor(coordinator, description)
|
||||
for description in CONFIG_LED_BAR_SENSOR_TYPES
|
||||
)
|
||||
if "I" in coordinator.data.model:
|
||||
if "I" in coordinator.data.measures.model:
|
||||
entities.extend(
|
||||
AirGradientConfigSensor(entry.runtime_data.config, description)
|
||||
AirGradientConfigSensor(coordinator, description)
|
||||
for description in CONFIG_DISPLAY_SENSOR_TYPES
|
||||
)
|
||||
async_add_entities(entities)
|
||||
|
||||
|
||||
class AirGradientMeasurementSensor(AirGradientEntity, SensorEntity):
|
||||
class AirGradientSensor(AirGradientEntity, SensorEntity):
|
||||
"""Defines an AirGradient sensor."""
|
||||
|
||||
entity_description: AirGradientMeasurementSensorEntityDescription
|
||||
coordinator: AirGradientMeasurementCoordinator
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
coordinator: AirGradientMeasurementCoordinator,
|
||||
description: AirGradientMeasurementSensorEntityDescription,
|
||||
coordinator: AirGradientCoordinator,
|
||||
description: SensorEntityDescription,
|
||||
) -> None:
|
||||
"""Initialize airgradient sensor."""
|
||||
super().__init__(coordinator)
|
||||
self.entity_description = description
|
||||
self._attr_unique_id = f"{coordinator.serial_number}-{description.key}"
|
||||
|
||||
|
||||
class AirGradientMeasurementSensor(AirGradientSensor):
|
||||
"""Defines an AirGradient sensor."""
|
||||
|
||||
entity_description: AirGradientMeasurementSensorEntityDescription
|
||||
|
||||
@property
|
||||
def native_value(self) -> StateType:
|
||||
"""Return the state of the sensor."""
|
||||
return self.entity_description.value_fn(self.coordinator.data)
|
||||
return self.entity_description.value_fn(self.coordinator.data.measures)
|
||||
|
||||
|
||||
class AirGradientConfigSensor(AirGradientEntity, SensorEntity):
|
||||
class AirGradientConfigSensor(AirGradientSensor):
|
||||
"""Defines an AirGradient sensor."""
|
||||
|
||||
entity_description: AirGradientConfigSensorEntityDescription
|
||||
coordinator: AirGradientConfigCoordinator
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
coordinator: AirGradientConfigCoordinator,
|
||||
coordinator: AirGradientCoordinator,
|
||||
description: AirGradientConfigSensorEntityDescription,
|
||||
) -> None:
|
||||
"""Initialize airgradient sensor."""
|
||||
super().__init__(coordinator)
|
||||
self.entity_description = description
|
||||
self._attr_unique_id = f"{coordinator.serial_number}-{description.key}"
|
||||
super().__init__(coordinator, description)
|
||||
self._attr_entity_registry_enabled_default = (
|
||||
coordinator.data.configuration_control is not ConfigurationControl.LOCAL
|
||||
coordinator.data.config.configuration_control
|
||||
is not ConfigurationControl.LOCAL
|
||||
)
|
||||
|
||||
@property
|
||||
def native_value(self) -> StateType:
|
||||
"""Return the state of the sensor."""
|
||||
return self.entity_description.value_fn(self.coordinator.data)
|
||||
return self.entity_description.value_fn(self.coordinator.data.config)
|
||||
|
||||
Reference in New Issue
Block a user