From 8d534613ad6a836ed353e574bf1694e60712e8e0 Mon Sep 17 00:00:00 2001 From: Jimmy Everling Date: Mon, 6 Jan 2025 10:27:46 +0100 Subject: [PATCH] Fixed issues with Preset not setting and reflecting correctly --- custom_components/panasonic_cc/climate.py | 30 +++++++++++++------ .../pcomfortcloud/panasonicdevice.py | 2 +- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/custom_components/panasonic_cc/climate.py b/custom_components/panasonic_cc/climate.py index cf747a9..977b169 100644 --- a/custom_components/panasonic_cc/climate.py +++ b/custom_components/panasonic_cc/climate.py @@ -199,12 +199,13 @@ def _update_attributes(self, builder: ChangeRequestBuilder) -> None: """Update attributes.""" if builder.power_mode == constants.Power.Off: self._attr_hvac_mode = HVACMode.OFF + default_preset = PRESET_NONE if builder.target_temperature: self._attr_target_temperature = builder.target_temperature if builder.target_temperature > 15 and self._attr_preset_mode == PRESET_8_15: - self._attr_preset_mode = PRESET_NONE + self._attr_preset_mode = default_preset elif builder.target_temperature < 15 and self._attr_preset_mode != PRESET_8_15: - self._attr_preset_mode = PRESET_8_15 + self._attr_preset_mode = default_preset = PRESET_8_15 if builder.eco_mode: if builder.eco_mode.name in (PRESET_QUIET, PRESET_ECO): @@ -212,7 +213,7 @@ def _update_attributes(self, builder: ChangeRequestBuilder) -> None: elif builder.eco_mode.name in (PRESET_POWERFUL, PRESET_BOOST): self._attr_preset_mode = self._powerful_preset else: - self._attr_preset_mode = PRESET_NONE + self._attr_preset_mode = default_preset if builder.fan_speed: self._attr_fan_mode = builder.fan_speed.name @@ -228,10 +229,10 @@ async def _async_enter_summer_house_mode(self, builder: ChangeRequestBuilder): device = self.coordinator.device stored_data = await self.coordinator.async_get_stored_data() - stored_data['mode'] = device.parameters.mode - stored_data['ecoMode'] = device.parameters.eco_mode + stored_data['mode'] = device.parameters.mode.value + stored_data['ecoMode'] = device.parameters.eco_mode.value stored_data['targetTemperature'] = device.parameters.target_temperature - stored_data['fanSpeed'] = device.parameters.fan_speed + stored_data['fanSpeed'] = device.parameters.fan_speed.value await self.coordinator.async_store_data(stored_data) builder.set_hvac_mode(constants.OperationMode.Heat) @@ -249,10 +250,20 @@ async def _async_exit_summer_house_mode(self, builder: ChangeRequestBuilder) -> if not self.coordinator.device.in_summer_house_mode: return stored_data = await self.coordinator.async_get_stored_data() - hvac_mode = stored_data['mode'] if 'mode' in stored_data else constants.OperationMode.Heat - eco_mode = stored_data['ecoMode'] if 'ecoMode' in stored_data else constants.EcoMode.Auto + try: + hvac_mode = constants.OperationMode(stored_data['mode']) if 'mode' in stored_data else constants.OperationMode.Heat + except: + hvac_mode = constants.OperationMode.Heat + try: + eco_mode = constants.EcoMode(stored_data['ecoMode']) if 'ecoMode' in stored_data else constants.EcoMode.Auto + except: + eco_mode = constants.EcoMode.Auto target_temperature = stored_data['targetTemperature'] if 'targetTemperature' in stored_data else 20 - fan_speed = stored_data['fanSpeed'] if 'fanSpeed' in stored_data else constants.FanSpeed.Auto + try: + fan_speed = constants.FanSpeed(stored_data['fanSpeed']) if 'fanSpeed' in stored_data else constants.FanSpeed.Auto + except: + fan_speed = constants.FanSpeed.Auto + builder.set_hvac_mode(hvac_mode) builder.set_eco_mode(eco_mode) builder.set_target_temperature(target_temperature) @@ -317,6 +328,7 @@ async def async_set_preset_mode(self, preset_mode: str) -> None: await self._async_enter_summer_house_mode(builder) await self.coordinator.async_apply_changes(builder) self._update_attributes(builder) + await self.coordinator.async_request_refresh() async def async_set_fan_mode(self, fan_mode: str) -> None: """Set new target fan mode.""" diff --git a/custom_components/panasonic_cc/pcomfortcloud/panasonicdevice.py b/custom_components/panasonic_cc/pcomfortcloud/panasonicdevice.py index ff82423..4bf0f49 100644 --- a/custom_components/panasonic_cc/pcomfortcloud/panasonicdevice.py +++ b/custom_components/panasonic_cc/pcomfortcloud/panasonicdevice.py @@ -140,7 +140,7 @@ def has_iauto_x(self): @property def in_summer_house_mode(self): temp = self._parameters.target_temperature - i = 1 if temp - 8 > 0 else (0 if temp -8 else -1) + i = 1 if temp - 8 > 0 else (0 if temp -8 == 0 else -1) match self._features.summer_house: case 1: return i == 0 or temp == 10