diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index ac94d529e5..d4bd394900 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -702,12 +702,16 @@ 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) + # Starte nur Transaction wenn auch die chargepoint ID im Backend gesetzt wurde + if self.data.config.ocpp_chargebox_id: + # Starte nur Transaction wenn bereits ein RFID Tag oder die Fahrzeug ID erkannt wurde + 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 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/ocpp_test.py b/packages/control/ocpp_test.py index cd2e93d8f6..662c81b44b 100644 --- a/packages/control/ocpp_test.py +++ b/packages/control/ocpp_test.py @@ -20,6 +20,7 @@ def mock_data() -> None: def test_start_transaction(mock_data, monkeypatch): cp = Chargepoint(1, None) cp.data.config.ocpp_chargebox_id = "cp1" + cp.data.set.rfid = "ABCDEF01234567" cp.data.get.plug_state = True cp.template = CpTemplate() cp.chargepoint_module = ChargepointModule(Mqtt()) 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")