BerryBase
  • Shop
  • Raspberry Pi
  • Projekte
    • Alle
    • Audio / Sound
    • Display
    • Fun
    • IoT / Smart Tech
    • Kamera
    • LED
    • Luft / Wetter
    • Software
    Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5

    Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5

    Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

    Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

    Arduino Projekte-Ideen für den Sommer

    Arduino Projekte-Ideen für den Sommer

    DIY-Projekte für die Rasenpflege: Raspberry Pi Mähroboter und Sprinkler

    DIY-Projekte für die Rasenpflege: Raspberry Pi Mähroboter und Sprinkler

    Smart Home mit Shelly, JSON und Node Red: Leitfaden zur Installation und Programmierung

    Smart Home mit Shelly, JSON und Node Red: Leitfaden zur Installation und Programmierung

    Sprachassistenten mit Picovoice’s On-Device LLM-Technologie erstellen

    Sprachassistenten mit Picovoice’s On-Device LLM-Technologie erstellen

    Raspberry Pi Projekte für den Frühling

    Raspberry Pi Projekte für den Frühling

    Arduino GIGA R1 Display S

    Integration von ChatGPT mit Arduino GIGA R1 – Leitfaden

    Poetry Camera

    Poetry Camera mit Raspberry Pi Zero 2 W und Pi Camera Modul

    • Audio / Sound
    • Display
    • Fun
    • IoT / Smart Tech
    • Kamera
    • LED
    • Luft / Wetter
    • Software
  • Themen
    • Alle
    • Arduino
    • ESP
    • Hausautomation
    • IoT
    • Raspberry Pi
    • Robotik
    • Sensoren & Aktoren
    MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

    MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

    Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

    Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

    ESP32 Debuggen mit Espressif ESP-Prog und PlatformIO – Anleitung

    ESP32 Debuggen mit Espressif ESP-Prog und PlatformIO – Anleitung

    Welche Sensoren gibt es für Arduino? Dein umfassender Leitfaden

    Welche Sensoren gibt es für Arduino? Dein umfassender Leitfaden

    Arduino

    Ist Arduino-Programmierung schwer zu lernen? – Ein Leitfaden für Anfänger

    Objekterkennung mit Raspberry Pi 5 und Hailo AI Kit: Sicherheitshelm-Erkennung

    Objekterkennung mit Raspberry Pi 5 und Hailo AI Kit: Sicherheitshelm-Erkennung

    Pineboards HatDrive! Nano: Revolutionäre Speicherlösung für Raspberry Pi 5

    PiNEBOARDS HatDrive! NANO: Der ultimative Vergleich mit dem Raspberry Pi M.2 HAT+

    Datenschutzkonforme Smart Home Sicherheit für Airbnb mit Aqara

    Datenschutzkonforme Smart Home Sicherheit für Airbnb mit Aqara

    Arduino Plug and Make Kit: Dein idealer Einstieg in die Welt des IoT

    Arduino Plug and Make Kit: Dein idealer Einstieg in die Welt des IoT

    • Raspberry Pi
    • Arduino
    • ESP
    • Sensoren & Aktoren
    • IoT
    • Hausautomation
  • Kaufberatung
    • Alle
    • Produkte
    • Reviews
    • Top 10 Listen
    • Unboxing
    Fischertechnik Maker Kits – Neuheiten für die DIY- und Maker-Szene

    Fischertechnik Maker Kits – Neuheiten für die DIY- und Maker-Szene

    Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

    Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

    Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

    Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

    PiNEBOARDS HATs im Test: Erweiterungsmöglichkeiten für den Raspberry Pi 5

    PiNEBOARDS HATs im Test: Erweiterungsmöglichkeiten für den Raspberry Pi 5

    Was sind Widerstände, Potentiometer und Kondensatoren? Ein Guide für Einsteiger und Maker

    Was sind Widerstände, Potentiometer und Kondensatoren? Ein Guide für Einsteiger und Maker

    DisplayPort vs. HDMI: Welches Kabel passt zu dir?

    DisplayPort vs. HDMI: Welches Kabel passt zu dir?

    Raspberry Pi 5 Anschluss

    Raspberry Pi 5: Neue 2GB-Variante für nur 55 Euro veröffentlicht

    Einführung: Nutze das Raspberry Pi 5 und AI Kit für leistungsstarke KI-Projekte

    Einführung: Nutze das Raspberry Pi 5 und AI Kit für leistungsstarke KI-Projekte

    Pineboards HatDrive! Nano: Revolutionäre Speicherlösung für Raspberry Pi 5

    PiNEBOARDS HatDrive! NANO: Der ultimative Vergleich mit dem Raspberry Pi M.2 HAT+

    • Produkte
  • How To
    • Alle
    • Guides
    • Software / Programmierung
    • Wissensdatenbank
    Apache Guacamole: Die clientlose Remote-Desktop-Lösung installieren und einrichten

    Apache Guacamole: Die clientlose Remote-Desktop-Lösung installieren und einrichten

    Steam Link auf dem Raspberry Pi 5 installieren: Offizielle Methode & Docker-Alternative

    Steam Link auf dem Raspberry Pi 5 installieren: Offizielle Methode & Docker-Alternative

    Scratch 3.0 – Spielerisch Programmieren lernen

    Scratch 3.0 – Spielerisch Programmieren lernen

    MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

    MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

    ESP32 Debuggen mit Espressif ESP-Prog und PlatformIO – Anleitung

    ESP32 Debuggen mit Espressif ESP-Prog und PlatformIO – Anleitung

    Vaultwarden als Passwort-Safe mit Docker und Portainer installieren

    Vaultwarden als Passwort-Safe mit Docker und Portainer installieren

    Welche Sensoren gibt es für Arduino? Dein umfassender Leitfaden

    Welche Sensoren gibt es für Arduino? Dein umfassender Leitfaden

    Widerstand Farbcode: Einfache Erklärung, Tabelle und Beispiele

    Widerstand Farbcode: Einfache Erklärung, Tabelle und Beispiele

    Was sind Widerstände, Potentiometer und Kondensatoren? Ein Guide für Einsteiger und Maker

    Was sind Widerstände, Potentiometer und Kondensatoren? Ein Guide für Einsteiger und Maker

    • Guides
    • Wissensdatenbank
    • Software / Programmierung
  • News
