From 17d4de36c49220fed38e204fa5ad4f8fa086a480 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Sat, 25 Jan 2025 14:57:11 +0100 Subject: [PATCH] Improved MQTT error handling --- sbapp/sideband/mqtt.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sbapp/sideband/mqtt.py b/sbapp/sideband/mqtt.py index 6131d1c..85a0742 100644 --- a/sbapp/sideband/mqtt.py +++ b/sbapp/sideband/mqtt.py @@ -38,8 +38,8 @@ class MQTT(): try: if len(self.waiting_msgs) > 0: RNS.log(f"Processing {len(self.waiting_msgs)} MQTT messages", RNS.LOG_DEBUG) - self.process_queue() - RNS.log("All MQTT messages processed", RNS.LOG_DEBUG) + if self.process_queue(): + RNS.log("All MQTT messages processed", RNS.LOG_DEBUG) except Exception as e: RNS.log("An error occurred while running MQTT scheduler jobs: {e}", RNS.LOG_ERROR) @@ -82,7 +82,11 @@ class MQTT(): def process_queue(self): with self.queue_lock: - self.connect() + try: + self.connect() + except Exception as e: + RNS.log(f"An error occurred while connecting to MQTT server: {e}", RNS.LOG_ERROR) + return False try: while len(self.waiting_msgs) > 0: @@ -100,6 +104,7 @@ class MQTT(): RNS.trace_exception(e) self.disconnect() + return True def handle(self, context_dest, telemetry): remote_telemeter = Telemeter.from_packed(telemetry)