current run socketIO

This commit is contained in:
derlole
2025-04-17 05:15:10 +00:00
parent 9aaf4960c6
commit 58f9d3b451
3 changed files with 70 additions and 28 deletions

View File

@@ -25,6 +25,6 @@ def fetch_command():
pending_command = None pending_command = None
return jsonify({'befehl': cmd}) return jsonify({'befehl': cmd})
return jsonify({'befehl': None}) return jsonify({'befehl': None})
# @unsecure.route('/test') @unsecure.route('/test')
# def test(): def test():
# return render_template('test.html') return render_template('test.html')

View File

@@ -1,35 +1,74 @@
import eventlet # import eventlet
eventlet.monkey_patch() # Das sollte ganz oben sein, um sicherzustellen, dass eventlet alles patcht # 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
# 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)
# 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-Broker-Adresse
# mqtt_client.subscribe("lires/esp1/status")
# mqtt_client.loop_start()
# @socketio.on("send_to_esp")
# def handle_send(data):
# mqtt_client.publish("lires/esp1/control", data)
# app.register_blueprint(unsecure)
# if __name__ == '__main__':
# socketio.run(app, host="0.0.0.0", port=3060)
from flask import Flask
from flask_socketio import SocketIO from flask_socketio import SocketIO
import paho.mqtt.client as mqtt
from routes.unsecure_routes import unsecure 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="*") app.config['SECRET_KEY'] = 'super-secret-key' # beliebig ändern
socketio = SocketIO(app, cors_allowed_origins="*", async_mode='threading')
# MQTT Setup
mqtt_client = mqtt.Client(protocol=mqtt.MQTTv5)
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-Broker-Adresse
mqtt_client.subscribe("lires/esp1/status")
mqtt_client.loop_start()
@socketio.on("send_to_esp")
def handle_send(data):
mqtt_client.publish("lires/esp1/control", data)
# Blueprint registrieren
app.register_blueprint(unsecure) app.register_blueprint(unsecure)
# Simuliere regelmäßige Daten-Updates
import threading
import time
def send_data():
counter = 0
while True:
print(f"Sending data: {counter}")
data = {
'test': 'Live-Daten',
'status': 'OK',
'counter': counter
}
socketio.emit('update_data', data)
counter += 1
time.sleep(2) # alle 2 Sekunden neue Daten
# Hintergrund-Thread starten
thread = threading.Thread(target=send_data)
thread.daemon = True
thread.start()
if __name__ == '__main__': if __name__ == '__main__':
socketio.run(app, host="0.0.0.0", port=3060) socketio.run(app, host='0.0.0.0', port=5000)

View File

@@ -11,6 +11,7 @@
<p><strong>Status:</strong> <span id="status"></span></p> <p><strong>Status:</strong> <span id="status"></span></p>
<p><strong>Counter:</strong> <span id="counter"></span></p> <p><strong>Counter:</strong> <span id="counter"></span></p>
<script src="https://cdn.socket.io/4.6.1/socket.io.min.js"></script>
<script> <script>
const socket = io(); const socket = io();
@@ -18,8 +19,10 @@
document.getElementById('test').textContent = data.test; document.getElementById('test').textContent = data.test;
document.getElementById('status').textContent = data.status; document.getElementById('status').textContent = data.status;
document.getElementById('counter').textContent = data.counter; document.getElementById('counter').textContent = data.counter;
console.log('Neue Daten:', data);
}); });
</script> </script>
</body>
</html>
</body> </body>
</html> </html>