From 37723792c7bf6a82cb06315c792672d128b34bea Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 29 Apr 2023 17:47:04 +0200 Subject: [PATCH] Fix unknown/unavailable source sensor in Filter entities (#92241) --- homeassistant/components/filter/sensor.py | 11 +++++++++-- tests/components/filter/test_sensor.py | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/filter/sensor.py b/homeassistant/components/filter/sensor.py index 7b2321e172e..9b1e2250a28 100644 --- a/homeassistant/components/filter/sensor.py +++ b/homeassistant/components/filter/sensor.py @@ -236,11 +236,18 @@ class SensorFilter(SensorEntity): self.async_write_ha_state() return - if new_state.state in (STATE_UNKNOWN, STATE_UNAVAILABLE): - self._state = new_state.state + if new_state.state == STATE_UNKNOWN: + self._state = None self.async_write_ha_state() return + if new_state.state == STATE_UNAVAILABLE: + self._attr_available = False + self.async_write_ha_state() + return + + self._attr_available = True + temp_state = _State(new_state.last_updated, new_state.state) try: diff --git a/tests/components/filter/test_sensor.py b/tests/components/filter/test_sensor.py index 5ac03aea13d..26df432a270 100644 --- a/tests/components/filter/test_sensor.py +++ b/tests/components/filter/test_sensor.py @@ -308,6 +308,12 @@ async def test_invalid_state(recorder_mock: Recorder, hass: HomeAssistant) -> No assert await async_setup_component(hass, "sensor", config) await hass.async_block_till_done() + hass.states.async_set("sensor.test_monitored", "unknown") + await hass.async_block_till_done() + + state = hass.states.get("sensor.test") + assert state.state == STATE_UNKNOWN + hass.states.async_set("sensor.test_monitored", STATE_UNAVAILABLE) await hass.async_block_till_done()