MQTT Projekt I.: Unterschied zwischen den Versionen
| (21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 9: | Zeile 9: | ||
;aktor | ;aktor | ||
*ssh xinux@opnsense -p 9824 | *ssh xinux@opnsense -p 9824 | ||
| + | ==http== | ||
| + | ;sensor | ||
| + | *http://opnsense:9723 | ||
| + | ;aktor | ||
| + | *http://opnsense:9724 | ||
| + | |||
| + | =Unverschlüsselt ohne Passwort= | ||
| + | ==mqtt== | ||
| + | ;Konfiguration kopieren | ||
| + | *cp -v /etc/mosquitto/conf.d/defaults.conf.unverschlüsselt /etc/mosquitto/conf.d/defaults.conf | ||
| + | ;Konfigurationsdatei | ||
| + | <pre> | ||
| + | # Ö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 | ||
| + | </pre> | ||
| + | ;Restarten | ||
| + | *systemctl restart mosquitto.service | ||
| + | ;Checken | ||
| + | *systemctl status mosquitto.service | ||
| + | |||
| + | ==Aktor== | ||
| + | Der Aktor '''abonniert (subscribed)''' die Nachrichten und reagiert darauf. | ||
| + | *mosquitto_sub -h mqtt.lab.intern -t test | ||
| + | |||
| + | ==Sensor== | ||
| + | Der Sensor '''sendet (published)''' die Nachrichten an das Topic. | ||
| + | *mosquitto_pub -h mqtt.lab.intern -t test -m "Hello World" | ||
| + | *mosquitto_pub -h mqtt.lab.intern -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=== | ||
| + | ;Java Sript Datei | ||
| + | *server.js | ||
| + | ;HTML Datei | ||
| + | *index.html | ||
| + | ;Die Umgebungsvariablen | ||
| + | *.env | ||
| + | ;Service Unit | ||
| + | *systemctl restart control-switch.service | ||
| + | ==Zugriff== | ||
| + | *http://opnsense:9723/ | ||
| + | ==Aktor== | ||
| + | ;Verzeichnis | ||
| + | */usr/local/control | ||
| + | ===Wichtige Dateien=== | ||
| + | ;Java Sript Datei | ||
| + | *server.js | ||
| + | ;HTML Datei | ||
| + | *index.html | ||
| + | ;Die Umgebungsvariablen | ||
| + | *.env | ||
| + | ;Service Unit | ||
| + | *systemctl restart control.service | ||
| + | ==Zugriff== | ||
| + | *http://opnsense:9724/ | ||
Aktuelle Version vom 28. Februar 2025, 13:40 Uhr
Grundaufbau
Connectivity
ssh
- mqtt
- ssh xinux@opnsense -p 9822
- sensor
- ssh xinux@opnsense -p 9823
- aktor
- ssh xinux@opnsense -p 9824
http
- sensor
- aktor
Unverschlüsselt ohne Passwort
mqtt
- Konfiguration kopieren
- 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
- systemctl restart mosquitto.service
- Checken
- systemctl status mosquitto.service
Aktor
Der Aktor abonniert (subscribed) die Nachrichten und reagiert darauf.
- mosquitto_sub -h mqtt.lab.intern -t test
Sensor
Der Sensor sendet (published) die Nachrichten an das Topic.
- mosquitto_pub -h mqtt.lab.intern -t test -m "Hello World"
- mosquitto_pub -h mqtt.lab.intern -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
- Java Sript Datei
- server.js
- HTML Datei
- index.html
- Die Umgebungsvariablen
- .env
- Service Unit
- systemctl restart control-switch.service
Zugriff
Aktor
- Verzeichnis
- /usr/local/control
Wichtige Dateien
- Java Sript Datei
- server.js
- HTML Datei
- index.html
- Die Umgebungsvariablen
- .env
- Service Unit
- systemctl restart control.service
