Unter den vielen IoT-Protokollen erfreut sich MQTT und seine Erweiterung MQTT-SN wachsender Beliebtheit.

Unter den vielen IoT-Protokollen erfreut sich MQTT und seine Erweiterung MQTT-SN wachsender Beliebtheit. (Bild: AdobeStock_348898092, Nadya_C)

Wesentliche Grundlage des IoT ist die Kommunikation, an die hohe Anforderungen gestellt werden. Produktionsanlagen in einer Industrie-4.0-Fabrik müssen unter Umständen in Echtzeit auf einen Befehl von einem zentralen Controller reagieren. In diesem Fall sind sehr niedrige Netzwerklatenzzeiten erforderlich. Batteriebetriebene, ferngesteuerte Sensoren, die beispielsweise den Bodenzustand in der Landwirtschaft überwachen, können sich dagegen über lange Zeiträume im Standby-Modus befinden und werden nur zum Senden kurzer Datenpakete aufgeweckt.

Diese Anwendungen nutzen ein breites Spektrum an Verbindungsmöglichkeiten, darunter Mobilfunknetze, drahtlose Technologien wie Wi-Fi oder Bluetooth, kabelgebundenes Ethernet und sogar Satellitenkommunikation. Kommunikationsprotokolle sind ein Schlüsselelement des IoT-Technologie-Stacks eines jeden Geräts und ermöglichen den strukturierten Datenaustausch zwischen IoT-Geräten oder „Dingen“ und den zugehörigen Anwendungen über das gewählte Transportmedium.

Es wurden verschiedene Protokolle entwickelt, um die Anforderungen verschiedener Klassen von IoT-Anwendungen zu erfüllen, darunter CoAP, XMPP und DDS. Unter ihnen gehören MQTT (Message Queuing Telemetry Transport) und seine Erweiterung MQTT-SN zu den meistverbreiteten Protokollen für die wachsende Kategorie der LPWA-Netzwerke (Low-Power-Wide-Area).

Was ist MQTT?

MQTT (Message Queuing Telemetry Transport) ist ein leichtes Protokoll mit einfacher Architektur und benötigt nur wenig Code. Somit eignet es sich gut für die wachsende Anzahl von kostengünstigen Mikrocontroller-basierten Systemen mit geringem Energieverbrauch, die in IoT-Anwendungen zum Einsatz kommen. MQTT läuft über das TCP/IP-Protokoll und wurde speziell für Netzwerke mit schlechter Qualität entwickelt, in denen die Latenzzeiten hoch sein können. Das Protokoll eignet sich ideal für Anwendungen mit den folgenden Kommunikationsanforderungen:

  • Minimale Bandbreitennutzung
  • Drahtlose Netzwerkkonnektivität
  • Niedriger Energieverbrauch
  • Hohe Zuverlässigkeit, falls erforderlich
  • Minimaler Bedarf an Verarbeitungs- und Speicherressourcen

MQTT ist in IoT-Anwendungen wie intelligenten Messgeräten, Asset-Trackern und vernetzten Sensoren für Industrieanlagen sehr beliebt. Aufgrund der effizienten Nutzung der Bandbreite eignet sich das System sehr gut für Szenarien, in denen die Netzwerkkosten hoch und der Energieverbrauch kritisch sind, beispielsweise wenn entfernte Sensorarrays jahrelang autonom und ohne Wartung im Feld funktionieren müssen. Es ist auch prädestiniert für mobile Anwendungen, da es nur wenig Code benötigt und Daten effizient an einen bzw. zahlreiche Teilnehmer verteilt.

Funktioneller Überblick über MQTT

