MQTT Projekt Umsetzung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „=Grundaufbau= {{#drawio:mqtt-plan1}} =Connectivity= ==ssh== ;mqtt *ssh kit@mqtt ;sensor *ssh kit@sensor ;aktor *ssh kit@aktor ==http== ;sensor *http://sensor:…“
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=Grundaufbau=
=Stufe 1=
==Grundaufbau==
{{#drawio:mqtt-plan1}}
{{#drawio:mqtt-plan1}}


=Connectivity=
==Connectivity==
==ssh==
===ssh===
;mqtt
;mqtt
*ssh kit@mqtt
*ssh kit@mqtt
Zeile 10: Zeile 11:
;aktor
;aktor
*ssh kit@aktor
*ssh kit@aktor
==http==
===http===
;sensor
;sensor
*http://sensor:3000
*http://sensor:3000
Zeile 16: Zeile 17:
*http://aktor:3000
*http://aktor:3000


=Unverschlüsselt ohne Passwort=
==Unverschlüsselt ohne Passwort==
==mqtt==
===mqtt===
;Konfiguration kopieren
;Konfiguration kopieren
*sudo cp -v /etc/mosquitto/conf.d/defaults.conf.unverschlüsselt /etc/mosquitto/conf.d/defaults.conf
*sudo cp -v /etc/mosquitto/conf.d/defaults.conf.unverschlüsselt /etc/mosquitto/conf.d/defaults.conf
Zeile 35: Zeile 36:
;Checken
;Checken
*systemctl status mosquitto.service
*systemctl status mosquitto.service
==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.lab.intern -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.lab.intern -t test -m "Hello World"
*mosquitto_pub -h mqtt.lab.intern -t test -m "2 Nachricht"
*mosquitto_pub -h mqtt.lab.intern -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.
;Beispiel
;Beispiel
Zeile 50: Zeile 51:
  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
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==
*http://sensor:3000/
==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==
*http://aktor:3000/

Version vom 20. Juni 2026, 07:04 Uhr

Stufe 1

Grundaufbau

mqtt-plan1

Connectivity

ssh

mqtt
  • ssh kit@mqtt
sensor
  • ssh kit@sensor
aktor
  • ssh kit@aktor

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.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