From 69139a331937f2dd8c435cb85e7d632e790add32 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 26 Nov 2025 08:23:37 +0100 Subject: [PATCH 1/2] fix chargelog entry in case of default car after unplug active --- packages/control/chargepoint/chargepoint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index 8dc97cc4d1..333ff826e8 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -202,6 +202,7 @@ def _process_charge_stop(self) -> None: self.reset_control_parameter_at_charge_stop() data.data.counter_all_data.get_evu_counter().reset_switch_on_off(self) if self.data.get.plug_state is False: + chargelog.save_and_reset_data(self, data.data.ev_data["ev"+str(self.data.config.ev)]) self.data.control_parameter = control_parameter_factory() if self.data.set.charge_template.data.load_default: self.data.config.ev = 0 @@ -213,7 +214,6 @@ def _process_charge_stop(self) -> None: if data.data.general_data.data.temporary_charge_templates_active: self.update_charge_template( data.data.ev_data["ev"+str(self.data.config.ev)].charge_template) - chargelog.save_and_reset_data(self, data.data.ev_data["ev"+str(self.data.config.ev)]) self.data.set.rfid = None Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/rfid", None) self.data.set.plug_time = None From 8df40cbadf28995df456ceaab0661dcee2072850 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 26 Nov 2025 09:45:10 +0100 Subject: [PATCH 2/2] fix rfid --- packages/control/chargepoint/chargepoint.py | 12 ++++++------ packages/control/chargepoint/rfid.py | 4 ++++ .../modules/chargepoints/mqtt/chargepoint_module.py | 3 +++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index 333ff826e8..29357161f3 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -201,7 +201,7 @@ def _process_charge_stop(self) -> None: Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/ocpp_transaction_id", None) self.reset_control_parameter_at_charge_stop() data.data.counter_all_data.get_evu_counter().reset_switch_on_off(self) - if self.data.get.plug_state is False: + if self.data.get.plug_state is False and self.data.set.plug_state_prev is True: chargelog.save_and_reset_data(self, data.data.ev_data["ev"+str(self.data.config.ev)]) self.data.control_parameter = control_parameter_factory() if self.data.set.charge_template.data.load_default: @@ -776,16 +776,16 @@ def _get_charging_ev(self, vehicle: int, ev_list: Dict[str, Ev]) -> Ev: " verwendet.") charging_ev = ev_list["ev0"] vehicle = 0 - if self.data.config.ev != vehicle: - Pub().pub(f"openWB/set/vehicle/{charging_ev.num}/get/force_soc_update", True) - log.debug("SoC nach EV-Wechsel") - Pub().pub(f"openWB/set/chargepoint/{self.num}/config", dataclasses.asdict(self.data.config)) # wenn vorher kein anderes Fahrzeug zugeordnet war, Ladeprofil nicht zurücksetzen if (self.data.config.ev != vehicle or (self.data.set.charge_template.data.id != charging_ev.charge_template.data.id)): self.update_charge_template(charging_ev.charge_template) + if self.data.config.ev != vehicle: + Pub().pub(f"openWB/set/vehicle/{charging_ev.num}/get/force_soc_update", True) + log.debug("SoC nach EV-Wechsel") + self.data.config.ev = vehicle + Pub().pub(f"openWB/set/chargepoint/{self.num}/config", dataclasses.asdict(self.data.config)) self.data.set.charging_ev_data = charging_ev - self.data.config.ev = vehicle return charging_ev def update_charge_template(self, charge_template: ChargeTemplate) -> None: diff --git a/packages/control/chargepoint/rfid.py b/packages/control/chargepoint/rfid.py index 3a00314f0c..e4c9e9fe01 100644 --- a/packages/control/chargepoint/rfid.py +++ b/packages/control/chargepoint/rfid.py @@ -1,4 +1,5 @@ import logging +from dataclasses import asdict from typing import Optional from control import data @@ -65,6 +66,9 @@ def _validate_rfid(self) -> None: if self.template.data.disable_after_unplug: self.data.set.manual_lock = True Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/manual_lock", True) + if self.template.data.load_default: + self.data.config.ev = 0 + Pub().pub(f"openWB/set/chargepoint/{self.num}/config", asdict(self.data.config)) Pub().pub(f"openWB/set/chargepoint/{self.num}/get/rfid_timestamp", None) msg = ("Es ist in den letzten 5 Minuten kein EV angesteckt worden, dem " f"der ID-Tag {rfid} zugeordnet werden kann. Daher wird dieser verworfen.") diff --git a/packages/modules/chargepoints/mqtt/chargepoint_module.py b/packages/modules/chargepoints/mqtt/chargepoint_module.py index b48252d6a3..92526a020a 100644 --- a/packages/modules/chargepoints/mqtt/chargepoint_module.py +++ b/packages/modules/chargepoints/mqtt/chargepoint_module.py @@ -101,5 +101,8 @@ def on_message(client, userdata, message): def switch_phases(self, phases_to_use: int) -> None: Pub().pub(f"openWB/mqtt/chargepoint/{self.config.id}/set/phases_to_use", phases_to_use) + def clear_rfid(self) -> None: + Pub().pub(f"openWB/mqtt/chargepoint/{self.config.id}/get/rfid", "") + chargepoint_descriptor = DeviceDescriptor(configuration_factory=Mqtt)