Auto select thermostat preset when selecting temperature (#134146)

This commit is contained in:
Fábio Domingues 2025-01-23 08:41:29 +00:00 committed by GitHub
parent 40348890da
commit 8172afd9f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 0 deletions

View File

@ -268,6 +268,7 @@ class GenericThermostat(ClimateEntity, RestoreEntity):
else:
self._attr_preset_modes = [PRESET_NONE]
self._presets = presets
self._presets_inv = {v: k for k, v in presets.items()}
async def async_added_to_hass(self) -> None:
"""Run when entity about to be added."""
@ -421,6 +422,7 @@ class GenericThermostat(ClimateEntity, RestoreEntity):
"""Set new target temperature."""
if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None:
return
self._attr_preset_mode = self._presets_inv.get(temperature, PRESET_NONE)
self._target_temp = temperature
await self._async_control_heating(force=True)
self.async_write_ha_state()

View File

@ -319,6 +319,20 @@ async def test_set_target_temp(hass: HomeAssistant) -> None:
assert state.attributes.get("temperature") == 30.0
@pytest.mark.usefixtures("setup_comp_2")
async def test_set_target_temp_change_preset(hass: HomeAssistant) -> None:
"""Test the setting of the target temperature.
Verify that preset is changed.
"""
await common.async_set_temperature(hass, 30)
state = hass.states.get(ENTITY)
assert state.attributes.get("preset_mode") == PRESET_NONE
await common.async_set_temperature(hass, 20)
state = hass.states.get(ENTITY)
assert state.attributes.get("preset_mode") == PRESET_COMFORT
@pytest.mark.parametrize(
("preset", "temp"),
[