From 4ad5ce6d5298ac7f3fa4fb3e40d03249d038434b Mon Sep 17 00:00:00 2001 From: jbouwh Date: Wed, 1 Jan 2025 13:17:57 +0000 Subject: [PATCH] Set climate state to off if `is_on` is `False` --- homeassistant/components/climate/__init__.py | 2 ++ tests/components/climate/test_init.py | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index 7e05a973d1c..4a5018f3b31 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -354,6 +354,8 @@ class ClimateEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_): hvac_mode = self.hvac_mode if hvac_mode is None: return None + if hasattr(self, "_attr_is_on") and self._attr_is_on is False: + return HVACMode.OFF.value # Support hvac_mode as string for custom integration backwards compatibility if not isinstance(hvac_mode, HVACMode): return HVACMode(hvac_mode).value # type: ignore[unreachable] diff --git a/tests/components/climate/test_init.py b/tests/components/climate/test_init.py index 218069e4f21..ec555f7153b 100644 --- a/tests/components/climate/test_init.py +++ b/tests/components/climate/test_init.py @@ -490,6 +490,13 @@ async def test_turn_on_off_toggle(hass: HomeAssistant) -> None: climate._attr_hvac_mode = None assert climate.is_on is None + # If _attr_is_on is set to False the state should be always off + climate._attr_hvac_action = HVACAction.IDLE + climate._attr_hvac_mode = HVACMode.AUTO + climate._attr_is_on = False + assert climate.is_on is False + assert climate.state == HVACMode.OFF + async def test_sync_toggle(hass: HomeAssistant) -> None: """Test if async toggle calls sync toggle."""