Last Updated on 31. Mai 2019 by sfambach
Ich bin im Netz auf den Begriff MQTT gestossen und fand den Ansatz dahinter richtig gut. Deshalb habe ich mir mal einen kleinen Versuchsaufbau gegönnt, den ich im folgenden beschieben habe.
Vorab ein paar Details zu MQTT
Infos zu MQTT
Allgemeines
MQTT regelt die Kommunikation zwischen Datenquellen und Datensenken mittels eines Brokers.
Datenquelle
Quellen für Daten können ganz unterschiedliche Geräte sein, eines haben sie jedoch alle gemeinsam, sie können Netzwerkverbindungen aufbauen um Ihre Daten weiter zu geben und sie haben was, was sie mitteilen wollen.
In der IoT können dies Sensor-Knoten sein, welche ihre Daten an einen oder mehrere Empfänger senden wollen. Die Liste der möglichen Daten ist hierbei nahe unendlich. Beispiele sind Temperaturwerte, Schaltzustände, Helligkeitswerte usw.
Die Quelle meldet sich an einem (oder mehreren Brokern?) an. Ihre Daten sendet sie so lange bis diese vom Broker quittiert wurden.
Datensenken (Interessenten)
Senken für Daten sind bei MQTT die sog. Interessenten. Diese möchten bestimmte Informationen von Quellen erhalten und diese dann Auswerten (Berechnung) oder einfach nur Präsentieren (Bildschirmanzeige). Beispiele sind Handy Apps, eine Lampe die wissen will wann sie eingeschaltet wird usw.
Broker
Der Broker dient als Bindeglied zwischen den Quellen und den Senken. Er hat die Aufgabe, Daten von Quellen zu sammeln und diese an die Interessenten weiter zu reichen. Eine Auswertung/ Aufbereitung der Daten ist ihm nicht gestattet, jedoch darf er die Daten zwischenspeichern, um zum Beispiel neuen Interessenten mit dem zuletzt empfangenen oder auch mit historischen Werten zu versorgen.
Die Idee hinter dem Protokoll ist, dass Leistungsschwache Sensorknoten nur eine Verbindung mit einem Broker (Empfänger Server) aufbauen und nur an diesen senden sie ihre Daten. Der leistungstärkere Broker verteilt die Informationen dann an die Interessenten.
Ein kleines Projekt
Ich habe ein kleines Projekt aufgesetzt, mit einem Sensorknoten als Quelle, einem Broker auf einem Raspberry Pi und meinem Handy als Senke.
Quelle
- Board Node MCU ESP8266
- Temperatursensor DHT11
- Bibliothek pubsubclient
Der genaue Aufbau ist in einem anderen Beitrag bereits beschrieben, weshalb ich mich hier nur auf die MQTT basierten Fakten stürze.
Die Bibliothek installieren:
Hier ist der nach MQTT angepasste Quellcode:
Bitte die Netzwerkdaten und die Brokerdaten an eure Topologie anpassen. Achtung der DHT Sensor benötigt auch eine Bibliothek wie im gelinkten Beitrag beschrieben.
Broker
Raspberry nach belieben aufsetzten oder so wie hier:
Auf dem Pi dann die Mosquitto software installieren.
Software Download
Link: http://mosquitto.org/download
Die letzte Version holen, der Link kann von der obigen Seite kopiert werden. Die aktuelle Version kann mit wget direkt auf den PI geholt werden:
sudo wget <direkter link zum paket>
in meinem Fall war das
sudo wget http://mosquitto.org/files/source/mosquitto-1.5.tar.gz
Installation
Benötigte libs installieren mit
sudo apt-get install libwrap0-dev libcurl4-openssl-dev libmysqlclient-dev libssl-dev apt-get install uuid-dev
Paket auspacken:
tar zxf ./mosquitto-1.5.tar.gz
In den ausgepackten Ordner springen und mosquitto …
cd mosquitto-1.5/
… bauen und Installieren …
make
sudo make install
sudo ldconfig
… noch starten
Den ESP8266 starten und die erste Verbindung sollte klappen:
Senke
Ich verwende mein Handy als Senke und einen MQTT Empfänger APP. Ich habe ein paar probiert, bin dann aber erstmal mal bei „IoT MQTT Panel“ hängen geblieben, weil sie auf Anhieb funtkionierte und auch Platzhalter unterstüzt.
Folgende Einstellungen habe ich vorgenommen, ihr müsst diese natürlich an eure Applikation und Netzwerktopoligie anpassen.
Erstmal eine neue Verbindung erstellen mit den Verbindungsdaten des Mosquitto Servers.
Die Neue Verbindung öffnen
Fazit
Solch ein MQTT Projekt ist in wenigen Stunden aufgebaut und macht Spaß. Dabei hat es noch großes Potential, denn man kann leicht mehrere Knoten mit einem standard Server verbinden und zusätlich die Daten z.B. auf dem Handy anzeigen lassen.
Verwandte Links
Quellen
MQTT Git-hub Community Wiki
https://github.com/mqtt/mqtt.github.io/wiki
Github Seite mit MQTT libs
https://github.com/mqtt/mqtt.github.io/wiki/libraries
Lib für ESP8266 und Andere
https://github.com/knolleary/pubsubclient
Mosquitto Broker Konfigurationhilfe
http://www.steves-internet-guide.com/mossquitto-conf-file/
MQTT best practice
https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices