Make sure sensor state value is not None prior to trying to used the scaled value (#71189)
This commit is contained in:
parent
5db014666c
commit
37b59dfcc0
2 changed files with 34 additions and 4 deletions
|
@ -112,7 +112,7 @@ ENTITY_DESCRIPTIONS = {
|
||||||
DeconzSensorDescription(
|
DeconzSensorDescription(
|
||||||
key="consumption",
|
key="consumption",
|
||||||
value_fn=lambda device: device.scaled_consumption
|
value_fn=lambda device: device.scaled_consumption
|
||||||
if isinstance(device, Consumption)
|
if isinstance(device, Consumption) and isinstance(device.consumption, int)
|
||||||
else None,
|
else None,
|
||||||
update_key="consumption",
|
update_key="consumption",
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
@ -144,7 +144,7 @@ ENTITY_DESCRIPTIONS = {
|
||||||
DeconzSensorDescription(
|
DeconzSensorDescription(
|
||||||
key="humidity",
|
key="humidity",
|
||||||
value_fn=lambda device: device.scaled_humidity
|
value_fn=lambda device: device.scaled_humidity
|
||||||
if isinstance(device, Humidity)
|
if isinstance(device, Humidity) and isinstance(device.humidity, int)
|
||||||
else None,
|
else None,
|
||||||
update_key="humidity",
|
update_key="humidity",
|
||||||
device_class=SensorDeviceClass.HUMIDITY,
|
device_class=SensorDeviceClass.HUMIDITY,
|
||||||
|
@ -156,7 +156,7 @@ ENTITY_DESCRIPTIONS = {
|
||||||
DeconzSensorDescription(
|
DeconzSensorDescription(
|
||||||
key="light_level",
|
key="light_level",
|
||||||
value_fn=lambda device: device.scaled_light_level
|
value_fn=lambda device: device.scaled_light_level
|
||||||
if isinstance(device, LightLevel)
|
if isinstance(device, LightLevel) and isinstance(device.light_level, int)
|
||||||
else None,
|
else None,
|
||||||
update_key="lightlevel",
|
update_key="lightlevel",
|
||||||
device_class=SensorDeviceClass.ILLUMINANCE,
|
device_class=SensorDeviceClass.ILLUMINANCE,
|
||||||
|
@ -189,7 +189,7 @@ ENTITY_DESCRIPTIONS = {
|
||||||
DeconzSensorDescription(
|
DeconzSensorDescription(
|
||||||
key="temperature",
|
key="temperature",
|
||||||
value_fn=lambda device: device.scaled_temperature
|
value_fn=lambda device: device.scaled_temperature
|
||||||
if isinstance(device, Temperature)
|
if isinstance(device, Temperature) and isinstance(device.temperature, int)
|
||||||
else None,
|
else None,
|
||||||
update_key="temperature",
|
update_key="temperature",
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
device_class=SensorDeviceClass.TEMPERATURE,
|
||||||
|
|
|
@ -785,6 +785,36 @@ async def test_add_new_sensor(hass, aioclient_mock, mock_deconz_websocket):
|
||||||
assert hass.states.get("sensor.light_level_sensor").state == "999.8"
|
assert hass.states.get("sensor.light_level_sensor").state == "999.8"
|
||||||
|
|
||||||
|
|
||||||
|
BAD_SENSOR_DATA = [
|
||||||
|
("ZHAConsumption", "consumption"),
|
||||||
|
("ZHAHumidity", "humidity"),
|
||||||
|
("ZHALightLevel", "lightlevel"),
|
||||||
|
("ZHATemperature", "temperature"),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("sensor_type, sensor_property", BAD_SENSOR_DATA)
|
||||||
|
async def test_dont_add_sensor_if_state_is_none(
|
||||||
|
hass, aioclient_mock, sensor_type, sensor_property
|
||||||
|
):
|
||||||
|
"""Test sensor with scaled data is not created if state is None."""
|
||||||
|
data = {
|
||||||
|
"sensors": {
|
||||||
|
"1": {
|
||||||
|
"name": "Sensor 1",
|
||||||
|
"type": sensor_type,
|
||||||
|
"state": {sensor_property: None},
|
||||||
|
"config": {},
|
||||||
|
"uniqueid": "00:00:00:00:00:00:00:00-00",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
with patch.dict(DECONZ_WEB_REQUEST, data):
|
||||||
|
await setup_deconz_integration(hass, aioclient_mock)
|
||||||
|
|
||||||
|
assert len(hass.states.async_all()) == 0
|
||||||
|
|
||||||
|
|
||||||
async def test_add_battery_later(hass, aioclient_mock, mock_deconz_websocket):
|
async def test_add_battery_later(hass, aioclient_mock, mock_deconz_websocket):
|
||||||
"""Test that a sensor without an initial battery state creates a battery sensor once state exist."""
|
"""Test that a sensor without an initial battery state creates a battery sensor once state exist."""
|
||||||
data = {
|
data = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue