mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
* Fix late comments from #79137 * Fix comment
This commit is contained in:
parent
f9d36fe493
commit
a0357767ef
@ -90,18 +90,15 @@ T = TypeVar(
|
|||||||
class DeconzSensorDescriptionMixin(Generic[T]):
|
class DeconzSensorDescriptionMixin(Generic[T]):
|
||||||
"""Required values when describing secondary sensor attributes."""
|
"""Required values when describing secondary sensor attributes."""
|
||||||
|
|
||||||
isinstance_fn: Callable[[T], bool]
|
|
||||||
update_key: str
|
update_key: str
|
||||||
value_fn: Callable[[T], datetime | StateType]
|
value_fn: Callable[[T], datetime | StateType]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class DeconzSensorDescription(
|
class DeconzSensorDescription(SensorEntityDescription, DeconzSensorDescriptionMixin[T]):
|
||||||
SensorEntityDescription, DeconzSensorDescriptionMixin[T], Generic[T]
|
|
||||||
):
|
|
||||||
"""Class describing deCONZ binary sensor entities."""
|
"""Class describing deCONZ binary sensor entities."""
|
||||||
|
|
||||||
common: bool = False
|
instance_check: type[T] | None = None
|
||||||
name_suffix: str = ""
|
name_suffix: str = ""
|
||||||
old_unique_id_suffix: str = ""
|
old_unique_id_suffix: str = ""
|
||||||
|
|
||||||
@ -109,16 +106,16 @@ class DeconzSensorDescription(
|
|||||||
ENTITY_DESCRIPTIONS: tuple[DeconzSensorDescription, ...] = (
|
ENTITY_DESCRIPTIONS: tuple[DeconzSensorDescription, ...] = (
|
||||||
DeconzSensorDescription[AirQuality](
|
DeconzSensorDescription[AirQuality](
|
||||||
key="air_quality",
|
key="air_quality",
|
||||||
isinstance_fn=lambda device: isinstance(device, AirQuality),
|
|
||||||
value_fn=lambda device: device.air_quality,
|
|
||||||
update_key="airquality",
|
update_key="airquality",
|
||||||
|
value_fn=lambda device: device.air_quality,
|
||||||
|
instance_check=AirQuality,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[AirQuality](
|
DeconzSensorDescription[AirQuality](
|
||||||
key="air_quality_ppb",
|
key="air_quality_ppb",
|
||||||
isinstance_fn=lambda device: isinstance(device, AirQuality),
|
|
||||||
value_fn=lambda device: device.air_quality_ppb,
|
|
||||||
update_key="airqualityppb",
|
update_key="airqualityppb",
|
||||||
|
value_fn=lambda device: device.air_quality_ppb,
|
||||||
|
instance_check=AirQuality,
|
||||||
name_suffix="PPB",
|
name_suffix="PPB",
|
||||||
old_unique_id_suffix="ppb",
|
old_unique_id_suffix="ppb",
|
||||||
device_class=SensorDeviceClass.AQI,
|
device_class=SensorDeviceClass.AQI,
|
||||||
@ -127,86 +124,84 @@ ENTITY_DESCRIPTIONS: tuple[DeconzSensorDescription, ...] = (
|
|||||||
),
|
),
|
||||||
DeconzSensorDescription[Consumption](
|
DeconzSensorDescription[Consumption](
|
||||||
key="consumption",
|
key="consumption",
|
||||||
isinstance_fn=lambda device: isinstance(device, Consumption),
|
|
||||||
value_fn=lambda device: device.scaled_consumption,
|
|
||||||
update_key="consumption",
|
update_key="consumption",
|
||||||
|
value_fn=lambda device: device.scaled_consumption,
|
||||||
|
instance_check=Consumption,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
native_unit_of_measurement=ENERGY_KILO_WATT_HOUR,
|
native_unit_of_measurement=ENERGY_KILO_WATT_HOUR,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[Daylight](
|
DeconzSensorDescription[Daylight](
|
||||||
key="daylight_status",
|
key="daylight_status",
|
||||||
isinstance_fn=lambda device: isinstance(device, Daylight),
|
|
||||||
value_fn=lambda device: DAYLIGHT_STATUS[device.daylight_status],
|
|
||||||
update_key="status",
|
update_key="status",
|
||||||
|
value_fn=lambda device: DAYLIGHT_STATUS[device.daylight_status],
|
||||||
|
instance_check=Daylight,
|
||||||
icon="mdi:white-balance-sunny",
|
icon="mdi:white-balance-sunny",
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[GenericStatus](
|
DeconzSensorDescription[GenericStatus](
|
||||||
key="status",
|
key="status",
|
||||||
isinstance_fn=lambda device: isinstance(device, GenericStatus),
|
|
||||||
value_fn=lambda device: device.status,
|
|
||||||
update_key="status",
|
update_key="status",
|
||||||
|
value_fn=lambda device: device.status,
|
||||||
|
instance_check=GenericStatus,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[Humidity](
|
DeconzSensorDescription[Humidity](
|
||||||
key="humidity",
|
key="humidity",
|
||||||
isinstance_fn=lambda device: isinstance(device, Humidity),
|
|
||||||
value_fn=lambda device: device.scaled_humidity,
|
|
||||||
update_key="humidity",
|
update_key="humidity",
|
||||||
|
value_fn=lambda device: device.scaled_humidity,
|
||||||
|
instance_check=Humidity,
|
||||||
device_class=SensorDeviceClass.HUMIDITY,
|
device_class=SensorDeviceClass.HUMIDITY,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
native_unit_of_measurement=PERCENTAGE,
|
native_unit_of_measurement=PERCENTAGE,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[LightLevel](
|
DeconzSensorDescription[LightLevel](
|
||||||
key="light_level",
|
key="light_level",
|
||||||
isinstance_fn=lambda device: isinstance(device, LightLevel),
|
|
||||||
value_fn=lambda device: device.scaled_light_level,
|
|
||||||
update_key="lightlevel",
|
update_key="lightlevel",
|
||||||
|
value_fn=lambda device: device.scaled_light_level,
|
||||||
|
instance_check=LightLevel,
|
||||||
device_class=SensorDeviceClass.ILLUMINANCE,
|
device_class=SensorDeviceClass.ILLUMINANCE,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
native_unit_of_measurement=LIGHT_LUX,
|
native_unit_of_measurement=LIGHT_LUX,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[Power](
|
DeconzSensorDescription[Power](
|
||||||
key="power",
|
key="power",
|
||||||
isinstance_fn=lambda device: isinstance(device, Power),
|
|
||||||
value_fn=lambda device: device.power,
|
|
||||||
update_key="power",
|
update_key="power",
|
||||||
|
value_fn=lambda device: device.power,
|
||||||
|
instance_check=Power,
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
native_unit_of_measurement=POWER_WATT,
|
native_unit_of_measurement=POWER_WATT,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[Pressure](
|
DeconzSensorDescription[Pressure](
|
||||||
key="pressure",
|
key="pressure",
|
||||||
isinstance_fn=lambda device: isinstance(device, Pressure),
|
|
||||||
value_fn=lambda device: device.pressure,
|
|
||||||
update_key="pressure",
|
update_key="pressure",
|
||||||
|
value_fn=lambda device: device.pressure,
|
||||||
|
instance_check=Pressure,
|
||||||
device_class=SensorDeviceClass.PRESSURE,
|
device_class=SensorDeviceClass.PRESSURE,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
native_unit_of_measurement=PRESSURE_HPA,
|
native_unit_of_measurement=PRESSURE_HPA,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[Temperature](
|
DeconzSensorDescription[Temperature](
|
||||||
key="temperature",
|
key="temperature",
|
||||||
isinstance_fn=lambda device: isinstance(device, Temperature),
|
|
||||||
value_fn=lambda device: device.scaled_temperature,
|
|
||||||
update_key="temperature",
|
update_key="temperature",
|
||||||
|
value_fn=lambda device: device.scaled_temperature,
|
||||||
|
instance_check=Temperature,
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
device_class=SensorDeviceClass.TEMPERATURE,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
native_unit_of_measurement=TEMP_CELSIUS,
|
native_unit_of_measurement=TEMP_CELSIUS,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[Time](
|
DeconzSensorDescription[Time](
|
||||||
key="last_set",
|
key="last_set",
|
||||||
isinstance_fn=lambda device: isinstance(device, Time),
|
|
||||||
value_fn=lambda device: dt_util.parse_datetime(device.last_set),
|
|
||||||
update_key="lastset",
|
update_key="lastset",
|
||||||
|
value_fn=lambda device: dt_util.parse_datetime(device.last_set),
|
||||||
|
instance_check=Time,
|
||||||
device_class=SensorDeviceClass.TIMESTAMP,
|
device_class=SensorDeviceClass.TIMESTAMP,
|
||||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
DeconzSensorDescription[SensorResources](
|
DeconzSensorDescription[SensorResources](
|
||||||
key="battery",
|
key="battery",
|
||||||
isinstance_fn=lambda device: isinstance(device, PydeconzSensorBase),
|
|
||||||
value_fn=lambda device: device.battery,
|
|
||||||
update_key="battery",
|
update_key="battery",
|
||||||
common=True,
|
value_fn=lambda device: device.battery,
|
||||||
name_suffix="Battery",
|
name_suffix="Battery",
|
||||||
old_unique_id_suffix="battery",
|
old_unique_id_suffix="battery",
|
||||||
device_class=SensorDeviceClass.BATTERY,
|
device_class=SensorDeviceClass.BATTERY,
|
||||||
@ -216,10 +211,8 @@ ENTITY_DESCRIPTIONS: tuple[DeconzSensorDescription, ...] = (
|
|||||||
),
|
),
|
||||||
DeconzSensorDescription[SensorResources](
|
DeconzSensorDescription[SensorResources](
|
||||||
key="internal_temperature",
|
key="internal_temperature",
|
||||||
isinstance_fn=lambda device: isinstance(device, PydeconzSensorBase),
|
|
||||||
value_fn=lambda device: device.internal_temperature,
|
|
||||||
update_key="temperature",
|
update_key="temperature",
|
||||||
common=True,
|
value_fn=lambda device: device.internal_temperature,
|
||||||
name_suffix="Temperature",
|
name_suffix="Temperature",
|
||||||
old_unique_id_suffix="temperature",
|
old_unique_id_suffix="temperature",
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
device_class=SensorDeviceClass.TEMPERATURE,
|
||||||
@ -262,7 +255,7 @@ async def async_setup_entry(
|
|||||||
known_device_entities: dict[str, set[str]] = {
|
known_device_entities: dict[str, set[str]] = {
|
||||||
description.key: set()
|
description.key: set()
|
||||||
for description in ENTITY_DESCRIPTIONS
|
for description in ENTITY_DESCRIPTIONS
|
||||||
if description.common
|
if description.instance_check is None
|
||||||
}
|
}
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
@ -272,14 +265,16 @@ async def async_setup_entry(
|
|||||||
entities: list[DeconzSensor] = []
|
entities: list[DeconzSensor] = []
|
||||||
|
|
||||||
for description in ENTITY_DESCRIPTIONS:
|
for description in ENTITY_DESCRIPTIONS:
|
||||||
if not description.isinstance_fn(sensor):
|
if description.instance_check and not isinstance(
|
||||||
|
sensor, description.instance_check
|
||||||
|
):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
no_sensor_data = False
|
no_sensor_data = False
|
||||||
if description.value_fn(sensor) is None:
|
if description.value_fn(sensor) is None:
|
||||||
no_sensor_data = True
|
no_sensor_data = True
|
||||||
|
|
||||||
if description.common:
|
if description.instance_check is None:
|
||||||
if (
|
if (
|
||||||
sensor.type.startswith("CLIP")
|
sensor.type.startswith("CLIP")
|
||||||
or (no_sensor_data and description.key != "battery")
|
or (no_sensor_data and description.key != "battery")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user