Fix late comments to deCONZ sensors from #79137 (#79272)

* Fix late comments from #79137

* Fix comment
This commit is contained in:
Robert Svensson 2022-09-29 09:33:31 +02:00 committed by GitHub
parent f9d36fe493
commit a0357767ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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