mqtt_v2
This commit is contained in:
21
server.py
21
server.py
@@ -3,7 +3,7 @@
|
|||||||
# from flask_socketio import SocketIO, emit
|
# from flask_socketio import SocketIO, emit
|
||||||
# import threading
|
# import threading
|
||||||
# import time
|
# import time
|
||||||
from routes.unsecure_routes import unsecure
|
|
||||||
|
|
||||||
# app = Flask(__name__, static_url_path='/unsecure/static')
|
# app = Flask(__name__, static_url_path='/unsecure/static')
|
||||||
# # socketio = SocketIO(app, cors_allowed_origins="*")
|
# # socketio = SocketIO(app, cors_allowed_origins="*")
|
||||||
@@ -32,10 +32,13 @@ from routes.unsecure_routes import unsecure
|
|||||||
# # threading.Thread(target=monitor_changes).start()
|
# # threading.Thread(target=monitor_changes).start()
|
||||||
# app.run(host='0.0.0.0', port=3060)
|
# 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 import Flask, render_template
|
||||||
from flask_socketio import SocketIO
|
from flask_socketio import SocketIO
|
||||||
import paho.mqtt.client as mqtt
|
import paho.mqtt.client as mqtt
|
||||||
|
from routes.unsecure_routes import unsecure
|
||||||
|
|
||||||
app = Flask(__name__, static_url_path='/unsecure/static')
|
app = Flask(__name__, static_url_path='/unsecure/static')
|
||||||
socketio = SocketIO(app, cors_allowed_origins="*")
|
socketio = SocketIO(app, cors_allowed_origins="*")
|
||||||
@@ -43,23 +46,27 @@ socketio = SocketIO(app, cors_allowed_origins="*")
|
|||||||
# MQTT Setup
|
# MQTT Setup
|
||||||
mqtt_client = mqtt.Client()
|
mqtt_client = mqtt.Client()
|
||||||
|
|
||||||
|
# Funktion für den Empfang von MQTT-Nachrichten
|
||||||
def on_mqtt_message(client, userdata, msg):
|
def on_mqtt_message(client, userdata, msg):
|
||||||
payload = msg.payload.decode()
|
payload = msg.payload.decode()
|
||||||
print(f"[MQTT] {msg.topic}: {payload}")
|
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})
|
socketio.emit("esp_update", {"topic": msg.topic, "payload": payload})
|
||||||
|
|
||||||
mqtt_client.on_message = on_mqtt_message
|
mqtt_client.on_message = on_mqtt_message
|
||||||
mqtt_client.connect("localhost", 1883)
|
mqtt_client.connect("localhost", 1883) # MQTT-Broker-Adresse
|
||||||
mqtt_client.subscribe("lires/esp1/status")
|
mqtt_client.subscribe("lires/esp1/status") # MQTT-Topic, das abonniert werden soll
|
||||||
mqtt_client.loop_start()
|
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")
|
@socketio.on("send_to_esp")
|
||||||
def handle_send(data):
|
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)
|
app.register_blueprint(unsecure)
|
||||||
|
|
||||||
|
# Starten der Flask-SocketIO-Anwendung
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
# Verwende socketio.run() statt app.run() für asynchrone WebSocket-Kommunikation
|
||||||
socketio.run(app, host="0.0.0.0", port=3060)
|
socketio.run(app, host="0.0.0.0", port=3060)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user