diff --git a/homeassistant/components/zha/sensor.py b/homeassistant/components/zha/sensor.py index c87ae9d72fb3..9de4bcf75f5d 100644 --- a/homeassistant/components/zha/sensor.py +++ b/homeassistant/components/zha/sensor.py @@ -483,8 +483,12 @@ class Illuminance(Sensor): _attr_state_class: SensorStateClass = SensorStateClass.MEASUREMENT _attr_native_unit_of_measurement = LIGHT_LUX - def formatter(self, value: int) -> int: + def formatter(self, value: int) -> int | None: """Convert illumination data.""" + if value == 0: + return 0 + if value == 0xFFFF: + return None return round(pow(10, ((value - 1) / 10000))) diff --git a/tests/components/zha/test_sensor.py b/tests/components/zha/test_sensor.py index 4103897a0009..7d67e41512a0 100644 --- a/tests/components/zha/test_sensor.py +++ b/tests/components/zha/test_sensor.py @@ -136,6 +136,12 @@ async def async_test_illuminance(hass, cluster, entity_id): await send_attributes_report(hass, cluster, {1: 1, 0: 10, 2: 20}) assert_state(hass, entity_id, "1", LIGHT_LUX) + await send_attributes_report(hass, cluster, {1: 0, 0: 0, 2: 20}) + assert_state(hass, entity_id, "0", LIGHT_LUX) + + await send_attributes_report(hass, cluster, {1: 0, 0: 0xFFFF, 2: 20}) + assert_state(hass, entity_id, "unknown", LIGHT_LUX) + async def async_test_metering(hass, cluster, entity_id): """Test Smart Energy metering sensor."""