From 21b9e92e26075326973ea058eacfb99326eeb400 Mon Sep 17 00:00:00 2001 From: Brett Date: Tue, 13 Feb 2024 01:37:31 +0000 Subject: [PATCH 1/2] HVAC_MODE support for set_temperature --- homeassistant/components/tessie/climate.py | 10 +++++++--- tests/components/tessie/test_climate.py | 12 ++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/tessie/climate.py b/homeassistant/components/tessie/climate.py index 8eb69d619ffd2..6ea6fc00157d8 100644 --- a/homeassistant/components/tessie/climate.py +++ b/homeassistant/components/tessie/climate.py @@ -15,6 +15,7 @@ ClimateEntityFeature, HVACMode, ) +from homeassistant.components.climate.const import ATTR_HVAC_MODE from homeassistant.config_entries import ConfigEntry from homeassistant.const import ATTR_TEMPERATURE, PRECISION_HALVES, UnitOfTemperature from homeassistant.core import HomeAssistant @@ -112,9 +113,12 @@ async def async_turn_off(self) -> None: async def async_set_temperature(self, **kwargs: Any) -> None: """Set the climate temperature.""" - temp = kwargs[ATTR_TEMPERATURE] - await self.run(set_temperature, temperature=temp) - self.set(("climate_state_driver_temp_setting", temp)) + if mode := kwargs.get(ATTR_HVAC_MODE): + await self.async_set_hvac_mode(mode) + + if temp := kwargs.get(ATTR_TEMPERATURE): + await self.run(set_temperature, temperature=temp) + self.set(("climate_state_driver_temp_setting", temp)) async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None: """Set the climate mode and state.""" diff --git a/tests/components/tessie/test_climate.py b/tests/components/tessie/test_climate.py index cbb6b7ad09e6f..6d1c8c220d150 100644 --- a/tests/components/tessie/test_climate.py +++ b/tests/components/tessie/test_climate.py @@ -54,14 +54,22 @@ async def test_climate( with patch( "homeassistant.components.tessie.climate.set_temperature", return_value=TEST_RESPONSE, - ) as mock_set: + ) as mock_set, patch( + "homeassistant.components.tessie.climate.start_climate_preconditioning", + return_value=TEST_RESPONSE, + ) as mock_set2: await hass.services.async_call( CLIMATE_DOMAIN, SERVICE_SET_TEMPERATURE, - {ATTR_ENTITY_ID: [entity_id], ATTR_TEMPERATURE: 20}, + { + ATTR_ENTITY_ID: [entity_id], + ATTR_HVAC_MODE: HVACMode.HEAT_COOL, + ATTR_TEMPERATURE: 20, + }, blocking=True, ) mock_set.assert_called_once() + mock_set2.assert_called_once() state = hass.states.get(entity_id) assert state.attributes[ATTR_TEMPERATURE] == 20 From 623d22ec2b2841b7ce479584353f92f3d3bcdafc Mon Sep 17 00:00:00 2001 From: Brett Date: Tue, 13 Feb 2024 01:49:47 +0000 Subject: [PATCH 2/2] Fix import --- homeassistant/components/tessie/climate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/tessie/climate.py b/homeassistant/components/tessie/climate.py index 6ea6fc00157d8..c856e8211cc46 100644 --- a/homeassistant/components/tessie/climate.py +++ b/homeassistant/components/tessie/climate.py @@ -11,11 +11,11 @@ ) from homeassistant.components.climate import ( + ATTR_HVAC_MODE, ClimateEntity, ClimateEntityFeature, HVACMode, ) -from homeassistant.components.climate.const import ATTR_HVAC_MODE from homeassistant.config_entries import ConfigEntry from homeassistant.const import ATTR_TEMPERATURE, PRECISION_HALVES, UnitOfTemperature from homeassistant.core import HomeAssistant