From 61e0baa66aa622b129b5f50fd132bab49acac5a0 Mon Sep 17 00:00:00 2001 From: derlole <122916573+derlole@users.noreply.github.com> Date: Wed, 16 Apr 2025 13:49:38 +0000 Subject: [PATCH] mqtt_v3 --- server.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server.py b/server.py index fdd54b7..9f0d018 100644 --- a/server.py +++ b/server.py @@ -33,7 +33,7 @@ # app.run(host='0.0.0.0', port=3060) import eventlet -eventlet.monkey_patch() # Das sollte ganz oben sein, um sicherzustellen, dass eventlet alles patcht +eventlet.monkey_patch() # Stellt sicher, dass eventlet die nötigen Patches vornimmt from flask import Flask, render_template from flask_socketio import SocketIO @@ -44,14 +44,18 @@ app = Flask(__name__, static_url_path='/unsecure/static') socketio = SocketIO(app, cors_allowed_origins="*") # MQTT Setup -mqtt_client = mqtt.Client() +mqtt_client = mqtt.Client(protocol=mqtt.MQTTv5) # Funktion für den Empfang von MQTT-Nachrichten def on_mqtt_message(client, userdata, msg): payload = msg.payload.decode() print(f"[MQTT] {msg.topic}: {payload}") - # Sende die erhaltenen MQTT-Daten über WebSocket an alle verbundenen Clients - socketio.emit("esp_update", {"topic": msg.topic, "payload": payload}) + # Stelle sicher, dass das Emitten im richtigen Kontext passiert + socketio.start_background_task(target=emit_mqtt_data, topic=msg.topic, payload=payload) + +def emit_mqtt_data(topic, payload): + # Hier wird die MQTT-Nachricht über Socket.IO an alle verbundenen Clients gesendet + socketio.emit("esp_update", {"topic": topic, "payload": payload}) mqtt_client.on_message = on_mqtt_message mqtt_client.connect("localhost", 1883) # MQTT-Broker-Adresse