MQTT, einfach erklärt!

Geschichte von MQTT

MQTT steht für Message Queuing Telemetry Transport und ist ein Netzwerkprotokoll für die  Kommunikation von Machine to Machine (M2M). 

Das MQTT-Protokoll wurde 1999 von Dr. Andy Stanford-Clark (IBM) und Arlen Nipper (Arcom, jetzt Cirrus Link) erfunden. Sie benötigten ein Protokoll für minimalen Batterieverlust und minimale Bandbreite, um eine Verbindung mit Ölpipelines über Satellit herzustellen. Allerdings hat sich der primäre Fokus des Protokolls von eingebetteten Systemen zu offenen Internet of Things (IoT) Anwendungsfällen geändert.

Client — Server (Broker) — Prinzip

Die Sender (Publisher) und der Abonnent (Subscriber) treten nie direkt miteinander in Kontakt. Tatsächlich sind sie sich nicht einmal bewusst, dass der andere existiert. Die Verbindung zwischen ihnen wird von einer dritten Komponente, dem MQTT Broker abgewickelt. Die Aufgabe des Brokers ist es, alle eingehenden Nachrichten zu filtern und sie korrekt an die Abonnenten zu verteilen. Der MQTT-Broker steht im Mittelpunkt jedes Publish / Subscribe Protokolls und er kann bis zu Tausende gleichzeitig verbundene MQTT Client verwalten. 

Jeder Teilnehmer kann Daten an den Broker senden. Als Beispiel hier ein Temperatursensor. Der sendet die Daten genannt Payload, hier 20 °C an das Topic: „temperatur“. Das Topic ist das Thema (Betreff) für die Daten. Jeder Teilnehmer der das Topic „temperatur“ abonniert hat, bekommt vom Broker die Daten übermittelt.

MQTT Server Client prinzip
Das MQTT-Topic

Das Topic übersetzt Thema, wird vom Broker zum Filtern von Nachrichten aller Clients verwendet. 

Das Topic besteht aus einer oder mehreren Themenebenen. Jede Themenebene wird durch einen Schrägstrich (/) getrennt. 

Hier ein paar Grundregeln um eine saubere Topic Struktur zu erstellen.

  • Verwende den / nicht am Begin eines Topics. 
  • Leerzeichen in den Topics vermeiden
  • Kurze Topics verwenden
  • Keine Sonderzeichen verwenden
 
Topic Wildcards

Wenn ein Client ein Topic abonniert, kann er genau das Topic einer veröffentlichten Nachricht abonnieren oder er kann Platzhalter verwenden, um mehrere Topics gleichzeitig zu abonnieren. Ein Platzhalter kann nur zum Abonnieren von Topics verwendet werden, nicht zum Versenden einer Nachricht. Es gibt zwei verschiedene Arten von Platzhalter, einstufig und mehrstufig.

Einstufig:

Mit dem + Zeichen kann ein oder mehrere Topic Level ersetzt werden, machen wir hierzu ein Beispiel. Nehmen wir an, dass wir alle Temperaturen im Erdgeschoss ansehen wollen. Die wildcard wird für die verschiedenen Räume im Erdgeschoss verwendet.

Topic: Haus/Erdgeschoss/+/Temperatur

Als Ergebnis haben wir folgende Topic‘s abonniert.

  • Haus/Erdgeschoss/Kueche/Temperatur
  • Haus/Erdgeschoss/Stauraum/Temperatur
  • Haus/Erdgeschoss/Terrasse/Temperatur
 
Mehrstufig:

Mit dem # Zeichen werden mehrere Topic Level ersetzt und das # Zeichen steht immer an letzter Stelle und ersetzt die nachfolgenden Topic Level, unabhängig wie tief sie verschachtelt sind.

Wird nur das # hashtag Symbol als Topic verwendet, dann werden alle Nachrichten die über MQTT gesendet werden abonniert. Aber machen wir zum besseren Verständnis wieder ein Beispiel.

Topic: # (Die sogenannte Root-Wildcard abonniert alle Topics)

Topic: Haus/Erdgeschoss/#

Als Ergebnis haben wir folgende Topics abonniert.

  • – Haus/Erdgeschoss/Kueche/Temperatur
  • Haus/Erdgeschoss/Kueche/Luftfeuchte
  • Haus/Erdgeschoss/Stauraum/Temperatur
  • Haus/Erdgeschoss/Stauraum/Licht
  • Haus/Erdgeschoss/Terrasse/Temperatur
  • – U.s.w.
 
Quality of Service Levels

QoS steht für Quality of Service und gibt an, wie sicher eine Nachricht zugestellt werden soll. Es gibt drei QoS Stufen von 0 bis 2, aber schauen wir uns jede einzelne Stufe etwas genauer an.

QoS 0 – at most once (höchstens einmal)
MQTT QoS0
QoS 1 – at least once (mindestens einmal)
MQTT QoS1
– QoS 2 – exactly once (genau einmal)
MQTT QoS2
Last Will and Testament 

