291 files
This commit is contained in:
@@ -899,9 +899,16 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
# transform _attr_preset_modes into _vtherm_preset_modes
|
||||
self._vtherm_preset_modes = [VThermPreset(mode) for mode in self._attr_preset_modes]
|
||||
|
||||
# Re-applicate the last preset if any to take change into account
|
||||
if self._state_manager.current_state.preset and self._state_manager.current_state.preset != VThermPreset.NONE:
|
||||
await self.async_set_preset_mode_internal(self._state_manager.current_state.preset)
|
||||
# Re-apply the requested visible preset, if it is still configured.
|
||||
# The current preset can be a temporary hidden override (safety/power)
|
||||
# and must never become the requested user preset during initialization.
|
||||
requested_preset = self._state_manager.requested_state.preset
|
||||
if (
|
||||
requested_preset != VThermPreset.NONE
|
||||
and requested_preset in self._vtherm_preset_modes
|
||||
and requested_preset not in HIDDEN_PRESETS
|
||||
):
|
||||
await self.async_set_preset_mode_internal(requested_preset)
|
||||
|
||||
##
|
||||
## Properties overriden from ClimateEntity (or not)
|
||||
@@ -2291,9 +2298,9 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
|
||||
async def service_set_safety(
|
||||
self,
|
||||
delay_min: int,
|
||||
min_on_percent: float,
|
||||
default_on_percent: float,
|
||||
delay_min: int | None = None,
|
||||
min_on_percent: float | None = None,
|
||||
default_on_percent: float | None = None,
|
||||
):
|
||||
"""Called by a service call:
|
||||
service: versatile_thermostat.set_safety
|
||||
@@ -2307,13 +2314,17 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||
if self.lock_manager.check_is_locked("service_set_safety"):
|
||||
return
|
||||
write_event_log(
|
||||
_LOGGER, self, f"Calling SERVICE_SET_SAFETY, delay_min: {delay_min}, " f"min_on_percent: {min_on_percent * 100} %, default_on_percent: {default_on_percent * 100} %"
|
||||
_LOGGER,
|
||||
self,
|
||||
f"Calling SERVICE_SET_SAFETY, delay_min: {delay_min}, "
|
||||
f"min_on_percent: {min_on_percent * 100 if min_on_percent is not None else 'unchanged'} %, "
|
||||
f"default_on_percent: {default_on_percent * 100 if default_on_percent is not None else 'unchanged'} %",
|
||||
)
|
||||
if delay_min:
|
||||
if delay_min is not None:
|
||||
self._safety_manager.set_safety_delay_min(delay_min)
|
||||
if min_on_percent:
|
||||
if min_on_percent is not None:
|
||||
self._safety_manager.set_safety_min_on_percent(min_on_percent)
|
||||
if default_on_percent:
|
||||
if default_on_percent is not None:
|
||||
self._safety_manager.set_safety_default_on_percent(default_on_percent)
|
||||
|
||||
await self.async_control_heating()
|
||||
|
||||
Reference in New Issue
Block a user