Im Gegensatz zu einem Client-Server-Modell arbeitet MQTT auf einer Publisher-and-Subscriber-Basis mit zwei funktionalen Einheiten: dem MQTT-Broker (einem zentralen Server) und dem MQTT-Client. Jedes „Ding“, ob Gerät oder Anwendung, in einem IoT-Netzwerk kann ein MQTT-Client werden. Clients veröffentlichen oder abonnieren Nachrichten nicht direkt untereinander, sondern in „Topics“ (Themen), die der MQTT-Broker verwaltet. Die Topics sind vergleichbar mit E-Mail-Postfächern. Ein Client veröffentlicht eine Nachricht in einem Topic und jeder andere Client, der dieses Topic abonniert hat, erhält die Nachricht.

Der MQTT-Broker ist dafür verantwortlich, alle veröffentlichten Nachrichten zu empfangen und ihre Zustellung an alle abonnierten Clients sicherzustellen. Nachrichten werden gemäß einer Reihe von vereinbarten QoS-Stufen (Quality of Service) veröffentlicht (siehe unten). Der Broker authentifiziert außerdem alle IoT-Geräte im Netzwerk z.B. Sensoren und verwaltet Verbindungen, Sitzungen und Abonnements (Bild 1).

Bild 1: MQTT besteht aus Brokern und Clients. Es ist ein leichtes Protokoll mit einfacher Architektur und benötigt nur wenig Code.
Bild 1: MQTT besteht aus Brokern und Clients. Es ist ein leichtes Protokoll mit einfacher Architektur und benötigt nur wenig Code. (Bild: MQTT Org)

Im Video erklärt: Das ist MQTT und das kann es (engl.)

Was ist MQTT-SN?

MQTT-SN ist eine optimierte Version von MQTT, die speziell für große drahtlose Sensornetzwerke entwickelt wurde, die zusätzliche Effizienz bei der Datenübertragung und beim Energieverbrauch benötigen. MQTT-SN verbessert die Effizienz der Datenübertragung durch Verkürzung der Topic-IDs. Durch die Möglichkeit, diese verkürzten IDs sowohl in den Client als auch in den Broker zu programmieren, wird auch das Control Messaging reduziert.

Ein Keep-Alive-Verfahren innerhalb von MQTT-SN ermöglicht es den Geräten auch, in den Sleep-Modus zu gehen und alle in der Warteschlange stehenden Nachrichten abzurufen, wenn sie aufwachen.

Diese MQTT-Konzepte gibt es: Von Topics bis QoS

Neben den Broker- und Client-Entitäten sind die folgenden Konzepte von zentraler Bedeutung für den Betrieb von MQTT und MQTT-SN: Topics, Verbindungen, Abonnements und QoS. Topics sind grundlegend für die effiziente Nutzung der Bandbreite durch MQTT. Sie haben eine mehrstufige Struktur (Bild 2). MQTT-Clients abonnieren nur die Themen, an denen sie interessiert sind. Mit Wildcard-Einträgen können sie auf mehrere Themen zugreifen. MQTT-Topics erleichtern die effiziente Organisation des Datenflusses durch das IoT-Netzwerk und ermöglichen eine breite Skalierung, da Geräte nur Daten von den abonnierten Topics empfangen.

Bild 2: MQTT Topics haben eine mehrstufige Struktur. Clients abonnieren nur die Themen, an denen sie interessiert sind.
Bild 2: MQTT Topics haben eine mehrstufige Struktur. Clients abonnieren nur die Themen, an denen sie interessiert sind. (Bild: u-blox)

So funktioniert bei MQTT die Verbindung zum Broker

MQTT-Clients müssen eine Verbindung zum Broker herstellen, um Nachrichten zu veröffentlichen oder zu abonnieren. Der Client gibt seine ClientID, seinen Benutzernamen und sein Kennwort an, wenn er eine Connect-Anfrage sendet, die vom Broker bestätigt wird. Verbindungsanfragen können mit den folgenden Parametern qualifiziert werden:

Clean Session – ermöglicht, dass eine Verbindungsanfrage auch alle gespeicherten Nachrichten aus der Abonnentenwarteschlange löscht.

