MQTT Projekt Umsetzung: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 2: | Zeile 2: | ||
==Grundaufbau== | ==Grundaufbau== | ||
{{#drawio:mqtt-plan1}} | {{#drawio:mqtt-plan1}} | ||
| − | |||
==Connectivity== | ==Connectivity== | ||
===ssh=== | ===ssh=== | ||
| Zeile 17: | Zeile 16: | ||
;aktor | ;aktor | ||
*https://aktor.dkbi.com | *https://aktor.dkbi.com | ||
| − | |||
==Unverschlüsselt ohne Passwort== | ==Unverschlüsselt ohne Passwort== | ||
===mqtt=== | ===mqtt=== | ||
| Zeile 39: | Zeile 37: | ||
===Aktor=== | ===Aktor=== | ||
Der Aktor '''abonniert (subscribed)''' die Nachrichten und reagiert darauf. | Der Aktor '''abonniert (subscribed)''' die Nachrichten und reagiert darauf. | ||
| − | *mosquitto_sub -h mqtt. | + | *mosquitto_sub -h mqtt.dkbi.com -t test |
===Sensor=== | ===Sensor=== | ||
Der Sensor '''sendet (published)''' die Nachrichten an das Topic. | Der Sensor '''sendet (published)''' die Nachrichten an das Topic. | ||
| − | *mosquitto_pub -h mqtt. | + | *mosquitto_pub -h mqtt.dkbi.com -t test -m "Hello World" |
| − | *mosquitto_pub -h mqtt. | + | *mosquitto_pub -h mqtt.dkbi.com -t test -m "2 Nachricht" |
===kali=== | ===kali=== | ||
Hier kann man auf Wireshark mitschneiden. Der Text ist Hexadezimal codiert. | Hier kann man auf Wireshark mitschneiden. Der Text ist Hexadezimal codiert. | ||
| Zeile 51: | Zeile 49: | ||
*echo -n "536368616c7465206469652054757262696e656e20766f6d2041746f6d6b726166747765726b20617573" | xxd -r -p | *echo -n "536368616c7465206469652054757262696e656e20766f6d2041746f6d6b726166747765726b20617573" | xxd -r -p | ||
Schalte die Turbinen vom Atomkraftwerk aus | Schalte die Turbinen vom Atomkraftwerk aus | ||
| − | |||
==Node.js Umsetzung== | ==Node.js Umsetzung== | ||
===Einführung in das Node.js-MQTT-Projekt=== | ===Einführung in das Node.js-MQTT-Projekt=== | ||
Dieses Projekt dient zur steuerbaren MQTT-basierten Hausautomation mit Node.js und Mosquitto als MQTT-Broker. Es ermöglicht das Schalten und Überwachen von Geräten wie Lichtquellen und Türschlössern über eine Web-Oberfläche. | Dieses Projekt dient zur steuerbaren MQTT-basierten Hausautomation mit Node.js und Mosquitto als MQTT-Broker. Es ermöglicht das Schalten und Überwachen von Geräten wie Lichtquellen und Türschlössern über eine Web-Oberfläche. | ||
===Hauptbestandteile des Projekts=== | ===Hauptbestandteile des Projekts=== | ||
| − | Mosquitto MQTT-Broker | + | ;Mosquitto MQTT-Broker |
| − | + | :Verwaltung der Nachrichten zwischen Sensoren und Aktoren. Zunächst ohne Authentifizierung, später mit Benutzer/Passwort und TLS. | |
| − | Zunächst ohne Authentifizierung, später mit Benutzer/Passwort und TLS. | + | ;Node.js-Backend mit Express.js |
| − | Node.js-Backend mit Express.js | + | :Verbindet sich als MQTT-Client zum Broker. Abonniert Status-Topics und aktualisiert den Gerätestatus. Bietet eine REST-API, um den Status abzufragen und Geräte zu steuern. |
| − | + | ;Web-Interface | |
| − | Abonniert Status-Topics und aktualisiert den Gerätestatus. | + | :Zeigt den aktuellen Gerätestatus in einer einfachen Oberfläche. Ermöglicht das Schalten der Geräte per Klick. Aktualisiert sich automatisch über API-Anfragen. |
| − | Bietet eine REST-API, um den Status abzufragen und Geräte zu steuern. | ||
| − | Web-Interface | ||
| − | |||
| − | Ermöglicht das Schalten der Geräte per Klick. | ||
| − | Aktualisiert sich automatisch über API-Anfragen. | ||
===Schrittweise Absicherung=== | ===Schrittweise Absicherung=== | ||
Das Projekt startet mit einer offenen MQTT-Verbindung, wird dann um Benutzer/Passwort ergänzt und am Ende mit TLS-Verschlüsselung abgesichert. | Das Projekt startet mit einer offenen MQTT-Verbindung, wird dann um Benutzer/Passwort ergänzt und am Ende mit TLS-Verschlüsselung abgesichert. | ||
| − | |||
==Node.js konkret== | ==Node.js konkret== | ||
===Sensor=== | ===Sensor=== | ||
| Zeile 85: | Zeile 76: | ||
====Zugriff==== | ====Zugriff==== | ||
*Siehe oben per https | *Siehe oben per https | ||
| − | |||
===Aktor=== | ===Aktor=== | ||
;Verzeichnis | ;Verzeichnis | ||
Version vom 20. Juni 2026, 09:34 Uhr
Stufe 1
Grundaufbau
Connectivity
ssh
Zugriff von einem internen Client
- mqtt
- ssh kit@mqtt.dkbi.com
- sensor
- ssh kit@sensor.dkbi.com
- aktor
- ssh kit@aktor.dkbi.com
http
- sensor
- aktor
Unverschlüsselt ohne Passwort
mqtt
- Konfiguration kopieren
- sudo cp -v /etc/mosquitto/conf.d/defaults.conf.unverschlüsselt /etc/mosquitto/conf.d/defaults.conf
- Konfigurationsdatei
# Öffnet den MQTT-Broker auf Port 1883 und bindet ihn an alle verfügbaren Netzwerkinterfaces. listener 1883 0.0.0.0 # Erlaubt anonyme Verbindungen, d. h. ohne Benutzername und Passwort. allow_anonymous true # Aktiviert alle Log-Typen für eine detaillierte Protokollierung. log_type all # Zeigt Verbindungs- und Trennungsmeldungen von Clients im Log an. connection_messages true
- Restarten
- sudo systemctl restart mosquitto.service
- Checken
- systemctl status mosquitto.service
Aktor
Der Aktor abonniert (subscribed) die Nachrichten und reagiert darauf.
- mosquitto_sub -h mqtt.dkbi.com -t test
Sensor
Der Sensor sendet (published) die Nachrichten an das Topic.
- mosquitto_pub -h mqtt.dkbi.com -t test -m "Hello World"
- mosquitto_pub -h mqtt.dkbi.com -t test -m "2 Nachricht"
kali
Hier kann man auf Wireshark mitschneiden. Der Text ist Hexadezimal codiert.
- Beispiel
- 536368616c7465206469652054757262696e656e20766f6d2041746f6d6b726166747765726b20617573
- Die kann man mit Follow TCP Stream oder auf der Konsole decodieren.
- echo -n "536368616c7465206469652054757262696e656e20766f6d2041746f6d6b726166747765726b20617573" | xxd -r -p
Schalte die Turbinen vom Atomkraftwerk aus
Node.js Umsetzung
Einführung in das Node.js-MQTT-Projekt
Dieses Projekt dient zur steuerbaren MQTT-basierten Hausautomation mit Node.js und Mosquitto als MQTT-Broker. Es ermöglicht das Schalten und Überwachen von Geräten wie Lichtquellen und Türschlössern über eine Web-Oberfläche.
Hauptbestandteile des Projekts
- Mosquitto MQTT-Broker
- Verwaltung der Nachrichten zwischen Sensoren und Aktoren. Zunächst ohne Authentifizierung, später mit Benutzer/Passwort und TLS.
- Node.js-Backend mit Express.js
- Verbindet sich als MQTT-Client zum Broker. Abonniert Status-Topics und aktualisiert den Gerätestatus. Bietet eine REST-API, um den Status abzufragen und Geräte zu steuern.
- Web-Interface
- Zeigt den aktuellen Gerätestatus in einer einfachen Oberfläche. Ermöglicht das Schalten der Geräte per Klick. Aktualisiert sich automatisch über API-Anfragen.
Schrittweise Absicherung
Das Projekt startet mit einer offenen MQTT-Verbindung, wird dann um Benutzer/Passwort ergänzt und am Ende mit TLS-Verschlüsselung abgesichert.
Node.js konkret
Sensor
- Verzeichnis
- /usr/local/control-switch
Wichtige Dateien
- JavaScript Datei
- server.js
- HTML Datei
- index.html
- Die Umgebungsvariablen
- .env
- Service Unit
- sudo systemctl restart control-switch.service
Zugriff
- Siehe oben per https
Aktor
- Verzeichnis
- /usr/local/control
Wichtige Dateien
- JavaScript Datei
- server.js
- HTML Datei
- index.html
- Die Umgebungsvariablen
- .env
- Service Unit
- sudo systemctl restart control.service
Zugriff
- Siehe oben per https
