MQTT

Nach Bearbeitung dieses Kapitels können Sie ...

  • ... einen MQTT-Broker installieren.
  • ... Nachrichten, die den Broker erreichen mit entsprechenden Programmen auslesen und interpretieren.
  • ... mit einem ESP Sensordaten an einen MQTT-Broker senden.
  • ... mit einem ESP Daten von einem Broker empfangen und in Abhängigkeit Aktoren schalten.

Das Message Queue Telemetry Transport-Protokoll ist ereignis- und nachrichtenorientiert, überträgt die Nachrichten asynchron und kommt mit sehr geringen Ressourcen sowohl auf der Client-Seite als auch bei der Bandbreits aus. Der MQTT-Client legt eine beliebige Nachricht in einem von ihm festgelegten Pfad (Topic) auf einem MQTT-Broker ab (publish). Dieser schickt die eintreffenden Nachrichten an einen anderen Client, der sich für diese Nachrichten eingetragen hat (subscribe), dazu ist es nicht notwendig, dass Sender und Empfänger gleichzeitig erreichbar sind. Beim Empfangen ist der Einsatz von Wildcards (+ - Single-Level/# - Mulit-Level) möglich.

Die MQTT-Übersicht verdeutlicht die Zusammenhänge.

Das Protokoll kennt drei verschiedene Qualitätsstufen (QoS) bei der Datenübermittlung.

  • QoS0: Meist einmal
  • QoS1: Mindestens einmal
  • QoS2: Garantiert einmal

Falls der Client nicht dauernd erreichbar ist und die zuletzt eingegangene Nachricht zugestellt werden soll, muss das Retain-Flag für diese Nachricht gesetzt werden. Der Inhalt der Nachricht (Payload) wird bei neu ankommenden Nachrichten solange ersetzt, bis er an einen Client ausgeliefert werden kann.

Ein Client kann zusätzlich einen letzten Willen an den Broker schicken, der dann an die empfangenden Clients ausgeliefert wird, wenn die Verbindung abbricht.

(siehe: [1], [2], [3])

MQTT-Broker (z.B. Mosquitto) stehen zur Verfügung für

  • PC[4] - nach der Installation aufrufen mit "C:\Program Files\mosquitto\mosquitto" -v, dadurch ist in der Eingabeaufforderung sichtbar, welche Daten versendet werden.
  • Raspberry Pi[5] (auf dem Raspberry Pi 01 ist ein MQTT-Broker installiert (GSD-edu-IP: 10.7.140.68))
  • Außerdem gibt es eine Vielzahl frei zugänglicher Broker im Netz[6].

Mit Hilfe eines MQTT-Clients können die Daten auf dem Broker gelesen und verändert werden.

  • PC [7], [8]
  • Smartphone[9].
  • Um das Programm für den ESP zu erstellen, fügen Sie über die Bibliotheksverwaltung 'PubSubClient by Nick O'Leary' hinzu (https://pubsubclient.knolleary.net/).
    Öffnen Sie Datei - Beispiele - PubSubClient - mqtt_esp8266.

Wichtig: Die hier behandelten Themen geben nur einen kleinen Einblick in die Verwendung des Protokolls im Test- und Lehrbetrieb. Für den Echtbetrieb müssen unbedingt Sicherheitsmaßnahmen getroffen werden! Z.B. Verschlüsselung mit TLS/SSL, Authentifizierung, Authorisierung, etc.


Arbeitsauftrag:

  1. Senden Sie Temperatur- oder Potiwerte in regelmäßigen Abständen an einen MQTT-Broker. Prüfen Sie regelmäßig, ob die Verbindung zum Broker noch besteht und Sie stellen diese ggf. wieder her. Kontrollieren Sie die eingehenden Nachrichten mit einem MQTT-Client.
    Nutzen Sie dazu diese Library und öffnen Sie das Beispiel Datei - Beispiele - PubSubClient - mqtt_esp8266.
    Kommentieren Sie den Quelltext und speichern Sie diesen unter dem Namen 'ESP2MQTT_01' ab.
  2. Geben Sie eingehende Nachrichten in einem festgelegten Topic im Seriellen Monitor aus.
    Schalten Sie bei erreichen eines Schwellwerts eine LED ein und bei unterschreiten des Schwellwerts wieder aus.
    Kommentieren Sie den Quelltext und speichern Sie diesen unter dem Namen 'MQTT2ESP_01' ab.
  3. Schließen Sie an einem beliebigen Pin des ESPs einen Taster an (PullUp-Widerstand nicht vergessen oder internen PullUp verwenden) und schalten Sie damit eine LED an einem anderen Pin ein und aus. Alternativ können Sie die eingebaute LED verwenden.
    Schicken Sie den Zustand der LED an einen MQTT-Broker und beobachten Sie das Topic mit einem MQTT-Client.
    Kommentieren Sie den Quelltext und speichern Sie diesen unter dem Namen 'ESP2MQTT_02' ab.
  4. Rufen Sie mit einem anderen ESP den Zustand der LED vom MQTT-Broker ab und schalten Sie eine angeschlossene oder die eingebaute LED entsprechend.
    Kommentieren Sie den Quelltext und speichern Sie diesen unter dem Namen 'MQTT2ESP_02' ab.

Links:

Literatur*

  1. Walter Trojan: Das MQTT-Praxisbuch. Elektor-Verlag, Aachen 2017, ISBN: 978-3-89576-324-3

[*] Bei der angegebenen weiterführenden Literatur handelt es sich nicht um Schulbücher. Der Erwerb ist für den Unterricht nicht erforderlich und nicht vorgeschrieben. Die Bücher geben die Möglichkeit, sich tiefer in ein Teilgebiet ein zu arbeiten.