test mqtt

This commit is contained in:
derlole
2025-04-16 13:21:10 +00:00
parent 92212ba8f9
commit f2287a9dba
3 changed files with 155 additions and 94 deletions

View File

@@ -1,33 +1,65 @@
from flask import Flask # from flask import Flask
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 from routes.unsecure_routes import unsecure
# 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)
from flask import Flask, render_template
from flask_socketio import SocketIO
import paho.mqtt.client as mqtt
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="*")
# data = { # MQTT Setup
# "test": 1, mqtt_client = mqtt.Client()
# "status": "online",
# "counter": 0
# }
# def monitor_changes(): def on_mqtt_message(client, userdata, msg):
# while True: payload = msg.payload.decode()
# time.sleep(5) # alle 5 Sekunden neue Daten senden print(f"[MQTT] {msg.topic}: {payload}")
# data["test"] += 1 socketio.emit("esp_update", {"topic": msg.topic, "payload": payload})
# data["counter"] += 5
# data["status"] = "busy" if data["counter"] % 2 == 0 else "idle"
# print("Neue Daten gesendet:", data) mqtt_client.on_message = on_mqtt_message
# socketio.emit('update_data', data) mqtt_client.connect("localhost", 1883)
mqtt_client.subscribe("lires/esp1/status")
mqtt_client.loop_start()
# Socket.IO → MQTT
@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)
if __name__ == '__main__': if __name__ == '__main__':
# threading.Thread(target=monitor_changes).start() socketio.run(app, host="0.0.0.0", port=3060)
app.run(host='0.0.0.0', port=3060)

84
templates/dev/index.html Normal file
View File

@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>gimmiCoffee</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<header>
<div class="site-title">gimmiCoffee</div>
<div class="user-actions">
<span class="username">Max Mustermann</span>
<a href="/logout" class="logout">Logout</a>
</div>
</header>
<main class="main-container">
<section class="left">
<div class="info">ESP-Conn Infos</div>
<div class="action-button"> MAKE ME A COFFEE...</div>
<div class="button-grid">
<div class="grid-button">
<div class="top-left-text">Maschiene</div>
<div class="center-number">AUS</div>
</div>
<div class="grid-button">
<div class="top-left-text">Maschiene</div>
<div class="center-number">Nicht Bereit</div>
</div>
<div class="grid-button">
<div class="top-left-text">irgendwas kommt hier nocht</div>
<div class="center-number">XXX</div>
</div>
<div class="grid-button">
<div class="top-left-text">Fehler</div>
<div class="center-number">Wasser leer?</div>
</div>
<div class="grid-button">
<div class="top-left-text">Wasser</div>
<div class="center-number">Aufgefüllt</div>
</div>
<div class="grid-button">
<div class="top-left-text">Bohnen</div>
<div class="center-number">Nachgefüllt</div>
</div>
</div>
</section>
<section class="right stats-box">
<h2 class="stats-title">Statistiken</h2>
<div class="clickable">
<div class="top-left-text">Coffee made</div>
<div class="center-number">XXX</div>
</div>
<div class="clickable">
<div class="top-left-text">Bohnen Füllstand</div>
<div class="center-number">XX%</div>
</div>
<div class="clickable">
<div class="top-left-text">Wasser Füllstand</div>
<div class="center-number">XX%</div>
</div>
<div class="clickable">
<div class="top-left-text">Bohnen nachgefüllt</div>
<div class="center-number">XX</div>
</div>
<div class="clickable">
<div class="top-left-text">Wasser nachgefüllt</div>
<div class="center-number">XX</div>
</div>
</section>
</main>
</body>
</html>
<!--<script src="{{ url_for('static', filename='script.js') }}"></script>-->

View File

@@ -1,84 +1,29 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ESP Kontrolle</title>
<title>gimmiCoffee</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head> </head>
<body> <body>
<header> <h1>ESP Live-Daten</h1>
<div class="site-title">gimmiCoffee</div> <div id="status">Warte auf Daten...</div>
<div class="user-actions"> <br>
<span class="username">Max Mustermann</span> <input id="befehl" type="text" placeholder="z.B. LED ON" />
<a href="/logout" class="logout">Logout</a> <button onclick="senden()">Senden</button>
</div>
</header>
<main class="main-container"> <script src="https://cdn.socket.io/4.6.1/socket.io.min.js"></script>
<script>
const socket = io();
<section class="left"> socket.on("esp_update", (data) => {
<div class="info">ESP-Conn Infos</div> document.getElementById("status").innerText =
<div class="action-button"> MAKE ME A COFFEE...</div> `${data.topic}: ${data.payload}`;
<div class="button-grid"> });
<div class="grid-button">
<div class="top-left-text">Maschiene</div>
<div class="center-number">AUS</div>
</div>
<div class="grid-button">
<div class="top-left-text">Maschiene</div>
<div class="center-number">Nicht Bereit</div>
</div>
<div class="grid-button">
<div class="top-left-text">irgendwas kommt hier nocht</div>
<div class="center-number">XXX</div>
</div>
<div class="grid-button">
<div class="top-left-text">Fehler</div>
<div class="center-number">Wasser leer?</div>
</div>
<div class="grid-button">
<div class="top-left-text">Wasser</div>
<div class="center-number">Aufgefüllt</div>
</div>
<div class="grid-button">
<div class="top-left-text">Bohnen</div>
<div class="center-number">Nachgefüllt</div>
</div>
</div>
</section>
<section class="right stats-box"> function senden() {
<h2 class="stats-title">Statistiken</h2> const val = document.getElementById("befehl").value;
<div class="clickable"> socket.emit("send_to_esp", val);
<div class="top-left-text">Coffee made</div> }
<div class="center-number">XXX</div> </script>
</div>
<div class="clickable">
<div class="top-left-text">Bohnen Füllstand</div>
<div class="center-number">XX%</div>
</div>
<div class="clickable">
<div class="top-left-text">Wasser Füllstand</div>
<div class="center-number">XX%</div>
</div>
<div class="clickable">
<div class="top-left-text">Bohnen nachgefüllt</div>
<div class="center-number">XX</div>
</div>
<div class="clickable">
<div class="top-left-text">Wasser nachgefüllt</div>
<div class="center-number">XX</div>
</div>
</section>
</main>
</body> </body>
</html> </html>
<!--<script src="{{ url_for('static', filename='script.js') }}"></script>-->