From a0357767ef0b1349064ee9564e64554af5519528 Mon Sep 17 00:00:00 2001 From: Robert Svensson <Kane610@users.noreply.github.com> Date: Thu, 29 Sep 2022 09:33:31 +0200 Subject: [PATCH] Fix late comments to deCONZ sensors from #79137 (#79272) * Fix late comments from #79137 * Fix comment --- homeassistant/components/deconz/sensor.py | 67 +++++++++++------------ 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/deconz/sensor.py b/homeassistant/components/deconz/sensor.py index 1b24098f717..90e19aee11d 100644 --- a/homeassistant/components/deconz/sensor.py +++ b/homeassistant/components/deconz/sensor.py @@ -90,18 +90,15 @@ T = TypeVar( class DeconzSensorDescriptionMixin(Generic[T]): """Required values when describing secondary sensor attributes.""" - isinstance_fn: Callable[[T], bool] update_key: str value_fn: Callable[[T], datetime | StateType] @dataclass -class DeconzSensorDescription( - SensorEntityDescription, DeconzSensorDescriptionMixin[T], Generic[T] -): +class DeconzSensorDescription(SensorEntityDescription, DeconzSensorDescriptionMixin[T]): """Class describing deCONZ binary sensor entities.""" - common: bool = False + instance_check: type[T] | None = None name_suffix: str = "" old_unique_id_suffix: str = "" @@ -109,16 +106,16 @@ class DeconzSensorDescription( ENTITY_DESCRIPTIONS: tuple[DeconzSensorDescription, ...] = ( DeconzSensorDescription[AirQuality]( key="air_quality", - isinstance_fn=lambda device: isinstance(device, AirQuality), - value_fn=lambda device: device.air_quality, update_key="airquality", + value_fn=lambda device: device.air_quality, + instance_check=AirQuality, state_class=SensorStateClass.MEASUREMENT, ), DeconzSensorDescription[AirQuality]( key="air_quality_ppb", - isinstance_fn=lambda device: isinstance(device, AirQuality), - value_fn=lambda device: device.air_quality_ppb, update_key="airqualityppb", + value_fn=lambda device: device.air_quality_ppb, + instance_check=AirQuality, name_suffix="PPB", old_unique_id_suffix="ppb", device_class=SensorDeviceClass.AQI, @@ -127,86 +124,84 @@ ENTITY_DESCRIPTIONS: tuple[DeconzSensorDescription, ...] = ( ), DeconzSensorDescription[Consumption]( key="consumption", - isinstance_fn=lambda device: isinstance(device, Consumption), - value_fn=lambda device: device.scaled_consumption, update_key="consumption", + value_fn=lambda device: device.scaled_consumption, + instance_check=Consumption, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, ), DeconzSensorDescription[Daylight]( key="daylight_status", - isinstance_fn=lambda device: isinstance(device, Daylight), - value_fn=lambda device: DAYLIGHT_STATUS[device.daylight_status], update_key="status", + value_fn=lambda device: DAYLIGHT_STATUS[device.daylight_status], + instance_check=Daylight, icon="mdi:white-balance-sunny", entity_registry_enabled_default=False, ), DeconzSensorDescription[GenericStatus]( key="status", - isinstance_fn=lambda device: isinstance(device, GenericStatus), - value_fn=lambda device: device.status, update_key="status", + value_fn=lambda device: device.status, + instance_check=GenericStatus, ), DeconzSensorDescription[Humidity]( key="humidity", - isinstance_fn=lambda device: isinstance(device, Humidity), - value_fn=lambda device: device.scaled_humidity, update_key="humidity", + value_fn=lambda device: device.scaled_humidity, + instance_check=Humidity, device_class=SensorDeviceClass.HUMIDITY, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=PERCENTAGE, ), DeconzSensorDescription[LightLevel]( key="light_level", - isinstance_fn=lambda device: isinstance(device, LightLevel), - value_fn=lambda device: device.scaled_light_level, update_key="lightlevel", + value_fn=lambda device: device.scaled_light_level, + instance_check=LightLevel, device_class=SensorDeviceClass.ILLUMINANCE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=LIGHT_LUX, ), DeconzSensorDescription[Power]( key="power", - isinstance_fn=lambda device: isinstance(device, Power), - value_fn=lambda device: device.power, update_key="power", + value_fn=lambda device: device.power, + instance_check=Power, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=POWER_WATT, ), DeconzSensorDescription[Pressure]( key="pressure", - isinstance_fn=lambda device: isinstance(device, Pressure), - value_fn=lambda device: device.pressure, update_key="pressure", + value_fn=lambda device: device.pressure, + instance_check=Pressure, device_class=SensorDeviceClass.PRESSURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=PRESSURE_HPA, ), DeconzSensorDescription[Temperature]( key="temperature", - isinstance_fn=lambda device: isinstance(device, Temperature), - value_fn=lambda device: device.scaled_temperature, update_key="temperature", + value_fn=lambda device: device.scaled_temperature, + instance_check=Temperature, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=TEMP_CELSIUS, ), DeconzSensorDescription[Time]( key="last_set", - isinstance_fn=lambda device: isinstance(device, Time), - value_fn=lambda device: dt_util.parse_datetime(device.last_set), update_key="lastset", + value_fn=lambda device: dt_util.parse_datetime(device.last_set), + instance_check=Time, device_class=SensorDeviceClass.TIMESTAMP, state_class=SensorStateClass.TOTAL_INCREASING, ), DeconzSensorDescription[SensorResources]( key="battery", - isinstance_fn=lambda device: isinstance(device, PydeconzSensorBase), - value_fn=lambda device: device.battery, update_key="battery", - common=True, + value_fn=lambda device: device.battery, name_suffix="Battery", old_unique_id_suffix="battery", device_class=SensorDeviceClass.BATTERY, @@ -216,10 +211,8 @@ ENTITY_DESCRIPTIONS: tuple[DeconzSensorDescription, ...] = ( ), DeconzSensorDescription[SensorResources]( key="internal_temperature", - isinstance_fn=lambda device: isinstance(device, PydeconzSensorBase), - value_fn=lambda device: device.internal_temperature, update_key="temperature", - common=True, + value_fn=lambda device: device.internal_temperature, name_suffix="Temperature", old_unique_id_suffix="temperature", device_class=SensorDeviceClass.TEMPERATURE, @@ -262,7 +255,7 @@ async def async_setup_entry( known_device_entities: dict[str, set[str]] = { description.key: set() for description in ENTITY_DESCRIPTIONS - if description.common + if description.instance_check is None } @callback @@ -272,14 +265,16 @@ async def async_setup_entry( entities: list[DeconzSensor] = [] for description in ENTITY_DESCRIPTIONS: - if not description.isinstance_fn(sensor): + if description.instance_check and not isinstance( + sensor, description.instance_check + ): continue no_sensor_data = False if description.value_fn(sensor) is None: no_sensor_data = True - if description.common: + if description.instance_check is None: if ( sensor.type.startswith("CLIP") or (no_sensor_data and description.key != "battery") -- GitLab