mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Auto select thermostat preset when selecting temperature (#134146)
This commit is contained in:
parent
40348890da
commit
8172afd9f4
@ -268,6 +268,7 @@ class GenericThermostat(ClimateEntity, RestoreEntity):
|
|||||||
else:
|
else:
|
||||||
self._attr_preset_modes = [PRESET_NONE]
|
self._attr_preset_modes = [PRESET_NONE]
|
||||||
self._presets = presets
|
self._presets = presets
|
||||||
|
self._presets_inv = {v: k for k, v in presets.items()}
|
||||||
|
|
||||||
async def async_added_to_hass(self) -> None:
|
async def async_added_to_hass(self) -> None:
|
||||||
"""Run when entity about to be added."""
|
"""Run when entity about to be added."""
|
||||||
@ -421,6 +422,7 @@ class GenericThermostat(ClimateEntity, RestoreEntity):
|
|||||||
"""Set new target temperature."""
|
"""Set new target temperature."""
|
||||||
if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None:
|
if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None:
|
||||||
return
|
return
|
||||||
|
self._attr_preset_mode = self._presets_inv.get(temperature, PRESET_NONE)
|
||||||
self._target_temp = temperature
|
self._target_temp = temperature
|
||||||
await self._async_control_heating(force=True)
|
await self._async_control_heating(force=True)
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
@ -319,6 +319,20 @@ async def test_set_target_temp(hass: HomeAssistant) -> None:
|
|||||||
assert state.attributes.get("temperature") == 30.0
|
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(
|
@pytest.mark.parametrize(
|
||||||
("preset", "temp"),
|
("preset", "temp"),
|
||||||
[
|
[
|
||||||
|
Loading…
x
Reference in New Issue
Block a user