Keep Alive – unterstützt batteriebetriebene Geräte im Sleep-Modus durch Festlegen der längsten Zeitspanne, die eine Verbindung aktiv bleiben soll, wenn keine Nachrichten vom Broker oder Client gesendet werden. Alle Nachrichten, die während dieses Zeitraums für den Client eingehen, werden vom Broker bis zum Ende des angegebenen Zeitfensters gespeichert.

Sleep (nur MQTT-SN) – wenn ein Gerät dem Broker mitteilt, dass es in den Sleep-Modus wechselt, stellt der Broker alle abonnierten Nachrichten für den angegebenen Zeitraum in die Warteschlange. Der Hauptunterschied zwischen diesem und dem Keep-Alive-Modus besteht darin, dass der Broker alle Nachrichten unabhängig von der QoS-Stufe speichert, während im Keep-Alive-Modus nur die Nachrichten mit QoS 1 und QoS 2 gespeichert werden. Der Sleep-Modus ermöglicht es dem Client auch, seine Nachrichtenwarteschlange zu leeren, ohne dass er aufwachen muss.

Welchen Zweck haben Abonnements bei MQTT?

Subscribe-Anfragen werden von Clients verwendet, um ein oder mehrere Themen zu abonnieren. Es kann eine von zwei verschiedenen Wildcard-Einstellungen verwendet werden, wie in Bild 3 dargestellt.

Die Wildcard „+“ ersetzt eine einzelne Topicebene, so dass die Anfrage „sensors/+/out“ die folgenden Topics abonnieren würde:

  • sensors/soil/out
  • sensors/water/out
  • sensors/light/out

Die Wildcard „#“ ersetzt mehrere Topicebenen, so dass diese Wildcard die folgenden Themen abonnieren würde:

  • sensors/soil/out
  • sensors/soil/in
  • sensors/temperature/out
Bild 3: Die Wildcard „+“ ersetzt eine einzelne Topicebene (oben); die Wildcard „#“ ersetzt mehrere Topicebenen (unten).
Bild 3: Die Wildcard „+“ ersetzt eine einzelne Topicebene (oben); die Wildcard „#“ ersetzt mehrere Topicebenen (unten). (Bild: u-blox)

Wie funktioniert Quality of Service (QoS) bei MQTT?

MQTT und MQTT-SN verwenden QoS-Modi (Quality of Service), um dem Herausgeber von Informationen die Möglichkeit zu geben, die Qualität seiner Nachricht zu definieren. Tabelle 1 fasst diese Modi zusammen und zeigt, wie sie je nach den Einschränkungen einer bestimmten Anwendung zum Einsatz kommen können.

Abonnements haben auch eine zugehörige QoS-Einstellung, zum Einsatz kommen kann, um die QoS der veröffentlichten Nachricht herabzustufen, wobei die Nachricht immer mit der niedrigeren QoS-Einstellung veröffentlicht wird.

Tabelle 1: QoS-Modi und ihr Einsatz je nach Anwendungsfall.
Tabelle 1: QoS-Modi und ihr Einsatz je nach Anwendungsfall. (Bild: u-blox)

In Kürze: 5 Fragen und Antworten zum IoT-Protokoll MQTT

Frage 1: Was ist MQTT und wofür wird es im Internet der Dinge (IoT) verwendet?

Antwort 1: MQTT steht für "Message Queuing Telemetry Transport" und ist ein leichtes Kommunikationsprotokoll, das sich gut für IoT-Anwendungen eignet. Es wird verwendet, um strukturierten Datenaustausch zwischen IoT-Geräten und Anwendungen über verschiedene Netzwerkverbindungen zu ermöglichen.

Frage 2: Welche Anforderungen erfüllt MQTT in IoT-Anwendungen?

Antwort 2: MQTT erfüllt Anforderungen wie minimale Bandbreitennutzung, drahtlose Netzwerkkonnektivität, niedrigen Energieverbrauch, hohe Zuverlässigkeit und einen minimalen Bedarf an Verarbeitungs- und Speicherressourcen. Es ist besonders für batteriebetriebene Sensoren und Anwendungen in Umgebungen mit schlechter Netzwerkqualität geeignet.

Frage 3: Wie funktioniert die Kommunikation in MQTT?

Antwort 3: MQTT basiert auf dem Publish-and-Subscribe-Modell. Es gibt MQTT-Broker (Server) und MQTT-Clients (Geräte oder Anwendungen). Clients veröffentlichen Nachrichten in "Topics", die vom Broker verwaltet werden. Andere Clients können diese Topics abonnieren, um die Nachrichten zu empfangen.

Frage 4: Was ist MQTT-SN und wie unterscheidet es sich von MQTT?

Antwort 4: MQTT-SN (MQTT for Sensor Networks) ist eine optimierte Version von MQTT, die für drahtlose Sensornetzwerke entwickelt wurde. Es verbessert die Effizienz der Datenübertragung und ermöglicht batteriebetriebenen Geräten, Energie zu sparen.

Frage 5: Welche Rolle spielt Quality of Service (QoS) in MQTT?

Antwort 5: MQTT verwendet QoS-Modi, um die Qualität von Nachrichten zu definieren. Dies ermöglicht dem Herausgeber, die Nachrichtenqualität je nach Anwendungsfall festzulegen. Es gibt drei QoS-Stufen: 0, 1 und 2, die verschiedene Zuverlässigkeitsstufen bieten.

Kommunikation ist mehr als Konnektivität

Mit dem IoT Communication-as-a-Service-Portfolio von u-blox (Bild 4) wird die Übertragung von Daten von IoT-Geräten aus aller Welt an ein Unternehmen durch die Verfügbarkeit von drei einander ergänzenden Produkten vereinfacht: MQTT Anywhere, MQTT Here und MQTT Now. Diese Produkte basieren auf der Grundlage eines skalierbaren, leistungsstarken MQTT-Brokers und eines leistungsstarken Datenfluss-Managers, sodass eine einfache Verarbeitung, Umwandlung und Integration von Nachrichten möglich sind. Auf dem hart umkämpften IoT Markt von heute sind kurze Entwicklungszyklen entscheidend. Mit der IoT Communication-as-a-Service Plattform nutzt u-blox die Vorteile von MQTT, um die Datenkommunikation zwischen IoT-Geräten und dem Unternehmen zu vereinfachen.

Bild 4: Das IoT-Communication-as-a-Service-Portfolio von u-blox.
Bild 4: Das IoT-Communication-as-a-Service-Portfolio von u-blox. (Bild: u-blox)

MQTT in Kürze

MQTT und seine Erweiterung MQTT-SN gehören zu den meistverbreiteten Protokollen für die wachsende Kategorie der LPWA-Netzwerke. Das Protokoll basiert auf einer Publish-and-Subscribe-Basis mit einem MQTT-Broker und einem MQTT-Client. Das Konzept arbeitet praktisch wie ein E-Mail-Postfach, indem der Client verschiedene Topics, z.B. bestimmte Sensordaten, abonnieren kann. MQTT kommt heute schon weitläufig zum Einsatz, z.B. in der Automobil-Industrie, der Fertigung und der Telekommunikation und es stehen zahlreiche Tools zur Verfügung, die Entwicklern den Einstieg erleichtern.

Zusammenfassung

MQTT wird in Anwendungen in verschiedenen Branchen eingesetzt, unter anderem in der Automobilindustrie, der Öl- und Gasindustrie, der Fertigung und der Telekommunikation. Das Protokoll wird in der IoT Community breit unterstützt, und es stehen zahlreiche Tools, einschließlich Broker- und Client-Bibliotheken, zur Verfügung, die den Entwicklern den Einstieg erleichtern. (na)

Eric Heiser

SVP, Head of Product Center Services bei u-blox

Sie möchten gerne weiterlesen?

Unternehmen

u-blox ag

Züricher Straße 68
8800 Thalwil
Switzerland