From 6f3501a1ad89c166e9934f4d1d3e41f326c73852 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 10 Jan 2025 15:08:05 +0100 Subject: [PATCH] fix ocpp heartbeat --- packages/control/ocpp.py | 1 + packages/control/ocpp_test.py | 4 ++-- packages/control/optional.py | 6 +++--- packages/control/optional_data.py | 1 + packages/helpermodules/setdata.py | 12 +++++------- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/control/ocpp.py b/packages/control/ocpp.py index c2a8edb24b..7d5f3f7901 100644 --- a/packages/control/ocpp.py +++ b/packages/control/ocpp.py @@ -56,6 +56,7 @@ def boot_notification(self: OptionalProtocol, firmware_version=data.data.system_data["system"].data["version"], meter_serial_number=serial_number )) + log.debug(f"BootNotification für Chargebox ID: {chargebox_id} gesendet.") except Exception as e: fault_state.from_exception(e) diff --git a/packages/control/ocpp_test.py b/packages/control/ocpp_test.py index 858010eca9..e56eaee676 100644 --- a/packages/control/ocpp_test.py +++ b/packages/control/ocpp_test.py @@ -67,11 +67,11 @@ def test_send_ocpp_data(mock_data, monkeypatch): send_heart_beat_mock = Mock() monkeypatch.setattr(data.data.optional_data, "send_heart_beat", send_heart_beat_mock) - data.data.optional_data.ocpp_boot_notification_sent = False + data.data.optional_data.data.ocpp.boot_notification_sent = False data.data.optional_data._transfer_meter_values() boot_notification_mock.call_args == (("cp1", "mqtt", "123456"),) send_heart_beat_mock.call_args == (("cp1",),) transfer_values_mock.call_args == (("cp1", 1, 0),) - assert data.data.optional_data.ocpp_boot_notification_sent is True + assert data.data.optional_data.data.ocpp.boot_notification_sent is True diff --git a/packages/control/optional.py b/packages/control/optional.py index 44552dec27..938f082595 100644 --- a/packages/control/optional.py +++ b/packages/control/optional.py @@ -25,7 +25,6 @@ def __init__(self): self.et_module: ConfigurableElectricityTariff = None self.data.dc_charging = hardware_configuration.get_hardware_configuration_setting("dc_charging") Pub().pub("openWB/optional/dc_charging", self.data.dc_charging) - self.ocpp_boot_notification_sent = False except Exception: log.exception("Fehler im Optional-Modul") @@ -104,13 +103,14 @@ def ocpp_transfer_meter_values(self): def _transfer_meter_values(self): for cp in data.data.cp_data.values(): try: - if self.ocpp_boot_notification_sent is False: + if self.data.ocpp.boot_notification_sent is False: # Boot-Notfification nicht in der init-Funktion aufrufen, da noch nicht alles initialisiert ist self.boot_notification(cp.data.config.ocpp_chargebox_id, cp.chargepoint_module.fault_state, cp.chargepoint_module.config.type, cp.data.get.serial_number) - self.ocpp_boot_notification_sent = True + self.data.ocpp.boot_notification_sent = True + Pub().pub("openWB/set/optional/ocpp/boot_notification_sent", True) 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, diff --git a/packages/control/optional_data.py b/packages/control/optional_data.py index 80f7ac4dd3..8b9a76aea4 100644 --- a/packages/control/optional_data.py +++ b/packages/control/optional_data.py @@ -61,6 +61,7 @@ def rfid_factory() -> Rfid: @dataclass class Ocpp: active: bool = False + boot_notification_sent: bool = False url: Optional[str] = None version: str = "ocpp1.6" diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index a58994beec..bfa44d37a0 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -870,13 +870,11 @@ def process_optional_topic(self, msg: mqtt.MQTTMessage): self._validate_value(msg, bool) elif "openWB/set/optional/int_display/rotation" in msg.topic: self._validate_value(msg, int, [(0, 0), (90, 90), (180, 180), (270, 270)]) - elif "openWB/set/optional/int_display/active" in msg.topic: - self._validate_value(msg, bool) - elif "openWB/set/optional/int_display/on_if_plugged_in" in msg.topic: - self._validate_value(msg, bool) - elif "openWB/set/optional/int_display/only_local_charge_points" in msg.topic: - self._validate_value(msg, bool) - elif "openWB/set/optional/int_display/pin_active" in msg.topic: + elif ("openWB/set/optional/int_display/active" in msg.topic or + "openWB/set/optional/ocpp/boot_notification_sent" in msg.topic or + "openWB/set/optional/int_display/on_if_plugged_in" in msg.topic or + "openWB/set/optional/int_display/only_local_charge_points" in msg.topic or + "openWB/set/optional/int_display/pin_active" in msg.topic): self._validate_value(msg, bool) elif "openWB/set/optional/int_display/pin_code" in msg.topic: self._validate_value(msg, str)