Files
gimmiCoffee/server.py
2025-04-16 13:49:38 +00:00

77 lines
2.5 KiB
Python

# from flask import Flask
# from flask_socketio import SocketIO, emit
# import threading
# import time
# app = Flask(__name__, static_url_path='/unsecure/static')
# # socketio = SocketIO(app, cors_allowed_origins="*")
# # data = {
# # "test": 1,
# # "status": "online",
# # "counter": 0
# # }
# # def monitor_changes():
# # while True:
# # time.sleep(5) # alle 5 Sekunden neue Daten senden
# # data["test"] += 1
# # data["counter"] += 5
# # data["status"] = "busy" if data["counter"] % 2 == 0 else "idle"
# # print("Neue Daten gesendet:", data)
# # socketio.emit('update_data', data)
# # Blueprint registrieren
# app.register_blueprint(unsecure)
# if __name__ == '__main__':
# # threading.Thread(target=monitor_changes).start()
# app.run(host='0.0.0.0', port=3060)
import eventlet
eventlet.monkey_patch() # Stellt sicher, dass eventlet die nötigen Patches vornimmt
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="*")
# MQTT Setup
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}")
# 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
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: 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-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)