From 8be5130cffa19e4bcddb0167e58dda0bfe5a89e7 Mon Sep 17 00:00:00 2001 From: derlole <122916573+derlole@users.noreply.github.com> Date: Wed, 16 Apr 2025 13:35:09 +0000 Subject: [PATCH] mqtt_v2 --- server.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/server.py b/server.py index 2a95b58..fdd54b7 100644 --- a/server.py +++ b/server.py @@ -3,7 +3,7 @@ # from flask_socketio import SocketIO, emit # import threading # import time -from routes.unsecure_routes import unsecure + # app = Flask(__name__, static_url_path='/unsecure/static') # # socketio = SocketIO(app, cors_allowed_origins="*") @@ -32,10 +32,13 @@ from routes.unsecure_routes import unsecure # # threading.Thread(target=monitor_changes).start() # 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 from flask import Flask, render_template from flask_socketio import SocketIO import paho.mqtt.client as mqtt +from routes.unsecure_routes import unsecure app = Flask(__name__, static_url_path='/unsecure/static') socketio = SocketIO(app, cors_allowed_origins="*") @@ -43,23 +46,27 @@ socketio = SocketIO(app, cors_allowed_origins="*") # MQTT Setup mqtt_client = mqtt.Client() +# 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}) mqtt_client.on_message = on_mqtt_message -mqtt_client.connect("localhost", 1883) -mqtt_client.subscribe("lires/esp1/status") -mqtt_client.loop_start() +mqtt_client.connect("localhost", 1883) # MQTT-Broker-Adresse +mqtt_client.subscribe("lires/esp1/status") # MQTT-Topic, das abonniert werden soll +mqtt_client.loop_start() # Starten des MQTT-Client-Loops in einem separaten Thread -# Socket.IO → MQTT +# Socket.IO → MQTT: Empfangene Daten von Socket.IO an MQTT senden @socketio.on("send_to_esp") def handle_send(data): - mqtt_client.publish("lires/esp1/control", data) + mqtt_client.publish("lires/esp1/control", data) # MQTT-Message senden +# Blueprint registrieren app.register_blueprint(unsecure) +# Starten der Flask-SocketIO-Anwendung if __name__ == '__main__': + # Verwende socketio.run() statt app.run() für asynchrone WebSocket-Kommunikation socketio.run(app, host="0.0.0.0", port=3060) -