Keine Ergebnisse
Alle Ergebnisse anzeigen
  • Shop
  • Raspberry Pi
  • Projekte
    • Alle
    • Audio / Sound
    • Display
    • Fun
    • IoT / Smart Tech
    • Kamera
    • LED
    • Luft / Wetter
    • Software
    Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5

    Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5

    Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

    Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

    Arduino Projekte-Ideen für den Sommer

    Arduino Projekte-Ideen für den Sommer

    DIY-Projekte für die Rasenpflege: Raspberry Pi Mähroboter und Sprinkler

    DIY-Projekte für die Rasenpflege: Raspberry Pi Mähroboter und Sprinkler

    Smart Home mit Shelly, JSON und Node Red: Leitfaden zur Installation und Programmierung

    Smart Home mit Shelly, JSON und Node Red: Leitfaden zur Installation und Programmierung

    Sprachassistenten mit Picovoice’s On-Device LLM-Technologie erstellen

    Sprachassistenten mit Picovoice’s On-Device LLM-Technologie erstellen

    Raspberry Pi Projekte für den Frühling

    Raspberry Pi Projekte für den Frühling

    Arduino GIGA R1 Display S

    Integration von ChatGPT mit Arduino GIGA R1 – Leitfaden

    Poetry Camera

    Poetry Camera mit Raspberry Pi Zero 2 W und Pi Camera Modul

    • Audio / Sound
    • Display
    • Fun
    • IoT / Smart Tech
    • Kamera
    • LED
    • Luft / Wetter
    • Software
  • Themen
    • Alle
    • Arduino
    • ESP
    • Hausautomation
    • IoT
    • Raspberry Pi
    • Robotik
    • Sensoren & Aktoren
    MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

    MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

    Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

    Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

    ESP32 Debuggen mit Espressif ESP-Prog und PlatformIO – Anleitung

    ESP32 Debuggen mit Espressif ESP-Prog und PlatformIO – Anleitung

    Welche Sensoren gibt es für Arduino? Dein umfassender Leitfaden

    Welche Sensoren gibt es für Arduino? Dein umfassender Leitfaden

    Arduino

    Ist Arduino-Programmierung schwer zu lernen? – Ein Leitfaden für Anfänger

    Objekterkennung mit Raspberry Pi 5 und Hailo AI Kit: Sicherheitshelm-Erkennung

    Objekterkennung mit Raspberry Pi 5 und Hailo AI Kit: Sicherheitshelm-Erkennung

    Pineboards HatDrive! Nano: Revolutionäre Speicherlösung für Raspberry Pi 5

    PiNEBOARDS HatDrive! NANO: Der ultimative Vergleich mit dem Raspberry Pi M.2 HAT+

    Datenschutzkonforme Smart Home Sicherheit für Airbnb mit Aqara

    Datenschutzkonforme Smart Home Sicherheit für Airbnb mit Aqara

    Arduino Plug and Make Kit: Dein idealer Einstieg in die Welt des IoT

    Arduino Plug and Make Kit: Dein idealer Einstieg in die Welt des IoT

    • Raspberry Pi
    • Arduino
    • ESP
    • Sensoren & Aktoren
    • IoT
    • Hausautomation
  • Kaufberatung
    • Alle
    • Produkte
    • Reviews
    • Top 10 Listen
    • Unboxing
    Fischertechnik Maker Kits – Neuheiten für die DIY- und Maker-Szene

    Fischertechnik Maker Kits – Neuheiten für die DIY- und Maker-Szene

    Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

    Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

    Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

    Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

    PiNEBOARDS HATs im Test: Erweiterungsmöglichkeiten für den Raspberry Pi 5

    PiNEBOARDS HATs im Test: Erweiterungsmöglichkeiten für den Raspberry Pi 5

    Was sind Widerstände, Potentiometer und Kondensatoren? Ein Guide für Einsteiger und Maker

    Was sind Widerstände, Potentiometer und Kondensatoren? Ein Guide für Einsteiger und Maker

    DisplayPort vs. HDMI: Welches Kabel passt zu dir?

    DisplayPort vs. HDMI: Welches Kabel passt zu dir?

    Raspberry Pi 5 Anschluss

    Raspberry Pi 5: Neue 2GB-Variante für nur 55 Euro veröffentlicht

    Einführung: Nutze das Raspberry Pi 5 und AI Kit für leistungsstarke KI-Projekte

    Einführung: Nutze das Raspberry Pi 5 und AI Kit für leistungsstarke KI-Projekte

    Pineboards HatDrive! Nano: Revolutionäre Speicherlösung für Raspberry Pi 5

    PiNEBOARDS HatDrive! NANO: Der ultimative Vergleich mit dem Raspberry Pi M.2 HAT+

    • Produkte
  • How To
    • Alle
    • Guides
    • Software / Programmierung
    • Wissensdatenbank
    Apache Guacamole: Die clientlose Remote-Desktop-Lösung installieren und einrichten

    Apache Guacamole: Die clientlose Remote-Desktop-Lösung installieren und einrichten

    Steam Link auf dem Raspberry Pi 5 installieren: Offizielle Methode & Docker-Alternative

    Steam Link auf dem Raspberry Pi 5 installieren: Offizielle Methode & Docker-Alternative

    Scratch 3.0 – Spielerisch Programmieren lernen

    Scratch 3.0 – Spielerisch Programmieren lernen

    MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

    MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

    ESP32 Debuggen mit Espressif ESP-Prog und PlatformIO – Anleitung

    ESP32 Debuggen mit Espressif ESP-Prog und PlatformIO – Anleitung

    Vaultwarden als Passwort-Safe mit Docker und Portainer installieren

    Vaultwarden als Passwort-Safe mit Docker und Portainer installieren

    Welche Sensoren gibt es für Arduino? Dein umfassender Leitfaden

    Welche Sensoren gibt es für Arduino? Dein umfassender Leitfaden

    Widerstand Farbcode: Einfache Erklärung, Tabelle und Beispiele

    Widerstand Farbcode: Einfache Erklärung, Tabelle und Beispiele

    Was sind Widerstände, Potentiometer und Kondensatoren? Ein Guide für Einsteiger und Maker

    Was sind Widerstände, Potentiometer und Kondensatoren? Ein Guide für Einsteiger und Maker

    • Guides
    • Wissensdatenbank
    • Software / Programmierung
  • News
