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.
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.
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 mosquitto status
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
In dieses neue Putty-Fenster gebt ihr folgenden Befehl ein:
mosquitto_pub -h localhost -t testTopic -m "Ein Mosquitto fliegt, ein Mosquitto piekst. "
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. 🙂