MQTT Projekt Umsetzung: Unterschied zwischen den Versionen

Aus Xinux Wiki
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.lab.intern -t test
+
*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.lab.intern -t test -m "Hello World"
+
*mosquitto_pub -h mqtt.dkbi.com -t test -m "Hello World"
*mosquitto_pub -h mqtt.lab.intern -t test -m "2 Nachricht"
+
*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.====
+
: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.
====Verbindet sich als MQTT-Client zum Broker.====
+
;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
 
====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===
 
===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