Keine Ergebnisse
Alle Ergebnisse anzeigen
BerryBase
Keine Ergebnisse
Alle Ergebnisse anzeigen
Startseite Raspberry Pi

MQTT und der Raspberry Pi: Einfache Einrichtung eines IoT-Brokers

Jörn Weise von Jörn Weise
18. Oktober 2024
in Raspberry Pi, Guides, Hausautomation, IoT, Software / Programmierung
Lesezeit: 14 Min. Lesezeit
0
A A
0

In der Welt des Internet of Things (IoT) gibt es viele Protokolle, die es unseren Geräten ermöglichen, miteinander zu kommunizieren und Informationen zu übertragen. Eines der bekanntesten und zugleich einfachsten Protokolle ist MQTT, das bereits vor über 20 Jahren eingeführt wurde. Viele Smart-Home-Steuerungen unterstützen MQTT von Haus aus oder können durch Drittanbieter-Software damit umgehen.

Egal ob ioBroker, openHAB, HomeAssistant, Node-RED oder andere Dienste – sie alle können mit MQTT arbeiten. Doch was genau ist MQTT, wie funktioniert es, und wie kannst du selbst einen MQTT-Broker einrichten? Diese Fragen werde ich in diesem Beitrag erklären. Im nächsten Teil zeige ich dir dann anhand einfacher Beispiele, wie du MQTT mit verschiedenen MicroControllern nutzen kannst.

