Fix tradfri sensor typing

This commit is contained in:
Martin Hjelmare 2022-06-23 14:25:11 +02:00
parent ab903f7fea
commit 7b43714adf

View File

@ -4,7 +4,7 @@ from __future__ import annotations
from collections.abc import Callable from collections.abc import Callable
from dataclasses import dataclass from dataclasses import dataclass
from typing import Any, cast from typing import Any
from pytradfri.api.aiocoap_api import APIRequestProtocol from pytradfri.api.aiocoap_api import APIRequestProtocol
from pytradfri.device import Device from pytradfri.device import Device
@ -43,22 +43,20 @@ def _get_air_quality(device: Device) -> int | None:
"""Fetch the air quality value.""" """Fetch the air quality value."""
assert device.air_purifier_control is not None assert device.air_purifier_control is not None
if ( if (
device.air_purifier_control.air_purifiers[0].air_quality == 65535 device_control := device.air_purifier_control
): # The sensor returns 65535 if the fan is turned off ) is None or device_control.air_purifiers[
0
].air_quality == 65535: # The sensor returns 65535 if the fan is turned off
return None return None
return cast(int, device.air_purifier_control.air_purifiers[0].air_quality) return device_control.air_purifiers[0].air_quality
def _get_filter_time_left(device: Device) -> int: def _get_filter_time_left(device: Device) -> int:
"""Fetch the filter's remaining lifetime (in hours).""" """Fetch the filter's remaining lifetime (in hours)."""
assert device.air_purifier_control is not None device_control = device.air_purifier_control
return round( assert device_control # air_purifier_control is ensured when creating the entity
cast( return round(device_control.air_purifiers[0].filter_lifetime_remaining / 60)
int, device.air_purifier_control.air_purifiers[0].filter_lifetime_remaining
)
/ 60
)
SENSOR_DESCRIPTIONS_BATTERY: tuple[TradfriSensorEntityDescription, ...] = ( SENSOR_DESCRIPTIONS_BATTERY: tuple[TradfriSensorEntityDescription, ...] = (
@ -67,7 +65,7 @@ SENSOR_DESCRIPTIONS_BATTERY: tuple[TradfriSensorEntityDescription, ...] = (
device_class=SensorDeviceClass.BATTERY, device_class=SensorDeviceClass.BATTERY,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
native_unit_of_measurement=PERCENTAGE, native_unit_of_measurement=PERCENTAGE,
value=lambda device: cast(int, device.device_info.battery_level), value=lambda device: device.device_info.battery_level,
), ),
) )