From e01be43a8530eae7bf13b109220c88ff313eca2c Mon Sep 17 00:00:00 2001 From: dawys Date: Sun, 22 Mar 2026 10:12:56 +0100 Subject: [PATCH 1/2] also send the transaction ID to OCPP provider the transaction remains traceable even after the websocket performs a reconnect --- packages/control/ocpp.py | 2 ++ packages/control/optional.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/control/ocpp.py b/packages/control/ocpp.py index 71f46c0212..352357cffd 100644 --- a/packages/control/ocpp.py +++ b/packages/control/ocpp.py @@ -87,10 +87,12 @@ def transfer_values(self: OptionalProtocol, chargebox_id: str, fault_state: FaultState, connector_id: int, + transaction_id: int, imported: int) -> None: try: self._process_call(chargebox_id, fault_state, call.MeterValues( connector_id=connector_id, + transaction_id=transaction_id, meter_value=[{"timestamp": self._get_formatted_time(), "sampledValue": [ { diff --git a/packages/control/optional.py b/packages/control/optional.py index b65b161751..d679633224 100644 --- a/packages/control/optional.py +++ b/packages/control/optional.py @@ -284,6 +284,6 @@ def _transfer_meter_values(self): if cp.data.set.ocpp_transaction_id is not None: self.send_heart_beat(cp.data.config.ocpp_chargebox_id, cp.chargepoint_module.fault_state) self.transfer_values(cp.data.config.ocpp_chargebox_id, - cp.chargepoint_module.fault_state, cp.num, int(cp.data.get.imported)) + cp.chargepoint_module.fault_state, cp.num, cp.data.set.ocpp_transaction_id, int(cp.data.get.imported)) except Exception: log.exception("Fehler im OCPP-Optional-Modul") From 5d513c54b688ec5541cfffbc74668a92ba3ebef8 Mon Sep 17 00:00:00 2001 From: dawys Date: Sun, 22 Mar 2026 10:16:33 +0100 Subject: [PATCH 2/2] only start the connection to the OCPP provider when all variables are set check if the chargebox ID is set in the backend and if the rfid tag or the vehicle ID has been detected --- packages/control/chargepoint/chargepoint.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index ac94d529e5..656e33960a 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -702,12 +702,18 @@ def update(self, ev_list: Dict[str, Ev]) -> None: # OCPP Start Transaction nach Anstecken if ((self.data.get.plug_state and self.data.set.plug_state_prev is False) or (self.data.set.ocpp_transaction_id is None and self.data.get.charge_state)): - self.data.set.ocpp_transaction_id = data.data.optional_data.start_transaction( - self.data.config.ocpp_chargebox_id, - self.chargepoint_module.fault_state, - self.num, - self.data.set.rfid or self.data.get.rfid or self.data.get.vehicle_id, - self.data.get.imported) + + # only start OCPP transaction if chargebox ID is not none + if (self.data.config.ocpp_chargebox_id is not None): + # only start OCPP transaction if rfid tag or vehicle ID is set + if (self.data.set.rfid or self.data.get.rfid or self.data.get.vehicle_id): + + self.data.set.ocpp_transaction_id = data.data.optional_data.start_transaction( + self.data.config.ocpp_chargebox_id, + self.chargepoint_module.fault_state, + self.num, + self.data.set.rfid or self.data.get.rfid or self.data.get.vehicle_id, + self.data.get.imported) if self.data.get.plug_state and self.data.set.plug_state_prev is False: self.data.control_parameter.timestamp_chargemode_changed = create_timestamp() # SoC nach Anstecken aktualisieren