Inhaltsverzeichnis
  • Voraussetzungen für diesen Blog
  • Was ist MQTT?
  • Wie funktioniert MQTT?
  • Daten vom Broker abonnieren
  • Der Raspberry Pi wird zum Broker
  • MQTT-Broker direkt installieren
  • MQTT-Broker mit Docker verwenden
  • Daten an den Broker senden und empfangen
  • Daten an den Broker senden und empfangen
  • Abschließende Worte und Ausblick

Voraussetzungen für diesen Blog

Zur Veranschaulichung nutze ich einen Raspberry Pi 4 mit frisch installiertem Raspberry Pi OS. In Tabelle 1 findest du eine Übersicht der benötigten Hardware. MQTT kann aber auch auf jedem (Linux-basierten) Betriebssystem deiner Wahl einfach eingerichtet werden.

Pos.MengeBauteil
11Raspberry Pi (Modell egal)
21Passendes Netzteil für den Raspberry Pi
31Je nach Raspberry Pi Modell ein LAN-Kabel
Tabelle 1: Benötigte Hardware

Tatsächlich ist es bei der Nutzung eines Raspberry Pi egal, welches Modell du verwendest, solange du MQTT direkt installierst und nicht z.B. Docker dafür nutzt. MQTT ist ressourcenschonend und benötigt nur minimale Systemressourcen. Wenn du Docker verwenden möchtest, sollte es allerdings mindestens ein Raspberry Pi 3B oder höher sein.

Was ist MQTT?

MQTT steht für Message Queuing Telemetry Transport und ist ein offenes Netzwerkprotokoll für Machine-to-Machine-Kommunikation. Es ermöglicht beispielsweise das Übermitteln von Sensordaten und das Steuern von Aktoren. Auch zur Übermittlung von Statusinformationen von IoT-Geräten wird es verwendet.

Der Hintergrund dieses Protokolls liegt darin, Informationen selbst in instabilen Netzwerken zuverlässig zu übertragen. Ursprünglich aus einer Zeit stammend, in der Netzwerke noch sehr störanfällig waren, bleibt MQTT auch heute relevant.

Standardmäßig lauscht MQTT auf Port 1883 im Netzwerk. Der gesicherte Port 8883 erfordert jedoch die Verschlüsselung via TLS. Wenn du keine TLS-Verschlüsselung einrichten möchtest, kannst du auch einfach einen Benutzernamen und ein Passwort festlegen, um die Anmeldung am MQTT-Broker zu sichern.

Damit du MQTT nutzen kannst, benötigst du einen MQTT-Server, den sogenannten Broker, sowie die Endgeräte, die als Clients fungieren, um Daten zu senden und/oder zu empfangen. Die meisten Broker laufen auf Linux-basierten Systemen, aber es gibt auch Lösungen für Windows. Aufgrund seiner Effizienz wird MQTT häufig in IoT-Projekten eingesetzt.

Wie funktioniert MQTT?

MQTT nutzt eine sogenannte ereignisgesteuerte Publish/Subscribe-Architektur. Einfach erklärt, melden sich alle Sender- und Empfängergeräte – die sogenannten Clients – beim Server (Broker) an. Der Broker fungiert als Informationspuffer, der Daten an die Clients weiterleitet. Damit ein Client Nachrichten vom Broker erhält, muss er sogenannte Topics abonnieren.

die Architektur von MQTT vereinfacht dargestellt ist. Ein Client, zum Beispiel ein Sensor, kann Daten senden und/oder empfangen. Der Broker nimmt diese Daten auf und verteilt sie an alle Clients, die die entsprechenden Topics abonniert haben.
Abbildung 1: Veranschaulichung der MQTT-Architektur

In Abbildung 1 siehst du, wie die Architektur von MQTT vereinfacht dargestellt ist. Ein Client, zum Beispiel ein Sensor, kann Daten senden und/oder empfangen. Der Broker nimmt diese Daten auf und verteilt sie an alle Clients, die die entsprechenden Topics abonniert haben.

