MQTT Mosquitto Handing: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Eclipse Mosquitto MQTT Broker unter Ubuntu installieren und einrichten ==
+
= Eclipse Mosquitto MQTT Broker unter Ubuntu installieren und einrichten =
 
'''MQTT''' steht für ''Message Queuing Telemetry Transport'' und ist ein Protokoll für die Machine-to-Machine-Kommunikation im ''Internet of Things''. Eclipse Mosquitto ist ein beliebter Open-Source MQTT-Broker.
 
'''MQTT''' steht für ''Message Queuing Telemetry Transport'' und ist ein Protokoll für die Machine-to-Machine-Kommunikation im ''Internet of Things''. Eclipse Mosquitto ist ein beliebter Open-Source MQTT-Broker.
 +
= Installiere den Broker =
 +
*apt update && apt-get upgrade
 +
*apt install mosquitto
 +
*apt install mosquitto-clients
 +
== MQTT-Kommandos zur Kommunikation ==
  
=== Inhaltsverzeichnis ===
+
===Fenster 1 - Subscriber (Empfänger)===
* [[#Installiere deinen Broker|Installiere deinen Broker]]
+
*'''mosquitto_sub -h localhost -t test'''
* [[#Sichere deinen Broker mit einem Passwort ab|Sichere deinen Broker mit einem Passwort ab]]
+
Dieses Kommando startet einen Subscriber, der sich mit dem MQTT-Broker auf '''localhost''' verbindet und auf Nachrichten im Topic '''test''' wartet. Sobald eine Nachricht an dieses Topic gesendet wird, wird sie hier angezeigt.
* [[#Installiere und führe Certbot für Let's Encrypt Zertifikate aus|Installiere und führe Certbot aus]]
 
* [[#Aktiviere SSL-Verschlüsselung für deinen Broker|Aktiviere SSL-Verschlüsselung]]
 
* [[#Aktiviere Websockets für deinen Broker|Aktiviere Websockets]]
 
* [[#Fazit|Fazit]]
 
  
=== Installiere deinen Broker ===
+
===Fenster 2 - Publisher (Sender)===
Aktualisiere die Paketliste und installiere den Mosquitto Broker:
+
*'''mosquitto_pub -h localhost -t test -m "Hello World"'''
<source lang="bash">
+
Hier handelt es sich um einen Publisher. Er verbindet sich ebenfalls mit dem Broker auf '''localhost''', sendet jedoch aktiv eine Nachricht ('''Hello World''') an das Topic '''test'''. Da das erste Fenster (Subscriber) auf dieses Topic abonniert ist, empfängt es diese Nachricht und zeigt sie an.
apt-get update && apt-get upgrade
 
apt-get install mosquitto
 
apt-get install mosquitto-clients
 
</source>
 
  
=== Sichere deinen Broker mit einem Passwort ab ===
+
= Sichere deinen Broker mit einem Passwort ab =
Erzeuge eine Passwort-Datei und konfiguriere den Broker, um eine Authentifizierung zu erfordern:
+
*mosquitto_passwd -c /etc/mosquitto/passwd xinux
<source lang="bash">
+
;Wir nehmen unser Standard Passwort
mosquitto_passwd -c /etc/mosquitto/passwd testuser
+
*nano /etc/mosquitto/conf.d/default.conf
nano /etc/mosquitto/conf.d/default.conf
+
<source>
</source>
+
log_type all
Füge folgende Zeilen in der Konfigurationsdatei hinzu:
+
listener 1883
<source lang="text">
 
 
allow_anonymous false
 
allow_anonymous false
 
password_file /etc/mosquitto/passwd
 
password_file /etc/mosquitto/passwd
 +
connection_messages true
 
</source>
 
</source>
Neustart von Mosquitto:
+
*systemctl restart mosquitto
<source lang="bash">
+
=Hallo Welt Authentifiziert=
systemctl restart mosquitto
+
;1. Fenster
</source>
+
*mosquitto_sub -h localhost -t test -u xinux  -P 123Start$
 +
;2. Fenster
 +
*mosquitto_pub -h localhost -t test -m "Hello World" -u xinux  -P 123Start$
 +
 
 +
=Shelly-Gerät einrichten=
 +
;Für die Einrichtung eines Shelly-Geräts müssen Sie es so konfigurieren, dass es die MQTT-Einstellungen des Brokers verwendet:
 +
*MQTT-Serveradresse (IP-Adresse oder Hostname des Mosquitto-Servers)
 +
*Port (standardmäßig 1883)
 +
*Benutzername (xinux)
 +
*Passwort (password)
 +
*Diese Einstellungen werden normalerweise über die Shelly-App oder das Webinterface des Geräts vorgenommen.
 +
 
 +
=Wir schauen welche topic das Gerät hat=
 +
*tail -f /var/log/mosquitto.log
 +
 
 +
=Wir schalten und sniffen=
 +
;on
 +
*mosquitto_pub -h broker_ip -t 'Herausgefundene Topic' -m 'on' -u testuser -P password
 +
;off
 +
*mosquitto_pub -h broker_ip -t 'Herausgefundene Topic' -m 'off' -u testuser -P password
 +
;toggle
 +
*mosquitto_pub -h broker_ip -t 'Herausgefundene Topic' -m 'toggle' -u testuser -P password
 +
 
 +
 
  
 
=== Installiere und führe Certbot für Let's Encrypt Zertifikate aus ===
 
=== Installiere und führe Certbot für Let's Encrypt Zertifikate aus ===

Aktuelle Version vom 30. Oktober 2024, 10:04 Uhr

Eclipse Mosquitto MQTT Broker unter Ubuntu installieren und einrichten

MQTT steht für Message Queuing Telemetry Transport und ist ein Protokoll für die Machine-to-Machine-Kommunikation im Internet of Things. Eclipse Mosquitto ist ein beliebter Open-Source MQTT-Broker.

Installiere den Broker

  • apt update && apt-get upgrade
  • apt install mosquitto
  • apt install mosquitto-clients

MQTT-Kommandos zur Kommunikation

Fenster 1 - Subscriber (Empfänger)

  • mosquitto_sub -h localhost -t test

Dieses Kommando startet einen Subscriber, der sich mit dem MQTT-Broker auf localhost verbindet und auf Nachrichten im Topic test wartet. Sobald eine Nachricht an dieses Topic gesendet wird, wird sie hier angezeigt.

Fenster 2 - Publisher (Sender)

  • mosquitto_pub -h localhost -t test -m "Hello World"

Hier handelt es sich um einen Publisher. Er verbindet sich ebenfalls mit dem Broker auf localhost, sendet jedoch aktiv eine Nachricht (Hello World) an das Topic test. Da das erste Fenster (Subscriber) auf dieses Topic abonniert ist, empfängt es diese Nachricht und zeigt sie an.

Sichere deinen Broker mit einem Passwort ab

  • mosquitto_passwd -c /etc/mosquitto/passwd xinux
Wir nehmen unser Standard Passwort
  • nano /etc/mosquitto/conf.d/default.conf
log_type all
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
connection_messages true
  • systemctl restart mosquitto

Hallo Welt Authentifiziert

1. Fenster
  • mosquitto_sub -h localhost -t test -u xinux -P 123Start$
2. Fenster
  • mosquitto_pub -h localhost -t test -m "Hello World" -u xinux -P 123Start$

Shelly-Gerät einrichten

Für die Einrichtung eines Shelly-Geräts müssen Sie es so konfigurieren, dass es die MQTT-Einstellungen des Brokers verwendet
  • MQTT-Serveradresse (IP-Adresse oder Hostname des Mosquitto-Servers)
  • Port (standardmäßig 1883)
  • Benutzername (xinux)
  • Passwort (password)
  • Diese Einstellungen werden normalerweise über die Shelly-App oder das Webinterface des Geräts vorgenommen.

Wir schauen welche topic das Gerät hat

  • tail -f /var/log/mosquitto.log

Wir schalten und sniffen

on
  • mosquitto_pub -h broker_ip -t 'Herausgefundene Topic' -m 'on' -u testuser -P password
off
  • mosquitto_pub -h broker_ip -t 'Herausgefundene Topic' -m 'off' -u testuser -P password
toggle
  • mosquitto_pub -h broker_ip -t 'Herausgefundene Topic' -m 'toggle' -u testuser -P password


Installiere und führe Certbot für Let's Encrypt Zertifikate aus

Füge das Certbot-PPA hinzu und installiere Certbot:

add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install certbot
ufw allow http

Erstelle und erneuere SSL-Zertifikate automatisch:

certbot certonly --standalone --preferred-challenges http-01 -d DNSDomainname
15 3 * * * certbot renew --noninteractive --post-hook "systemctl restart mosquitto"

Aktiviere SSL-Verschlüsselung für deinen Broker

Konfiguriere SSL in der Mosquitto-Konfigurationsdatei:

nano /etc/mosquitto/conf.d/default.conf

Füge folgende SSL-Parameter hinzu:

listener 8883
certfile /etc/letsencrypt/live/DNSDomainname/cert.pem
cafile /etc/letsencrypt/live/DNSDomainname/chain.pem
keyfile /etc/letsencrypt/live/DNSDomainname/privkey.pem

Aktualisiere die Firewall, um SSL-Verbindungen zuzulassen:

ufw allow 8883

Aktiviere Websockets für deinen Broker

Füge die Websocket-Unterstützung in der Mosquitto-Konfigurationsdatei hinzu:

nano /etc/mosquitto/conf.d/default.conf

Füge folgende Zeile für Websockets hinzu:

listener 9001
protocol websockets

Fazit

Die Einrichtung von Mosquitto als MQTT-Broker auf Ubuntu bietet eine robuste Plattform für IoT-Kommunikation. Durch die Sicherung des Brokers und die Aktivierung von SSL wird eine sichere Datenübertragung gewährleistet.

Quelle