From ba2cd32c6f3a759b32fd4b903ec4bf056b0cf155 Mon Sep 17 00:00:00 2001 From: Alexander Arques Date: Sun, 12 Oct 2025 16:35:25 +0200 Subject: [PATCH 1/3] Fixes multiple calls to _async_enter_summer_house_mode overwriting stored_data Fixes #368 --- custom_components/panasonic_cc/climate.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/custom_components/panasonic_cc/climate.py b/custom_components/panasonic_cc/climate.py index 97a4e28..6aae437 100644 --- a/custom_components/panasonic_cc/climate.py +++ b/custom_components/panasonic_cc/climate.py @@ -291,6 +291,8 @@ def _update_attributes(self, builder: ChangeRequestBuilder) -> None: async def _async_enter_summer_house_mode(self, builder: ChangeRequestBuilder): """Enter summer house mode.""" + if self.coordinator.device.in_summer_house_mode: + return device = self.coordinator.device stored_data = await self.coordinator.async_get_stored_data() From 8265d25c6b0a90fcc00f7162df5505dc6ea2ce6d Mon Sep 17 00:00:00 2001 From: Alexander Arques Date: Mon, 13 Oct 2025 00:25:34 +0200 Subject: [PATCH 2/3] Fix setting preset mode to heat_8_15 toggling summer_house_mode The set_preset function always calls exit_summer_house mode so enter_summer_house mode must be allowed to re-run --- custom_components/panasonic_cc/climate.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/custom_components/panasonic_cc/climate.py b/custom_components/panasonic_cc/climate.py index 6aae437..5b977e1 100644 --- a/custom_components/panasonic_cc/climate.py +++ b/custom_components/panasonic_cc/climate.py @@ -291,16 +291,15 @@ def _update_attributes(self, builder: ChangeRequestBuilder) -> None: async def _async_enter_summer_house_mode(self, builder: ChangeRequestBuilder): """Enter summer house mode.""" - if self.coordinator.device.in_summer_house_mode: - return device = self.coordinator.device - stored_data = await self.coordinator.async_get_stored_data() - 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.value - await self.coordinator.async_store_data(stored_data) + if not self.coordinator.device.in_summer_house_mode: + stored_data = await self.coordinator.async_get_stored_data() + 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.value + await self.coordinator.async_store_data(stored_data) builder.set_hvac_mode(constants.OperationMode.Heat) builder.set_eco_mode(constants.EcoMode.Powerful) From 92419b060a09ae03ee083d4c9162f06cb66cad40 Mon Sep 17 00:00:00 2001 From: AnonymousRetard Date: Mon, 27 Oct 2025 09:52:56 +0100 Subject: [PATCH 3/3] Update climate.py Use local variable "device" instead of dereferencing self.coordinator.device again --- custom_components/panasonic_cc/climate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/panasonic_cc/climate.py b/custom_components/panasonic_cc/climate.py index 5b977e1..a9272a3 100644 --- a/custom_components/panasonic_cc/climate.py +++ b/custom_components/panasonic_cc/climate.py @@ -293,7 +293,7 @@ async def _async_enter_summer_house_mode(self, builder: ChangeRequestBuilder): """Enter summer house mode.""" device = self.coordinator.device - if not self.coordinator.device.in_summer_house_mode: + if not device.in_summer_house_mode: stored_data = await self.coordinator.async_get_stored_data() stored_data['mode'] = device.parameters.mode.value stored_data['ecoMode'] = device.parameters.eco_mode.value