Der Broker stellt sicher, dass der Client, der dieses Topic abonniert hat, alle neuen Sensordaten empfängt. MQTT Übersicht
Abbildung 2: MQTT QoS-Übersicht

Ein Topic kannst du dir wie eine Art URL vorstellen, die den gewünschten Inhalt repräsentiert. Zum Beispiel könnte ein Topic für einen Temperatursensor im Wohnzimmer „Daheim/Erdgeschoss/Wohnzimmer/Temperatur“ lauten. Der Broker stellt sicher, dass der Client, der dieses Topic abonniert hat, alle neuen Sensordaten empfängt.

Daten vom Broker abonnieren

Es gibt mehrere Möglichkeiten, wie ein Client Daten von einem Broker abonnieren kann. Eine einfache Variante ist, den Topic vollständig anzugeben, z. B. „Daheim/Erdgeschoss/Wohnzimmer/Temperatur“. Alternativ kannst du mit Platzhaltern arbeiten. Durch die Angabe „Daheim/+/+/Temperatur“ erhältst du die Temperaturdaten aller Zimmer auf jeder Etage. Eine noch umfassendere Option ist die Nutzung des #-Operators, um zum Beispiel „Daheim/Erdgeschoss/#“ für alle Daten des Erdgeschosses abzufragen.

Die flexibelste und datenintensivste Methode ist die Abonnierung des Wurzelverzeichnisses durch „/#“. Dies führt dazu, dass jede Änderung am gesamten MQTT-Netzwerk an den Client übermittelt wird. Diese Variante solltest du jedoch nur nutzen, wenn du wirklich alle Informationen benötigst, da sie viele unnötige Daten übermitteln kann.

Der Raspberry Pi wird zum Broker

Wie bereits erwähnt, erfreut sich MQTT in der IoT-Community großer Beliebtheit. Viele möchten ihre persönlichen Daten oder Steuerungsdaten nicht über öffentliche Dienste im Internet freigeben, daher bietet es sich an, einen eigenen Broker zu betreiben. Ein kleiner Computer wie der Raspberry Pi eignet sich dafür hervorragend.

Im nächsten Abschnitt zeige ich dir, wie du einen MQTT-Broker sowohl direkt als auch über Docker auf deinem Raspberry Pi einrichten kannst.

MQTT-Broker direkt installieren

Öffne Terminal im Pi, so sieht das Terminal aus
Abbildung 3: Öffne Terminal im Pi
  1. Öffne das Terminal deines Raspberry Pi (siehe Abbildung 3).
  2. Aktualisiere den Pi mit folgendem Befehl: sudo apt upgrade && sudo apt dist-upgrade.
  3. Installiere den Mosquitto-Broker mit: sudo apt install mosquitto.
  4. Aktiviere den Broker so, dass er nach jedem Neustart automatisch gestartet wird: sudo systemctl enable mosquitto.service.
  5. Starte den Broker direkt: sudo mosquitto -d.

Ab diesem Punkt hast du einen lokalen, unverschlüsselten MQTT-Broker in deinem Heimnetzwerk eingerichtet. Solange du keine Portweiterleitungen im Router eingerichtet hast, ist der Broker auch nicht über das Internet erreichbar – für private Zwecke ist das meist ausreichend. Damit der Broker nach einem Neustart weiterhin verfügbar ist, solltest du deinem Raspberry Pi eine feste IP-Adresse über den Router zuweisen.

MQTT-Broker mit Docker verwenden

Wenn du Docker nutzt, kannst du den MQTT-Broker ebenfalls unkompliziert installieren. Ich empfehle die Verwendung des Mosquitto-Images von Eclipse. Stelle sicher, dass du zwei Volumes erstellst, um die Daten und Logfiles auch nach einem Neustart des Containers zu behalten.

Abbildung 4: Die benötigten Volumes erstellen

Gleichzeitig braucht es noch eine Konfigurationsfile, damit später eine einfache Verbindung mit dem MQTT-Broker funktioniert. Von Haus aus liefert das Image keine fertige Konfiguration mit, daher braucht es eine Datei die mosquitto.conf heißen muss. Diese Datei muss lokal auf dem System liegen und den folgenden Inhalt haben, siehe Code 5 und Abbildung 5.

allow_anonymous true
listener 1883
persistence true
persistence_location /mosquitto/data/
Abbildung 5: Die Konfiguration für mosquitto

