diff --git a/homeassistant/components/tessie/climate.py b/homeassistant/components/tessie/climate.py index 8eb69d619ff..c856e8211cc 100644 --- a/homeassistant/components/tessie/climate.py +++ b/homeassistant/components/tessie/climate.py @@ -11,6 +11,7 @@ from tessie_api import ( ) from homeassistant.components.climate import ( + ATTR_HVAC_MODE, ClimateEntity, ClimateEntityFeature, HVACMode, @@ -112,9 +113,12 @@ class TessieClimateEntity(TessieEntity, ClimateEntity): 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 cbb6b7ad09e..6d1c8c220d1 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