test mqtt
This commit is contained in:
74
server.py
74
server.py
@@ -1,33 +1,65 @@
|
||||
|
||||
from flask import Flask
|
||||
from flask_socketio import SocketIO, emit
|
||||
import threading
|
||||
import time
|
||||
# from flask import Flask
|
||||
# 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="*")
|
||||
|
||||
# # 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')
|
||||
# socketio = SocketIO(app, cors_allowed_origins="*")
|
||||
socketio = SocketIO(app, cors_allowed_origins="*")
|
||||
|
||||
# data = {
|
||||
# "test": 1,
|
||||
# "status": "online",
|
||||
# "counter": 0
|
||||
# }
|
||||
# MQTT Setup
|
||||
mqtt_client = mqtt.Client()
|
||||
|
||||
# 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"
|
||||
def on_mqtt_message(client, userdata, msg):
|
||||
payload = msg.payload.decode()
|
||||
print(f"[MQTT] {msg.topic}: {payload}")
|
||||
socketio.emit("esp_update", {"topic": msg.topic, "payload": payload})
|
||||
|
||||
# print("Neue Daten gesendet:", data)
|
||||
# socketio.emit('update_data', data)
|
||||
mqtt_client.on_message = on_mqtt_message
|
||||
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)
|
||||
|
||||
if __name__ == '__main__':
|
||||
# threading.Thread(target=monitor_changes).start()
|
||||
app.run(host='0.0.0.0', port=3060)
|
||||
socketio.run(app, host="0.0.0.0", port=3060)
|
||||
|
||||
|
||||
84
templates/dev/index.html
Normal file
84
templates/dev/index.html
Normal 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>-->
|
||||
@@ -1,84 +1,29 @@
|
||||
|
||||
<!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') }}">
|
||||
<title>ESP Kontrolle</title>
|
||||
</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>
|
||||
<h1>ESP Live-Daten</h1>
|
||||
<div id="status">Warte auf Daten...</div>
|
||||
<br>
|
||||
<input id="befehl" type="text" placeholder="z.B. LED ON" />
|
||||
<button onclick="senden()">Senden</button>
|
||||
|
||||
<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">
|
||||
<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>
|
||||
socket.on("esp_update", (data) => {
|
||||
document.getElementById("status").innerText =
|
||||
`${data.topic}: ${data.payload}`;
|
||||
});
|
||||
|
||||
<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>
|
||||
function senden() {
|
||||
const val = document.getElementById("befehl").value;
|
||||
socket.emit("send_to_esp", val);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--<script src="{{ url_for('static', filename='script.js') }}"></script>-->
|
||||
|
||||
Reference in New Issue
Block a user