Anschließend legst du den Container an: an der Stelle verwende ich keine Compose-File (in Portainer unter Stacks zu finden), sondern die Möglichkeit über Containers -> Add container, siehe Abbildung 6.

Abbildung 6: Einen neuen Container anlegen

Zunächst werden die Basisinformationen, siehe Abbildung 7, eingetragen:

  1. Name Container: mqtt (in meinem Fall)
  2. Image: eclipse-mosquitto:latest
  3. Port mapping:
  4. 1883 (Host) zu 1883 (Container)
  5. 9002 (Host) zu 9001 (Container) Hier muss ich bei meinem Host die 9002 statt 9001, da auf diesem Port schon ein anderer Container lauscht.

Abbildung 7: Name, Image und Port Mapping für den Container

Anschließend müssen die Volumes und Binds gemappt werden, siehe Abbildung 8. Wichtig dabei, der Ordner /mosquitto/config vom Container muss auf den lokalen Pfad verweisen, wo die mosquitto.conf abgelegt wurde.

Abbildung 8: Die Volumes und Binds mappen

Nach kurzer Zeit sollte der Container gestartet sein und bereit für die n meinem Fall liegt die mosquitto.conf im lokalen Verzeichnis /home/piJoern/docker/mqtt/config, daher das Bind mapping auf diesen Pfad. Zuletzt noch die Restart policy auf Always stellen und den Container über den Button Deploy the container starten, siehe Abbildung 9.

Abbildung 9: Restart-Policy setzen und Container erstellen

Daten an den Broker senden und empfangen

Nun wird es Zeit, die Theorie in die Praxis umzusetzen. Installiere den Mosquitto-Client mit dem Befehl sudo apt install mosquitto-clients. Nutze anschließend die Terminalbefehle „mosquitto_sub“ zum Empfangen und „mosquitto_pub“ zum Senden von Nachrichten.

Abbildung 10: MQTT-Container läuft

Daten an den Broker senden und empfangen

Nun wird es Zeit, die Theorie in die Praxis umzusetzen und Nachrichten an den Broker zu senden und auch Nachrichten vom Broker zu empfangen. Dazu braucht es einen MQTT-Client, der über Code 5 installiert wird.

sudo apt install mosquitto-clients

Code 6: Mosquitto-Client installieren

Anschließend musst du die Terminalbefehle „mosquitto_sub“ für die Funktion subscribe und „mosquitto_pub“ für die Funktion publish von Nachrichten nutzen. 

Den Anfang wird der Terminalbefehl „mosquitto_sub“ machen, und die wichtigsten Befehle werden nachfolgend erläutert. Willst du über die hier gezeigten Befehle hinausgehen, empfehle ich an dieser Stelle das intern mitgelieferte Linux-Handbuch, das du im Terminal mit dem Kommando „man mosquitto_sub“, „man mosquitto_pub“ oder „man mosquitto“ aufrufen kannst. Der Linux-Befehl man steht dabei für Manual, auf Deutsch Anleitung oder Handbuch.

Um umfangreich zu sehen, was der mosquitto-Subscriber im Hintergrund abarbeitet, und auch um alle Nachrichten zu empfangen, nutze den Befehl aus Code 6.

mosquitto_sub -h <strong>IP-VOM-BROKER</strong>-d -q 2 -t /#

Code 7: Mosquitto-Subscriber auf Wurzelknoten lauschen lassen

Der hier gezeigte Code 6 nutzt dabei die Optionen aus Tabelle 2 und abonniert alle Topics vom Broker, was bei intensiver MQTT-Nutzung nicht zu empfehlen ist.

OptionErläuterung
-hGibt den Hostname vom Broker an, mit dem sich verbunden werden soll
-dAktiviert den Debug-Modus und zeigt alle nützlichen Informationen an.
-qSpezifiziert welche QoS der Subscriber mit dem Broker kommunizieren soll. In Code 6 wird QoS 2 genutzt.
-tGibt an, welches Topic vom Subscriber abonniert werden soll. In Code 6 abonnieren der Subscriber alle Topics.
-pGibt die Portnummer an, sofern diese von den Standardports abweicht

Tabelle 2: Optionen des mosquitto-Subscriber

Hast du den Befehl aus Code 6 eingegeben, wird die Ausgabe zunächst die erfolgreiche Verbindung zu dem Broker anzeigen, siehe Abbildung 5 Markierung 1.

Abbildung 11: Terminalausgabe von mosquitto_sub

icht wundern an der Stelle, da Broker und Client auf dem selben System laufen, wird ohne -h eine Verbindung zum localhost versucht zu öffnen.

In Markierung 1 von Abbildung 5 sieht man, dass eine Verbindung aufgebaut wurde und die Gegenstelle, der Broker, die Verbindung akzeptiert hat. Direkt danach übermittelt der Subscriber, welches Topic abonniert werden soll, hier „/#“, und welcher QoS angefordert wurde, hier „QoS: 2“. Zuletzt wird die Subscribe-Anfrage mittels SUBACK, der Subscription Acknowledged, akzeptiert. Die Verbindung zum Broker ist hergestellt und das gewünschte Topic ist abonniert.

Markierung 2 von Abbildung 5 wird nach einer Zeit bei Ihnen im Terminal erscheinen. Dies ist, wie in „Wie funktioniert MQTT“ beschrieben, die Abfrage, ob der Subscriber noch online ist. Der Broker fragt nach, ob der Client noch online ist, was mit dem sogenannten Ping Request passiert. Im Normalfall sendet der Client die entsprechende Antwort, den sogenannten Ping Response, an den Broker.

Der nächste Schritt, nachdem wir nun einen Subscriber haben, besteht darin, einen Publisher zu nutzen, um Daten an den Broker zu senden. Die erste Nachricht soll natürlich „Hello world“ sein. Diesen kleinen Satz sendet der Publisher an das Topic /test/testpub.

Der Befehl dafür zeigt Code 7.

mosquitto_pub -h <strong>IP-VOM-BROKER</strong> -d -q 2 -t /test/testpub -m “Hello world“

Code 8: mosquitto_pub “Hello world”

Die genutzten Optionen für Code 7 sind in Tabelle 3 aufgelistet.

OptionErläuterung
-hGibt den Hostname vom Broker an, mit dem sich verbunden werden soll
-dAktiviert den Debug-Modus und zeigt alle nützlichen Informationen an.
-qSpezifiziert welche QoS der Publisher mit dem Broker kommunizieren soll. In Code 7 wird QoS 2 genutzt.
-tGibt an, an welches Topic die Daten gesendet werden sollen, hier /test/testpub
-mSende nachfolgende Nachricht, hier „Hello world“
Tabelle 3: Optionen des mosquitto-Publisher

Schauen wir uns einmal an, welche Daten bei der Übermittlung, siehe Abbildung 6 Markierung 1, an den Broker gesendet werden. Wie schon zuvor wurde QoS 2 in den Optionen gewählt, weswegen du auch den entsprechenden Kommunikationsverlauf siehst.

Abbildung 12: Terminalausgabe von moquitto_pub und mosquitto_sub

Direkt danach schickt der Broker die neue Nachricht an den Subscriber, siehe Abbildung 6 Markierung 2, da dieser alle Topics abonniert hat. An der oberen Umrandung von Markierung 2 von Abbildung 6 sehen wir, dass neue Daten im Topic /test/testpub empfangen wurden. Der QoS 2 – Handshake wird direkt dahinter angezeigt, wobei die Nachricht „Hello world“ empfangen wurde.


Abschließende Worte und Ausblick

In diesem Beitrag habe ich euch gezeigt und erklärt:

  • Wie man auf einem Raspberry Pi mit und ohne docker schnell und einfach einen MQTT-Broker erstellen kann
  • Was MQTT und das MQTT-Protokoll ist
  • Was der Unterschied zu einem MQTT-Broker und MQTT-Client ist
  • Wie die Kommunikation zwischen MQTT-Broker und MQTT-Client stattfindet´

Es fehlt an der Stelle einiges im Bezug auf das Thema Sicherheit, da mit der aktuellen Konfiguration jeder sich mit dem MQTT-Broker im Heimnetz verbinden kann. Ratsam ist zumindest die Authentifizierung mittels Username und Passwort. Empfehlen kann ich da die Dokumentation von mosquitto.org, welches viele Einstellungen rund um mosquitto noch einmal erklärt. Gerade bei der Variante mit docker ist darauf zu achten, wie die Struktur mit dem Bind und den Volumes ist, da die Konfiguration sich zu der normalen Installation unterscheidet. Hinsichtlich des nächsten Beitrags zeige ich ein kleines Projekt mit verschiedenen MicroControllern, die mit dem MQTT-Broker kommunizieren und teilweise Daten liefern, aber auch auf abonnierte Nachrichten mit Aktoren reagieren. Dies soll dann noch einmal verdeutlichen, wie MQTT im Wesentlichen funktioniert.

Schlagwörter: raspberry Pi
TeilenTeilenTwittern
Vorheriger Beitrag

Nicla Sense Env – Die leistungsstarke Sensorlösung für Portenta- und MKR-Boards

Nächster Beitrag

Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5

Jörn Weise

Jörn Weise

Hallo! Ich bin Jörn, ein erfahrener Diplom-Ingenieur (FH) im Bereich Mechatronik und ein passionierter Softwareentwickler. Meine Faszination für Mikrocontroller und die vielfältigen Linux-Varianten wurde durch den Raspberry Pi geweckt. Ich lade euch ein, mit mir in dieses spannende Abenteuer einzutauchen. Also, worauf wartet ihr noch? Lasst uns gemeinsam starten und die Welt der Technologie erkunden!

ÄhnlicheArtikel

Apache Guacamole: Die clientlose Remote-Desktop-Lösung installieren und einrichten
How To

Apache Guacamole: Die clientlose Remote-Desktop-Lösung installieren und einrichten

15. April 2025
Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5
Projekte

Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5

7. November 2024
Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte
Kaufberatung

Raspberry Pi AI Camera – Eine intelligente Kamera für kreative Projekte

9. Oktober 2024
PiNEBOARDS HATs im Test: Erweiterungsmöglichkeiten für den Raspberry Pi 5
Kaufberatung

PiNEBOARDS HATs im Test: Erweiterungsmöglichkeiten für den Raspberry Pi 5

23. September 2024
Nächster Beitrag
Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5

Kompilierung eines eigenen Linux-Kernels für den Raspberry Pi 5

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

News

Pineboards HatDrive! Nano: Revolutionäre Speicherlösung für Raspberry Pi 5
Produkte

Pineboards HatDrive! Nano: Revolutionäre Speicherlösung für Raspberry Pi 5

15. Juli 2024
Entdecke Raspberry Pi Connect: Fernzugriff leicht gemacht
Allgemein

Entdecke Raspberry Pi Connect: Fernzugriff leicht gemacht

10. Juli 2024
postmarketOS v24.06 Update: Jetzt über 250 unterstützte Geräte!
Allgemein

postmarketOS v24.06 Update: Jetzt über 250 unterstützte Geräte!

19. Juni 2024
Raspberry Pi AI Kit mit Hailo AI Modul
Raspberry Pi

Raspberry Pi AI Kit mit Hailo AI Modul

12. Juni 2024
DIY-Projekte mit Edge AI: Kleine KI-Modelle für Bastler
News

DIY-Projekte mit Edge AI: Kleine KI-Modelle für Bastler

4. Juni 2024
Arduino und MicroPython jetzt gleichzeitig auf Multi-Core-Mikrocontrollern betreiben
News

Arduino und MicroPython jetzt gleichzeitig auf Multi-Core-Mikrocontrollern betreiben

3. Juni 2024
  • OpenMediaVault NAS auf dem Raspberry Pi

    NAS mit einem Raspberry Pi bauen – Eine Anleitung

    0 teilen
    Teilen 0 Twittern 0
  • OpenMediaVault auf Raspberry Pi installieren: Tutorial

    0 teilen
    Teilen 0 Twittern 0
  • Raspberry Pi 5 mit M.2 HAT+ und SSD zusammenbauen und einrichten – Guide

    0 teilen
    Teilen 0 Twittern 0
  • Die Top 10 Smart Home Software im Vergleich

    0 teilen
    Teilen 0 Twittern 0
  • Raspberry Pi Betriebssysteme im Vergleich

    0 teilen
    Teilen 0 Twittern 0

Shop-Service

  • Abholung in Berlin
  • Berrys lohnen sich
  • Produktvorschlag
  • Jobs

Information

  • Impressum
  • AGB
  • Cookie-Richtlinie (EU)
  • Kontakt
BerryBase Blog

by Sertronics GmbH
Am Studio 20D
12489 Berlin
blog@berrybase.de

© 2024 BerryBase

Keine Ergebnisse
Alle Ergebnisse anzeigen
  • Shop
  • Raspberry Pi
  • Projekte
    • Audio / Sound
    • Display
    • Fun
    • IoT / Smart Tech
    • Kamera
    • LED
    • Luft / Wetter
    • Software
  • Themen
    • Raspberry Pi
    • Arduino
    • ESP
    • Sensoren & Aktoren
    • IoT
    • Hausautomation
  • Kaufberatung
    • Produkte
  • How To
    • Guides
    • Wissensdatenbank
    • Software / Programmierung
  • News

© 2024 BerryBase

Zur mobilen Version gehen