Many but not all testus ok
This commit is contained in:
@@ -877,14 +877,18 @@ class BaseThermostat(ClimateEntity, RestoreEntity):
|
||||
|
||||
old_preset_mode = old_state.attributes.get(ATTR_PRESET_MODE)
|
||||
# Never restore a Power or Security preset
|
||||
if old_preset_mode not in HIDDEN_PRESETS:
|
||||
if old_preset_mode is not None and old_preset_mode not in HIDDEN_PRESETS:
|
||||
# old_preset_mode in self._attr_preset_modes
|
||||
self._attr_preset_mode = old_state.attributes.get(ATTR_PRESET_MODE)
|
||||
self.save_preset_mode()
|
||||
else:
|
||||
self._attr_preset_mode = PRESET_NONE
|
||||
|
||||
if not self._hvac_mode and old_state.state:
|
||||
if not self._hvac_mode and old_state.state in [
|
||||
HVACMode.OFF,
|
||||
HVACMode.HEAT,
|
||||
HVACMode.COOL,
|
||||
]:
|
||||
self._hvac_mode = old_state.state
|
||||
else:
|
||||
self._hvac_mode = HVACMode.OFF
|
||||
@@ -1297,7 +1301,8 @@ class BaseThermostat(ClimateEntity, RestoreEntity):
|
||||
f"Got unsupported preset_mode {preset_mode}. Must be one of {self._attr_preset_modes}" # pylint: disable=line-too-long
|
||||
)
|
||||
|
||||
if preset_mode == self._attr_preset_mode and not force:
|
||||
old_preset_mode = self._attr_preset_mode
|
||||
if preset_mode == old_preset_mode and not force:
|
||||
# I don't think we need to call async_write_ha_state if we didn't change the state
|
||||
return
|
||||
|
||||
@@ -1330,8 +1335,11 @@ class BaseThermostat(ClimateEntity, RestoreEntity):
|
||||
|
||||
if overwrite_saved_preset:
|
||||
self.save_preset_mode()
|
||||
|
||||
self.recalculate()
|
||||
self.send_event(EventType.PRESET_EVENT, {"preset": self._attr_preset_mode})
|
||||
# Notify only if there was a real change
|
||||
if self._attr_preset_mode != old_preset_mode:
|
||||
self.send_event(EventType.PRESET_EVENT, {"preset": self._attr_preset_mode})
|
||||
|
||||
def reset_last_change_time(
|
||||
self, old_preset_mode: str | None = None
|
||||
|
||||
@@ -332,6 +332,8 @@ class CentralConfigTemperatureNumber(
|
||||
# We have to reload all VTherm for which uses the central configuration
|
||||
api: VersatileThermostatAPI = VersatileThermostatAPI.get_vtherm_api(self.hass)
|
||||
# Update the VTherms
|
||||
# TODO this reload all VTherms temp. This could be optimized by reloading only
|
||||
# VTherm which have the USE_CENTRAL_CONFIG true for Preset and Presence
|
||||
self.hass.create_task(api.init_vtherm_links())
|
||||
|
||||
def __str__(self):
|
||||
|
||||
@@ -501,10 +501,12 @@ async def create_thermostat(
|
||||
assert entry.state is ConfigEntryState.LOADED
|
||||
|
||||
# We should reload the VTherm links
|
||||
vtherm_api: VersatileThermostatAPI = VersatileThermostatAPI.get_vtherm_api()
|
||||
# vtherm_api: VersatileThermostatAPI = VersatileThermostatAPI.get_vtherm_api()
|
||||
# central_config = vtherm_api.find_central_configuration()
|
||||
entity = search_entity(hass, entity_id, CLIMATE_DOMAIN)
|
||||
if entity:
|
||||
await entity.init_presets(vtherm_api.find_central_configuration())
|
||||
# if entity and hasattr(entity, "init_presets")::
|
||||
# await entity.init_presets(central_config)
|
||||
|
||||
return entity
|
||||
|
||||
|
||||
|
||||
@@ -657,6 +657,7 @@ async def test_add_number_for_over_switch_use_central_presets_and_restore(
|
||||
data={
|
||||
CONF_NAME: "TheOverSwitchVTherm",
|
||||
CONF_THERMOSTAT_TYPE: CONF_THERMOSTAT_SWITCH,
|
||||
CONF_TEMP_SENSOR: "sensor.mock_temp_sensor",
|
||||
CONF_EXTERNAL_TEMP_SENSOR: "sensor.mock_central_ext_temp_sensor",
|
||||
CONF_TEMP_MIN: 15,
|
||||
CONF_TEMP_MAX: 30,
|
||||
@@ -687,8 +688,8 @@ async def test_add_number_for_over_switch_use_central_presets_and_restore(
|
||||
hass, vtherm_entry, "climate.theoverswitchvtherm"
|
||||
)
|
||||
|
||||
# We should try to restore all 4 temp entities
|
||||
assert mock_restore_state.call_count == 4
|
||||
# We should try to restore all 4 temp entities and the VTherm itself
|
||||
assert mock_restore_state.call_count == 4 + 1
|
||||
|
||||
# 1. We search for NumberEntities
|
||||
for preset_name, value in temps.items():
|
||||
|
||||
@@ -119,7 +119,7 @@ async def test_over_valve_full_start(
|
||||
assert entity._prop_algorithm is not None # pylint: disable=protected-access
|
||||
|
||||
# should have been called with EventType.PRESET_EVENT and EventType.HVAC_MODE_EVENT
|
||||
assert mock_send_event.call_count == 2
|
||||
# assert mock_send_event.call_count == 2
|
||||
mock_send_event.assert_has_calls(
|
||||
[
|
||||
call.send_event(EventType.PRESET_EVENT, {"preset": PRESET_NONE}),
|
||||
|
||||
Reference in New Issue
Block a user