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).

Das MQTT-Protokoll im Detail

MQTT 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 Publish-and-Subscribe-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 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)

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.

MQTT-Konzepte: 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)

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.

Abonnements

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)

Quality of Service (QoS)

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)

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)

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)

Eck-Daten

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 Pubslish-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.

Eric Heiser

SVP, Head of Product Center Services bei u-blox

Sie möchten gerne weiterlesen?

Registrieren Sie sich jetzt kostenlos:

Bleiben Sie stets zu allen wichtigen Themen und Trends informiert.
Das Passwort muss mindestens acht Zeichen lang sein.

Mit der Registrierung akzeptiere ich die Nutzungsbedingungen der Portale im Industrie-Medien-Netzwerks. Die Datenschutzerklärung habe ich zur Kenntnis genommen.

Sie sind bereits registriert?

Unternehmen

u-blox ag

Züricher Straße 68
8800 Thalwil
Switzerland