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.
Safety instructions
I know the following notes are always kind of annoying and seem unnecessary. Unfortunately, many people who knew "better" have lost eyes, fingers or other things due to carelessness or injured themselves. Data loss is almost negligible in comparison, but even these can be really annoying. Therefore, please take five minutes to read the safety instructions. Because even the coolest project is not worth injury or other trouble.
https://www.nerdiy.de/sicherheitshinweise/
Affiliate links/advertising links
The links to online shops listed here are so-called affiliate links. If you click on such an affiliate link and make a purchase via this link, Nerdiy.de will receive a commission from the relevant online shop or provider. The price does not change for you. If you make your purchases via these links, you support Nerdiy.de in being able to offer other useful projects in the future. 🙂
Overview
Bevor mit der Installation des MQTT Servers begonnen werden kann solltet ihr den RaspberryPi soweit vorbereitet haben, dass dieser über Putty erreichbar ist.
The following three articles describe what needs to be done to prepare the RaspberryPi:
RaspberryPi – setup for nerdiys!
RaspberryPI - The First Configuration!
RaspberryPi – Control the RaspberryPi via SSH
Required material:
-no-
Required material:
In the following list you will find all the parts you need to implement this article.
Log in to the RaspberryPi via SSH
To start, you must first log in to the Rasp Pi with Putty via SSH. How to do this is in the article RaspberryPi - Control the RaspberryPi via SSH described.

Update package management
The package management in Linux is a "central place" through which various software packages can be installed. In order for this to work reliably, the lists and sources of the package management should be updated before each installation of new packages.

sudo apt-get update && sudo apt-get upgrade



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 mosquito status

Stoppen lässt sich der MQTT-Server mit folgendem Befehl:
sudo service mosquito stop
Starten lässt sich der MQTT-Server mit folgendem Befehl:
sudo service mosquito 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


In dieses neue Putty-Fenster gebt ihr folgenden Befehl ein:
mosquitto_pub -h localhost -t testTopic -m "A mosquito flies, a mosquito pricks."

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.
Have fun with the project
I hope everything worked as described for you. If not or you have questions or suggestions please let me know in the comments. I will then add this to the article if necessary.
Ideas for new projects are always welcome. 🙂
PS Many of these projects - especially the hardware projects - cost a lot of time and money. Of course I do this because I enjoy it, but if you think it's cool that I share the information with you, I would be happy about a small donation to the coffee fund. 🙂