From 74f185ce7bea53aaf93c09cb6366cfa953f119af Mon Sep 17 00:00:00 2001 From: Lloyd Date: Tue, 25 Nov 2025 09:07:20 +0000 Subject: [PATCH] start status heartbeat thread upon successful connection preventing race con --- repeater/data_acquisition/letsmesh_handler.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/repeater/data_acquisition/letsmesh_handler.py b/repeater/data_acquisition/letsmesh_handler.py index a86ef89..208ef34 100644 --- a/repeater/data_acquisition/letsmesh_handler.py +++ b/repeater/data_acquisition/letsmesh_handler.py @@ -138,6 +138,13 @@ class MeshCoreToMqttJwtPusher: self.publish_status( state="online", origin=self.node_name, radio_config=self.radio_config ) + + # connected start heartbeat thread + if self.status_interval > 0 and not self._status_task: + import threading + self._status_task = threading.Thread(target=self._status_heartbeat_loop, daemon=True) + self._status_task.start() + logging.info(f"Started status heartbeat (interval: {self.status_interval}s)") else: logging.error(f"Failed with code {rc}") @@ -172,14 +179,6 @@ class MeshCoreToMqttJwtPusher: self.client.loop_start() self._connect_time = datetime.now(UTC) - # Start status heartbeat if interval is set - if self.status_interval > 0: - import threading - - self._status_task = threading.Thread(target=self._status_heartbeat_loop, daemon=True) - self._status_task.start() - logging.info(f"Started status heartbeat (interval: {self.status_interval}s)") - def disconnect(self): self._running = False # Publish offline status before disconnecting