From 47e93ae9c2a820ccd76f2060a6e46f038b88ac34 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 2 Aug 2023 14:38:17 +0200 Subject: [PATCH 1/2] fix boot done --- packages/helpermodules/setdata.py | 3 ++- packages/helpermodules/subdata.py | 6 ++++++ packages/helpermodules/update_config.py | 1 + packages/main.py | 4 +++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index 48ce51b56f..79aedc9b35 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -935,7 +935,8 @@ def process_system_topic(self, msg: mqtt.MQTTMessage): "openWB/set/system/wizard_done" in msg.topic or "openWB/set/system/update_in_progress" in msg.topic or "openWB/set/system/dataprotection_acknowledged" in msg.topic or - "openWB/set/system/usage_terms_acknowledged" in msg.topic): + "openWB/set/system/usage_terms_acknowledged" in msg.topic or + "openWB/set/system/update_config_completed" in msg.topic): self._validate_value(msg, bool) elif "openWB/set/system/version" in msg.topic: self._validate_value(msg, str) diff --git a/packages/helpermodules/subdata.py b/packages/helpermodules/subdata.py index dead6c91cb..e6f2dc0cf7 100644 --- a/packages/helpermodules/subdata.py +++ b/packages/helpermodules/subdata.py @@ -79,6 +79,7 @@ def __init__(self, event_time_charging_plan: threading.Event, event_start_internal_chargepoint: threading.Event, event_stop_internal_chargepoint: threading.Event, + event_update_config_completed: threading.Event, event_soc: threading.Event, event_jobs_running: threading.Event): self.event_ev_template = event_ev_template @@ -94,6 +95,7 @@ def __init__(self, self.event_time_charging_plan = event_time_charging_plan self.event_start_internal_chargepoint = event_start_internal_chargepoint self.event_stop_internal_chargepoint = event_stop_internal_chargepoint + self.event_update_config_completed = event_update_config_completed self.event_soc = event_soc self.event_jobs_running = event_jobs_running self.heartbeat = False @@ -739,6 +741,10 @@ def process_system_topic(self, client: mqtt.Client, var: dict, msg: mqtt.MQTTMes if decode_payload(msg.payload) != "": Pub().pub("openWB/system/subdata_initialized", "") self.event_subdata_initialized.set() + elif "openWB/system/update_config_completed" == msg.topic: + if decode_payload(msg.payload) != "": + Pub().pub("openWB/system/update_config_completed", "") + self.event_update_config_completed.set() elif "openWB/system/debug_level" == msg.topic: logging.getLogger().setLevel(decode_payload(msg.payload)) self.set_json_payload(var["system"].data, msg) diff --git a/packages/helpermodules/update_config.py b/packages/helpermodules/update_config.py index 347cfedc3d..a1052cb2c3 100644 --- a/packages/helpermodules/update_config.py +++ b/packages/helpermodules/update_config.py @@ -445,6 +445,7 @@ def update(self): self.__pub_missing_defaults() self.__update_version() self.__solve_breaking_changes() + Pub().pub("openWB/set/system/update_config_completed", True) except Exception: log.exception("Fehler beim Prüfen des Brokers.") diff --git a/packages/main.py b/packages/main.py index 873447ef44..aad5df29b3 100755 --- a/packages/main.py +++ b/packages/main.py @@ -185,6 +185,7 @@ def schedule_jobs(): event_command_completed = threading.Event() event_command_completed.set() event_subdata_initialized = threading.Event() + event_update_config_completed = threading.Event() event_jobs_running = threading.Event() event_jobs_running.set() prep = prepare.Prepare() @@ -199,6 +200,7 @@ def schedule_jobs(): event_scheduled_charging_plan, event_time_charging_plan, general_internal_chargepoint_handler.event_start, general_internal_chargepoint_handler.event_stop, + event_update_config_completed, event_soc, event_jobs_running) comm = command.Command(event_command_completed) @@ -219,7 +221,7 @@ def schedule_jobs(): t_comm.start() t_internal_chargepoint.start() # Warten, damit subdata Zeit hat, alle Topics auf dem Broker zu empfangen. - time.sleep(5) + event_update_config_completed.wait(300) Pub().pub("openWB/set/system/boot_done", True) Path(Path(__file__).resolve().parents[1]/"ramdisk"/"bootdone").touch() schedule_jobs() From 6a3421c75054aa0aa14a02059c0873424abdb3cd Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 2 Aug 2023 14:57:12 +0200 Subject: [PATCH 2/2] fix test --- packages/helpermodules/command_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/helpermodules/command_test.py b/packages/helpermodules/command_test.py index 51450cfe8c..dade5c3324 100644 --- a/packages/helpermodules/command_test.py +++ b/packages/helpermodules/command_test.py @@ -16,7 +16,7 @@ @pytest.fixture def subdata_fixture() -> None: - SubData(*([Mock()]*15)) + SubData(*([Mock()]*16)) SubData.cp_data = {"cp0": Mock(spec=ChargepointStateUpdate, chargepoint=Mock( spec=Chargepoint, chargepoint_module=Mock(spec=ChargepointModulePro)))}