diff --git a/homeassistant/components/hue/v2/sensor.py b/homeassistant/components/hue/v2/sensor.py index 6f408c2959b2..41bce23e81a7 100644 --- a/homeassistant/components/hue/v2/sensor.py +++ b/homeassistant/components/hue/v2/sensor.py @@ -149,8 +149,10 @@ class HueTemperatureSensor(HueSensorBase): @property @override - def native_value(self) -> float: + def native_value(self) -> float | None: """Return the value reported by the sensor.""" + if self.resource.temperature.value is None: + return None return round(self.resource.temperature.value, 1) diff --git a/tests/components/hue/test_sensor_v2.py b/tests/components/hue/test_sensor_v2.py index ed86444933cc..028b4b2682ab 100644 --- a/tests/components/hue/test_sensor_v2.py +++ b/tests/components/hue/test_sensor_v2.py @@ -187,6 +187,24 @@ async def test_grouped_light_level_sensor( ) # Light level 30000 translates to 10^((30000-1)/10000) ≈ 999 lux +async def test_temperature_sensor_none_value( + hass: HomeAssistant, mock_bridge_v2: Mock, v2_resources_test_data: JsonArrayType +) -> None: + """Test that temperature sensor handles None value without crashing.""" + for resource in v2_resources_test_data: + if resource.get("id") == "66466e14-d2fa-4b96-b2a0-e10de9cd8b8b": + resource["temperature"]["temperature"] = None + resource["temperature"]["temperature_valid"] = False + break + + await mock_bridge_v2.api.load_test_data(v2_resources_test_data) + await setup_platform(hass, mock_bridge_v2, Platform.SENSOR) + + sensor = hass.states.get("sensor.hue_motion_sensor_temperature") + assert sensor is not None + assert sensor.state == STATE_UNKNOWN + + async def test_light_level_sensor_none_value( hass: HomeAssistant, mock_bridge_v2: Mock, v2_resources_test_data: JsonArrayType ) -> None: