HowTo: RaspberryPi – MQTT Server auf dem RaspberryPi installieren

MQTT(Message Queue Telemetry Transport) ist das Protokoll das in der Welt der Internet of Things immer mehr an Bedeutung gewinnt.

Mit diesem lassen sich sehr leicht verschiedene Daten zwischen verschiedenen Sensoren und Aktoren austauschen. Dabei senden und empfangen alle an den MQTT Server angeschlossenen Clienten ihre Daten zu bzw. von einem zentralen Server.

Im MQTT Protokoll sprechen die einzelnen angeschlossenen Clienten also nicht direkt miteinander.
Jeder Client kann bei seiner Anmeldung am MQTT Server angeben welche Daten er gerne bekommen möchte sobald neue verfügbar sind. Gleichzeitig kann jeder Client Daten an den Server senden. Diese an den Server gesendeten Daten werden dann automatisch an die Clienten verteilt die sich zuvor dafür gemeldet haben die Daten erhalten zu wollen.
Eine MQTT Botschaft besteht also immer aus einem Namen und den Daten. Der Name(Topic genannt) ermöglicht es, dass sich Clienten beim Server als „Interessent“ für die unter diesem Namen versendeten Daten anmelden können.
Sobald der Server dann unter diesem Namen Daten empfängt werden diese an alle Clienten die sich zuvor als „Interessenten“ für diese Daten angemeldet haben weitergeleitet.

Soviel zur groben Funktion des MQTT-Protokolls.
Damit ihr in eurem Netzwerk auch das MQTT Protokoll nutzen könnt braucht ihr einen MQTT-Server. Wie ihr diesen auf dem RaspberryPi installiert erkläre ich euch in diesem Artikel.

Neben einem eigenen MQTT-Server gibt es auch die Möglichkeit externe, über das Internet verfügbare MQTT-Server zu nutzen. Diese werden teilweise kostenlos zur Verfügung gestellt.

Meiner Meinung nach hat dies aber ein paar Nachteile:
– eure Daten verlassen das heimische Netz. Die Wahrscheinlichkeit dass damit Unfug getrieben wird oder überhaupt getrieben werden kann ist nicht hoch. Trotzdem fühle ich mich irgendwie wohler, wenn meine Daten die „eigenen vier Wände“ nicht verlassen.
– ihr seid von dem externen MQTT-Server abhängig. Sollte dieser nicht erreichbar sein, weil er beispielsweise ausgefallen ist oder auch eure Internetverbindung nicht hergestellt werden kann so fällt auch eure komplette netzwerkinterne (MQTT-)Kommunikation aus.

Da die installation eines eigenen MQTT-Servers dazu noch schnell erledigt und kostenlos ist, ist dies meiner Meinung nach die bessere Alternative.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/

Affiliatelinks/Werbelinks

Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂 


Übersicht

Bevor mit der Installation des MQTT Servers begonnen werden kann solltet ihr den RaspberryPi soweit vorbereitet haben, dass dieser über Putty erreichbar ist.
Die folgenden drei Artikel beschreiben was zu tun ist um den RaspberryPi soweit vorzubereiten:
RaspberryPi – Einrichten für Nerdiys!
RaspberryPI – Die Erste Konfiguration!
RaspberryPi – Den RaspberryPi über SSH steuern

Benötigtes Material:
-keins-

Benötigtes Material:

In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.


Per SSH auf dem RaspberryPi einloggen

Um zu beginnen müsst Ihr Euch als erstes mit Putty per SSH auf dem RasPi einloggen. Wie das geht ist im Artikel RaspberryPi - Den RaspberryPi über SSH steuern beschrieben.

Nach der Eingabe Eures Benutzernamen und Passworts könnt Ihr die ersten Befehle eingeben.

Paketverwaltung aktualisieren

Die Paketverwaltung in Linux ist eine "zentrale Stelle" über die sich diverse Software-Pakete installieren lassen. Damit dies zuverlässig funktioniert sollten vor jeder Installation von neuen Paketen die Listen und Quellen der Paketverwaltung aktualisiert werden.

Um das Update der Paketverwaltung zu starten müsst ihr folgenden Befehl eingeben.
sudo apt-get update && sudo apt-get upgrade
Je nachdem wie lange Euer letztes Update der Paketverwaltung her ist kann dieser Vorgang nun etwas dauern. Dabei werden zuerst die Listen aktualisiert in denen auf die einzelnen Paketquellen verwiesen wird.
Danach werden die Pakete selber aktualisiert. Da dabei zusätzlicher Speicher belegt wird, werdet Ihr nochmal nach Eurem Einverständnis gefragt. Dies müsst Ihr mit einem "J" und "Enter" bestätigen.
Ist die Aktualisierung abgeschlossen wird euch eine kleine Zusammenfassung über die Dauer und den Umfang des Updates angezeigt.

Mosquitto installieren

Als MQTT-Server kann man die kostenlose Open-Source Software „Mosquitto“ nutzen. Dieser lässt sich ganz einfach über den Paketmanager mit folgenden Befehl installieren:

sudo apt-get install mosquitto mosquitto-clients


Autostart für den MQTT Server einrichten

Damit der MQTT-Server nach einem Neustart eures RaspberryPi’s automatisch startet müsst Ihr nun noch den Autostart für diesen aktivieren. Dies geht mit folgendem Befehl.

sudo systemctl enable mosquitto.service

Status des MQTT Servers kontrollieren

Nach der Installation wird „Mosquitto“ automatisch gestartet. Ob dies geklappt hat könnt Ihr mit folgendem Befehl überprüfen:

sudo service mosquitto status
Es sollte in gürn „active(running)“ lesbar sein. Um diese Satus-Ansicht wieder zu verlassen müsst ihr STRG+C drücken.

Stoppen lässt sich der MQTT-Server mit folgendem Befehl:

sudo service mosquitto stop

Starten lässt sich der MQTT-Server mit folgendem Befehl:

sudo service mosquitto start

Funktion prüfen

Um nun einen ersten Test durchzuführen wollen wir versuchen eine Nachricht an den Sevrer zu senden und gleichzeitig von diesem zu empfangen. Dazu müssen wir ein Topic des MQTT-Servers abonieren und gleichzeitig aus einem anderen Fenster eine Nachricht an dieses abonierte Topic senden.
Um zu starten müsst ihr als erstes folgenden Befehl in Putty eingeben:

mosquitto_sub -h localhost -v -t testTopic
Dies startet den MQTT Subscriber. Also einen Clienten der sich mit dem gerade erstellten Server(deswegen localhost) verbindet und auf das Topic „testTopic“ horcht. Sobald nun von einem anderen MQTT Clienten Daten an den Server unter dem Topic „testTopic“ gesendet werden, werden diese hier angezeigt.
Nun öffnet ihr ein neues Putty-Fenster(Aber lasst das alte geöffnet).

In dieses neue Putty-Fenster gebt ihr folgenden Befehl ein:

mosquitto_pub -h localhost -t testTopic -m "Ein Mosquitto fliegt, ein Mosquitto piekst. "
Dieser Befehl sendet den Text „Ein Mosquitto fliegt, ein Mosquitto piekst.“ An das Topic „testTopic“ das ihr zuvor im anderen Putty-Fenster abonniert habt.

Ihr solltet nun die soeben gesendete Nachricht im ersten Putty Fenster angezeigt bekommen.
Falls dies klappt hat euer MQTT-Server den ersten Test bestanden. 🙂

Sicherheitsinweis: Es ist noch keine Verschlüsselung oder Benutzererkennung aktiv. Das heißt jeder der zu eurem Netzwerk Zugang hat kann sich an dem MQTT Server anmelden und Daten daran senden oder davon empfangen. Ich werde in einem späteren Artikel erklären wie man diese beiden Sicherheitslücken schließen kann.


Viel Spaß mit dem Projekt

Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com       

Kommentar hinterlassen

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.