From f1fd35a93711316eb263cdfef8804743ab2eb8c0 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 21 Oct 2025 10:07:04 +0200 Subject: [PATCH 1/5] secondary: don't reset plug state in case of error --- .../modules/chargepoints/openwb_pro/chargepoint_module.py | 8 +++++--- .../internal_chargepoint_handler/chargepoint_module.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py index 5ae7fad614..8ade2933f9 100644 --- a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py +++ b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py @@ -70,9 +70,10 @@ def get_values(self) -> None: self.store.set(chargepoint_state) except Exception as e: if self.client_error_context.error_counter_exceeded(): - chargepoint_state = ChargepointState(plug_state=False, charge_state=False, imported=None, - # bei im-/exported None werden keine Werte gepublished - exported=None, phases_in_use=0, power=0, currents=[0]*3) + chargepoint_state = ChargepointState( + plug_state=self.old_plug_state, charge_state=False, imported=None, + # bei im-/exported None werden keine Werte gepublished + exported=None, phases_in_use=0, power=0, currents=[0]*3) self.store.set(chargepoint_state) raise e @@ -120,6 +121,7 @@ def request_values(self) -> ChargepointState: self.validate_values(chargepoint_state) self.client_error_context.reset_error_counter() + self.old_plug_state = chargepoint_state.plug_state return chargepoint_state def validate_values(self, chargepoint_state: ChargepointState) -> None: diff --git a/packages/modules/internal_chargepoint_handler/chargepoint_module.py b/packages/modules/internal_chargepoint_handler/chargepoint_module.py index 1ca68225ba..64835d3eb0 100644 --- a/packages/modules/internal_chargepoint_handler/chargepoint_module.py +++ b/packages/modules/internal_chargepoint_handler/chargepoint_module.py @@ -129,7 +129,7 @@ def store_state(chargepoint_state: ChargepointState) -> None: current_commit=self.current_commit ) if self.client_error_context.error_counter_exceeded(): - chargepoint_state = ChargepointState(plug_state=False, + chargepoint_state = ChargepointState(plug_state=self.old_plug_state, charge_state=False, imported=self.old_chargepoint_state.imported, exported=self.old_chargepoint_state.exported, From 1146612f79ce8bf13aa982b48aff57232614042c Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 21 Oct 2025 10:10:37 +0200 Subject: [PATCH 2/5] ammend --- .../internal_chargepoint_handler/chargepoint_module.py | 4 ++-- packages/modules/internal_chargepoint_handler/pro_plus.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/modules/internal_chargepoint_handler/chargepoint_module.py b/packages/modules/internal_chargepoint_handler/chargepoint_module.py index 64835d3eb0..7e428425b6 100644 --- a/packages/modules/internal_chargepoint_handler/chargepoint_module.py +++ b/packages/modules/internal_chargepoint_handler/chargepoint_module.py @@ -133,9 +133,9 @@ def store_state(chargepoint_state: ChargepointState) -> None: charge_state=False, imported=self.old_chargepoint_state.imported, exported=self.old_chargepoint_state.exported, - currents=self.old_chargepoint_state.currents, + currents=[0]*3, phases_in_use=self.old_chargepoint_state.phases_in_use, - power=self.old_chargepoint_state.power) + power=0) store_state(chargepoint_state) self.old_chargepoint_state = chargepoint_state diff --git a/packages/modules/internal_chargepoint_handler/pro_plus.py b/packages/modules/internal_chargepoint_handler/pro_plus.py index c8af1a97c5..019b77ef64 100644 --- a/packages/modules/internal_chargepoint_handler/pro_plus.py +++ b/packages/modules/internal_chargepoint_handler/pro_plus.py @@ -42,7 +42,7 @@ def store_state(chargepoint_state: ChargepointState) -> None: return self.old_chargepoint_state except Exception as e: if self.client_error_context.error_counter_exceeded(): - chargepoint_state = ChargepointState(plug_state=False, charge_state=False, imported=None, + chargepoint_state = ChargepointState(plug_state=self.old_chargepoint_state.plug_state, charge_state=False, imported=None, # bei im-/exported None werden keine Werte gepublished exported=None, phases_in_use=0, power=0, currents=[0]*3) store_state(chargepoint_state) From 700194e9d966afadbee7b28cd344e59835e8fdae Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Tue, 21 Oct 2025 10:34:09 +0200 Subject: [PATCH 3/5] add error handling for remaining cps --- .../external_openwb/chargepoint_module.py | 11 +++++++++++ .../openwb_dc_adapter/chargepoint_module.py | 13 ++++++++++++- .../chargepoints/openwb_pro/chargepoint_module.py | 1 + .../openwb_series2_satellit/chargepoint_module.py | 7 +++++++ .../chargepoints/smartwb/chargepoint_module.py | 11 ++++++++++- 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/packages/modules/chargepoints/external_openwb/chargepoint_module.py b/packages/modules/chargepoints/external_openwb/chargepoint_module.py index 7116b8a630..12c23ad33b 100644 --- a/packages/modules/chargepoints/external_openwb/chargepoint_module.py +++ b/packages/modules/chargepoints/external_openwb/chargepoint_module.py @@ -27,6 +27,7 @@ def __init__(self, config: OpenWBSeries) -> None: self.client_error_context = ErrorTimerContext( f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True) self.store = get_chargepoint_value_store(self.config.id) + self.old_plug_state = False def set_current(self, current: float) -> None: if self.client_error_context.error_counter_exceeded(): @@ -114,6 +115,7 @@ def on_message(client, userdata, message): self.fault_state.error(received_topics[f"{topic_prefix}fault_str"]) elif received_topics[f"{topic_prefix}fault_state"] == 1: self.fault_state.warning(received_topics[f"{topic_prefix}fault_str"]) + self.old_plug_state = chargepoint_state.plug_state except KeyError: raise KeyError("Es wurden nicht alle notwendigen Daten empfangen.") else: @@ -121,6 +123,15 @@ def on_message(client, userdata, message): "Daten nach dem Start oder Ladepunkt nicht erreichbar.") self.client_error_context.reset_error_counter() + if self.client_error_context.error_counter_exceeded(): + chargepoint_state = ChargepointState(plug_state=self.old_plug_state, + charge_state=False, + imported=None, + exported=None, + currents=[0]*3, + phases_in_use=0, + power=0) + self.store.set(chargepoint_state) def switch_phases(self, phases_to_use: int, duration: int) -> None: with SingleComponentUpdateContext(self.fault_state, update_always=False): diff --git a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py index 9bb09a9fe3..667a35b3fb 100644 --- a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py +++ b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py @@ -47,6 +47,7 @@ def __init__(self, config: OpenWBDcAdapter) -> None: raise Exception( "DC-Laden muss durch den Support freigeschaltet werden. Bitte nehme Kontakt mit dem Support auf.") self.efficiency = None + self.old_plug_state = False with SingleComponentUpdateContext(self.fault_state, update_always=False): with self.client_error_context: @@ -119,8 +120,18 @@ def get_values(self) -> None: json_rsp["state"] == ChargingStatus.FINISHING.value or json_rsp["state"] == ChargingStatus.UNAVAILABLE_CONN_OBJ.value): raise Exception(f"Ladepunkt nicht verfügbar. Status: {ChargingStatus(json_rsp['state'])}") - self.store.set(chargepoint_state) self.client_error_context.reset_error_counter() + self.old_plug_state = chargepoint_state.plug_state + if self.client_error_context.error_counter_exceeded(): + chargepoint_state = ChargepointState(plug_state=self.old_plug_state, + charge_state=False, + imported=None, + exported=None, + currents=[0]*3, + phases_in_use=0, + power=0) + + self.store.set(chargepoint_state) chargepoint_descriptor = DeviceDescriptor(configuration_factory=OpenWBDcAdapter) diff --git a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py index 8ade2933f9..e70d66e614 100644 --- a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py +++ b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py @@ -37,6 +37,7 @@ def __init__(self, config: OpenWBPro) -> None: self.__session = req.get_http_session() self.client_error_context = ErrorTimerContext( f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True) + self.old_plug_state = False with SingleComponentUpdateContext(self.fault_state, update_always=False): self.__session.post( diff --git a/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py b/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py index a004fe483b..64ae7800ce 100644 --- a/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py +++ b/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py @@ -35,6 +35,7 @@ def __init__(self, config: OpenWBseries2Satellit) -> None: self.config = config self.fault_state = FaultState(ComponentInfo(self.config.id, "Ladepunkt", "chargepoint")) self.version: Optional[bool] = None + self.old_plug_state: bool = False with SingleComponentUpdateContext(self.fault_state): self.delay_second_cp(self.CP1_DELAY_STARTUP) self.store = get_chargepoint_value_store(self.config.id) @@ -99,10 +100,16 @@ def get_values(self) -> None: ) self.store.set(chargepoint_state) self.client_error_context.reset_error_counter() + self.old_plug_state = chargepoint_state.plug_state except Exception: if self.client_error_context.error_counter_exceeded(): run_command(f"{Path(__file__).resolve().parents[3]}/modules/chargepoints/" "openwb_series2_satellit/restart_protoss_satellite") + chargepoint_state = ChargepointState( + plug_state=self.old_plug_state, charge_state=False, imported=None, + # bei im-/exported None werden keine Werte gepublished + exported=None, phases_in_use=0, power=0, currents=[0]*3) + self.store.set(chargepoint_state) except AttributeError: self._create_client() self._validate_version() diff --git a/packages/modules/chargepoints/smartwb/chargepoint_module.py b/packages/modules/chargepoints/smartwb/chargepoint_module.py index ac6f7b7b76..fbe180dd88 100644 --- a/packages/modules/chargepoints/smartwb/chargepoint_module.py +++ b/packages/modules/chargepoints/smartwb/chargepoint_module.py @@ -21,6 +21,7 @@ def __init__(self, config: SmartWB) -> None: self.client_error_context = ErrorTimerContext( f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True) self.session = req.get_http_session() + self.old_plug_state = False def set_current(self, current: float) -> None: if self.client_error_context.error_counter_exceeded(): @@ -90,8 +91,16 @@ def get_values(self) -> None: max_evse_current=max_evse_current ) - self.store.set(chargepoint_state) self.client_error_context.reset_error_counter() + self.old_plug_state = chargepoint_state.plug_state + if self.client_error_context.error_counter_exceeded(): + chargepoint_state = ChargepointState(plug_state=self.old_plug_state, + charge_state=False, + imported=None, + exported=None, + currents=[0]*3, + phases_in_use=0, + power=0) def clear_rfid(self) -> None: with SingleComponentUpdateContext(self.fault_state): From 32b52913efbfdedd75f1854f3371efa201211eb1 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 5 Nov 2025 11:37:24 +0100 Subject: [PATCH 4/5] pytest --- .../chargepoints/smartwb/chargepoint_module.py | 1 + .../internal_chargepoint_handler/pro_plus.py | 17 +++++++++++------ .../pro_plus_test.py | 6 +++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/modules/chargepoints/smartwb/chargepoint_module.py b/packages/modules/chargepoints/smartwb/chargepoint_module.py index fbe180dd88..9a64b373fd 100644 --- a/packages/modules/chargepoints/smartwb/chargepoint_module.py +++ b/packages/modules/chargepoints/smartwb/chargepoint_module.py @@ -101,6 +101,7 @@ def get_values(self) -> None: currents=[0]*3, phases_in_use=0, power=0) + self.store.set(chargepoint_state) def clear_rfid(self) -> None: with SingleComponentUpdateContext(self.fault_state): diff --git a/packages/modules/internal_chargepoint_handler/pro_plus.py b/packages/modules/internal_chargepoint_handler/pro_plus.py index 51bce754ea..7136aab33b 100644 --- a/packages/modules/internal_chargepoint_handler/pro_plus.py +++ b/packages/modules/internal_chargepoint_handler/pro_plus.py @@ -51,20 +51,25 @@ def store_state(chargepoint_state: ChargepointState) -> None: store_state(self.old_chargepoint_state) return self.old_chargepoint_state except Exception as e: - if self.client_error_context.error_counter_exceeded(): - chargepoint_state = ChargepointState(plug_state=self.old_chargepoint_state.plug_state, charge_state=False, imported=None, + if self.old_chargepoint_state is None: + raise Exception(self.NO_DATA_SINCE_BOOT) + elif self.client_error_context.error_counter_exceeded(): + chargepoint_state = ChargepointState(plug_state=self.old_chargepoint_state.plug_state, + charge_state=False, # bei im-/exported None werden keine Werte gepublished - exported=None, phases_in_use=0, power=0, currents=[0]*3) + imported=None, + exported=None, + phases_in_use=0, + power=0, + currents=[0]*3) store_state(chargepoint_state) if isinstance(e, (requests.exceptions.ConnectTimeout, requests.exceptions.ConnectionError)): raise Exception(self.NO_CONNECTION_TO_INTERNAL_CP) else: raise e - elif self.old_chargepoint_state is not None: + else: store_state(self.old_chargepoint_state) return self.old_chargepoint_state - else: - raise Exception(self.NO_DATA_SINCE_BOOT) def perform_phase_switch(self, phases_to_use: int, duration: int) -> None: super().switch_phases(phases_to_use, duration) diff --git a/packages/modules/internal_chargepoint_handler/pro_plus_test.py b/packages/modules/internal_chargepoint_handler/pro_plus_test.py index bf3bca6977..0622afd201 100644 --- a/packages/modules/internal_chargepoint_handler/pro_plus_test.py +++ b/packages/modules/internal_chargepoint_handler/pro_plus_test.py @@ -3,6 +3,7 @@ from unittest.mock import Mock import pytest +import requests from modules.internal_chargepoint_handler.pro_plus import SubData from modules.common.component_state import ChargepointState from modules.internal_chargepoint_handler.internal_chargepoint_handler_config import InternalChargepoint @@ -66,7 +67,10 @@ def test_get_values_error_timer_exceed(setup_pro_plus: Callable[[], Tuple[ProPlu # Exception werfen und Ladepunkt-Status zurücksetzen # setup pro_plus, mock_store_set = setup_pro_plus - monkeypatch.setattr(pro_plus, "request_values", Mock(side_effect=Exception(ProPlus.NO_CONNECTION_TO_INTERNAL_CP))) + pro_plus.old_chargepoint_state = ChargepointState( + plug_state=False, charge_state=False, imported=None, exported=None, + phases_in_use=0, power=0, currents=[0]*3) + monkeypatch.setattr(pro_plus, "request_values", Mock(side_effect=requests.exceptions.ConnectTimeout())) monkeypatch.setattr(pro_plus.client_error_context, "error_counter_exceeded", lambda: True) # execution From 8cd55bdc59f1f2586d1d56f70bb39941207f3c3b Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 5 Nov 2025 12:25:05 +0100 Subject: [PATCH 5/5] fix --- .../chargepoints/external_openwb/chargepoint_module.py | 4 +--- .../chargepoints/openwb_dc_adapter/chargepoint_module.py | 4 +--- .../modules/chargepoints/openwb_pro/chargepoint_module.py | 4 +--- .../openwb_series2_satellit/chargepoint_module.py | 4 +--- packages/modules/chargepoints/smartwb/chargepoint_module.py | 4 +--- packages/modules/common/component_state.py | 2 +- packages/modules/common/store/_chargepoint.py | 3 ++- packages/modules/common/store/_chargepoint_internal.py | 3 ++- 8 files changed, 10 insertions(+), 18 deletions(-) diff --git a/packages/modules/chargepoints/external_openwb/chargepoint_module.py b/packages/modules/chargepoints/external_openwb/chargepoint_module.py index f0e52c4cc5..8ff732b5a9 100644 --- a/packages/modules/chargepoints/external_openwb/chargepoint_module.py +++ b/packages/modules/chargepoints/external_openwb/chargepoint_module.py @@ -27,7 +27,6 @@ def __init__(self, config: OpenWBSeries) -> None: self.client_error_context = ErrorTimerContext( f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True) self.store = get_chargepoint_value_store(self.config.id) - self.old_plug_state = False def set_current(self, current: float) -> None: if self.client_error_context.error_counter_exceeded(): @@ -115,7 +114,6 @@ def on_message(client, userdata, message): self.fault_state.error(received_topics[f"{topic_prefix}fault_str"]) elif received_topics[f"{topic_prefix}fault_state"] == 1: self.fault_state.warning(received_topics[f"{topic_prefix}fault_str"]) - self.old_plug_state = chargepoint_state.plug_state except KeyError: if received_topics[f"{topic_prefix}fault_state"] == 2: self.fault_state.error(received_topics[f"{topic_prefix}fault_str"]) @@ -127,7 +125,7 @@ def on_message(client, userdata, message): self.client_error_context.reset_error_counter() if self.client_error_context.error_counter_exceeded(): - chargepoint_state = ChargepointState(plug_state=self.old_plug_state, + chargepoint_state = ChargepointState(plug_state=None, charge_state=False, imported=None, exported=None, diff --git a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py index 667a35b3fb..583d606747 100644 --- a/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py +++ b/packages/modules/chargepoints/openwb_dc_adapter/chargepoint_module.py @@ -47,7 +47,6 @@ def __init__(self, config: OpenWBDcAdapter) -> None: raise Exception( "DC-Laden muss durch den Support freigeschaltet werden. Bitte nehme Kontakt mit dem Support auf.") self.efficiency = None - self.old_plug_state = False with SingleComponentUpdateContext(self.fault_state, update_always=False): with self.client_error_context: @@ -121,9 +120,8 @@ def get_values(self) -> None: json_rsp["state"] == ChargingStatus.UNAVAILABLE_CONN_OBJ.value): raise Exception(f"Ladepunkt nicht verfügbar. Status: {ChargingStatus(json_rsp['state'])}") self.client_error_context.reset_error_counter() - self.old_plug_state = chargepoint_state.plug_state if self.client_error_context.error_counter_exceeded(): - chargepoint_state = ChargepointState(plug_state=self.old_plug_state, + chargepoint_state = ChargepointState(plug_state=None, charge_state=False, imported=None, exported=None, diff --git a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py index f38238de71..cee98c1d3f 100644 --- a/packages/modules/chargepoints/openwb_pro/chargepoint_module.py +++ b/packages/modules/chargepoints/openwb_pro/chargepoint_module.py @@ -42,7 +42,6 @@ def __init__(self, config: OpenWBPro) -> None: self.__session = req.get_http_session() self.client_error_context = ErrorTimerContext( f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True) - self.old_plug_state = False with SingleComponentUpdateContext(self.fault_state, update_always=False): self.__session.post( @@ -77,7 +76,7 @@ def get_values(self) -> None: except Exception as e: if self.client_error_context.error_counter_exceeded(): chargepoint_state = ChargepointState( - plug_state=self.old_plug_state, charge_state=False, imported=None, + plug_state=None, charge_state=False, imported=None, # bei im-/exported None werden keine Werte gepublished exported=None, phases_in_use=0, power=0, currents=[0]*3) self.store.set(chargepoint_state) @@ -126,7 +125,6 @@ def request_values(self) -> ChargepointState: self.validate_values(chargepoint_state) self.client_error_context.reset_error_counter() - self.old_plug_state = chargepoint_state.plug_state return chargepoint_state def validate_values(self, chargepoint_state: ChargepointState) -> None: diff --git a/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py b/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py index 64ae7800ce..429df2041a 100644 --- a/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py +++ b/packages/modules/chargepoints/openwb_series2_satellit/chargepoint_module.py @@ -35,7 +35,6 @@ def __init__(self, config: OpenWBseries2Satellit) -> None: self.config = config self.fault_state = FaultState(ComponentInfo(self.config.id, "Ladepunkt", "chargepoint")) self.version: Optional[bool] = None - self.old_plug_state: bool = False with SingleComponentUpdateContext(self.fault_state): self.delay_second_cp(self.CP1_DELAY_STARTUP) self.store = get_chargepoint_value_store(self.config.id) @@ -100,13 +99,12 @@ def get_values(self) -> None: ) self.store.set(chargepoint_state) self.client_error_context.reset_error_counter() - self.old_plug_state = chargepoint_state.plug_state except Exception: if self.client_error_context.error_counter_exceeded(): run_command(f"{Path(__file__).resolve().parents[3]}/modules/chargepoints/" "openwb_series2_satellit/restart_protoss_satellite") chargepoint_state = ChargepointState( - plug_state=self.old_plug_state, charge_state=False, imported=None, + plug_state=None, charge_state=False, imported=None, # bei im-/exported None werden keine Werte gepublished exported=None, phases_in_use=0, power=0, currents=[0]*3) self.store.set(chargepoint_state) diff --git a/packages/modules/chargepoints/smartwb/chargepoint_module.py b/packages/modules/chargepoints/smartwb/chargepoint_module.py index 9a64b373fd..1fe9028660 100644 --- a/packages/modules/chargepoints/smartwb/chargepoint_module.py +++ b/packages/modules/chargepoints/smartwb/chargepoint_module.py @@ -21,7 +21,6 @@ def __init__(self, config: SmartWB) -> None: self.client_error_context = ErrorTimerContext( f"openWB/set/chargepoint/{self.config.id}/get/error_timestamp", CP_ERROR, hide_exception=True) self.session = req.get_http_session() - self.old_plug_state = False def set_current(self, current: float) -> None: if self.client_error_context.error_counter_exceeded(): @@ -92,9 +91,8 @@ def get_values(self) -> None: ) self.client_error_context.reset_error_counter() - self.old_plug_state = chargepoint_state.plug_state if self.client_error_context.error_counter_exceeded(): - chargepoint_state = ChargepointState(plug_state=self.old_plug_state, + chargepoint_state = ChargepointState(plug_state=None, charge_state=False, imported=None, exported=None, diff --git a/packages/modules/common/component_state.py b/packages/modules/common/component_state.py index 0da5d3ddda..ce5b687d10 100644 --- a/packages/modules/common/component_state.py +++ b/packages/modules/common/component_state.py @@ -177,7 +177,7 @@ def __init__(self, power: float, currents: List[float], charge_state: bool, - plug_state: bool, + plug_state: Optional[bool], serial_number: str = "", charging_current: Optional[float] = 0, charging_voltage: Optional[float] = 0, diff --git a/packages/modules/common/store/_chargepoint.py b/packages/modules/common/store/_chargepoint.py index 8743646f41..3efbf7a1d3 100644 --- a/packages/modules/common/store/_chargepoint.py +++ b/packages/modules/common/store/_chargepoint.py @@ -46,7 +46,8 @@ def update(self): if self.state.phases_in_use: pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/phases_in_use", self.state.phases_in_use, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/charge_state", self.state.charge_state, 2) - pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/plug_state", self.state.plug_state, 2) + if self.state.plug_state is not None: + pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/plug_state", self.state.plug_state, 2) pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/rfid", self.state.rfid) if self.state.rfid_timestamp is not None: pub_to_broker("openWB/set/chargepoint/" + str(self.num) + "/get/rfid_timestamp", self.state.rfid_timestamp) diff --git a/packages/modules/common/store/_chargepoint_internal.py b/packages/modules/common/store/_chargepoint_internal.py index a6acb53824..593ab6dd8c 100644 --- a/packages/modules/common/store/_chargepoint_internal.py +++ b/packages/modules/common/store/_chargepoint_internal.py @@ -23,7 +23,8 @@ def update(self): pub_to_broker(f"{topic_prefix}/powers", self.state.powers, 2) pub_to_broker(f"{topic_prefix}/phases_in_use", self.state.phases_in_use, 2) pub_to_broker(f"{topic_prefix}/charge_state", self.state.charge_state, 2) - pub_to_broker(f"{topic_prefix}/plug_state", self.state.plug_state, 2) + if self.state.plug_state is not None: + pub_to_broker(f"{topic_prefix}/plug_state", self.state.plug_state, 2) pub_to_broker(f"{topic_prefix}/vehicle_id", self.state.vehicle_id) pub_to_broker(f"{topic_prefix}/rfid", self.state.rfid) pub_to_broker(f"{topic_prefix}/serial_number", self.state.serial_number)