Mit der Last Will and Testament (LWT) Funktion kann im Broker beim Ersten verbinden, das Testament vom Client gespeichert werden. Das LWT ist eine normale MQTT Nachricht im CONNECT Packet mit allen Parameter wie Topic, QoS, retained message flag und Payload. Wenn der Client die Verbindung zum Broker verliert, dann sendet der Broker die Last-Will-Nachricht an alle Clients, die das Last-Will-Topics abonniert haben.

►Praxis Beispiel Material:

* https://amzn.to/3fzAe0M – Widerstand Set

* https://amzn.to/3oUZ14g – 300 Stk. Leuchtdioden Set 3 und 5 mm

* https://amzn.to/34ifkjS – 180 Stück Taktilen Drucktaster Sortiment

* https://amzn.to/2QQ7JSL – Breadboard Steckbrett mit 830 Kontakten oder

* https://amzn.to/35GcPIp – 3 Stk. Breadboard Steckbrett mit 400 Kontakten

* https://amzn.to/2xeKb2V – Set 3 x 40 STK. je 20 cm M2M/ F2M / F2F

https://amzn.to/2U7Urmn – NodeMCU ESP8266 ESP-12F

https://amzn.to/3erQVKq – ESP32 Node-MCU Board

Relais:

* https://amzn.to/3a5yUjQ – 1 Stk. Relais 5V KY-019 Modul – 10A

* https://amzn.to/2xi4Kvq – 3 Stk. Relais 5V KY-019 Modul – 10A

* https://amzn.to/2U9ZqmL – 5 Stk. Relais 5V KY-019 Modul – 10A

Netzteile:

* https://amzn.to/3beWY3V – 2er-Pack USB Ladegerät 5V/2A

* https://amzn.to/398WzP9 – Raspberry Pi 4 Netzteil, USB-C, 5.1V, 3A

* https://amzn.to/2wsS8Bh  – HomeSpot Netzteil 3A/5V inkl. 1,5M Micro USB Kabel 

Jumper Wire:

* https://amzn.to/2WxKwIl Female to Female F2F 40 STK. je 20 cm

* https://amzn.to/2xeKb2V – Set 3 x 40 STK. je 20 cm M2M/ F2M / F2F

►Breadboard:

* https://amzn.to/2QQ7JSL – Breadboard Steckbrett mit 830 Kontakten

USB Kabel:

* https://amzn.to/2y01THNUSB A auf Micro USB  Kabel 0.5m

* https://amzn.to/2xkgqgQ – USB auf Mini USB Kabel 0.5m

* https://amzn.to/2QBxCp7 – USB A zu USB B Kabel 0.5m

Alle Links mit “*” sind Amazon Affiliate Links. Ich bekomme bei einer Bestellung einen kleinen Teil vom Umsatz, ohne das euch dafür Mehrkosten entstehen.

Node-MCU ESP8266 Board:

* https://amzn.to/2U7Urmn – NodeMCU ESP8266 ESP-12F

* https://amzn.to/2J5wLJ3 – 3er Set, ESP8266 ESP-12F

* https://amzn.to/3belvGd – 5er Set, ESP8266 ESP-12F

Relais:

* https://amzn.to/3a5yUjQ – 1 Stk. Relais 5V KY-019 Modul – 10A

* https://amzn.to/2xi4Kvq – 3 Stk. Relais 5V KY-019 Modul – 10A

* https://amzn.to/2U9ZqmL – 5 Stk. Relais 5V KY-019 Modul – 10A

Netzteile:

* https://amzn.to/3beWY3V – 2er-Pack USB Ladegerät 5V/2A

* https://amzn.to/398WzP9 – Raspberry Pi 4 Netzteil, USB-C, 5.1V, 3A

* https://amzn.to/2wsS8Bh  – HomeSpot Netzteil 3A/5V inkl. 1,5M Micro USB Kabel 

Jumper Wire:

* https://amzn.to/2WxKwIl Female to Female F2F 40 STK. je 20 cm

* https://amzn.to/2xeKb2V – Set 3 x 40 STK. je 20 cm M2M/ F2M / F2F

►Breadboard:

* https://amzn.to/2QQ7JSL – Breadboard Steckbrett mit 830 Kontakten

USB Kabel:

* https://amzn.to/2y01THNUSB A auf Micro USB  Kabel 0.5m

* https://amzn.to/2xkgqgQ – USB auf Mini USB Kabel 0.5m

* https://amzn.to/2QBxCp7 – USB A zu USB B Kabel 0.5m

 

Alle Links mit “*” sind Amazon Affiliate Links. Ich bekomme bei einer Bestellung einen kleinen Teil vom Umsatz, ohne das euch dafür Mehrkosten entstehen.

Zum Video

★☆★ Wenn ihr den Kanal unterstützen wollt über ★☆★

oder über

Twint Spenden Code