diff --git a/homeassistant/components/zha/sensor.py b/homeassistant/components/zha/sensor.py index ea5d09dd6f4..8bf8ca96d77 100644 --- a/homeassistant/components/zha/sensor.py +++ b/homeassistant/components/zha/sensor.py @@ -481,8 +481,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 d9a61b12357..0d3035f9717 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."""