MQTT-Anwendungsfälle: Wofür wird MQTT verwendet?

PubNub Developer Relations - Feb 7 - - Dev Community

Wofür wird MQTT verwendet?

MQTT ist ein leichtgewichtiges Nachrichtenprotokoll, das in der Regel mit IoT-Geräten verwendet wird, die energieeffizient sein und nur eine geringe Bandbreite verbrauchen sollen.

Das MQTT-Protokoll läuft über TCP/IP und basiert auf einem bidirektionalen Publish-Subscribe-Modell mit verlustfreier Kommunikation, das sicherstellt, dass MQTT-Nachrichten effizient und verlustfrei zugestellt werden.

MQTT wurde als Low-Overhead-Protokoll entwickelt, das die Grenzen von Bandbreite und CPU berücksichtigt. Es wurde so konzipiert, dass es in einer eingebetteten Umgebung ausgeführt werden kann, in der es zuverlässig und effektiv einen Weg für die Kommunikation bietet.

MQTT ist im Wesentlichen ein Publish/Subscribe-Protokoll (Pub/Sub). Es ermöglicht Clients, sich als Publisher, Subscriber oder beides mit bestimmten Themen zu verbinden. Sie stellen eine Verbindung zu einem Broker her, der die gesamte Nachrichtenübermittlung abwickelt, wobei jeder Client durch eine eindeutige Client-ID identifiziert wird.

Praktisches MQTT-Beispiel und Anwendungsfall

MQTT wird häufig für IoT-Anwendungen verwendet, um eine Verbindung zu Geräten mit geringem Stromverbrauch wie Sensoren, Aktoren und Haushaltsgeräten herzustellen und mit diesen zu kommunizieren, wobei die Nutzlast der übertragenen Daten effizient verwaltet wird.

In der Landwirtschaft wird MQTT zur Überwachung von Umweltfaktoren wie Bodenfeuchtigkeit, Temperatur und Luftfeuchtigkeit eingesetzt, so dass Landwirte die entsprechenden Maßnahmen ergreifen können. In der Industrieautomatisierung kann MQTT den gesamten Fertigungsprozess überwachen, um eine gleichbleibende Qualität zu gewährleisten und systemische Probleme in der Produktionskette zu erkennen. Im Transportwesen wird MQTT zur Überwachung von Ampeln, Parkuhren und dem Echtzeit-Standort öffentlicher Verkehrsmittel eingesetzt, wobei das Ökosystem und die geringen Bandbreitenanforderungen beachtet werden.

Warum MQTT anstelle von HTTP verwenden?

HTTP und MQTT sind zwei sehr unterschiedliche Kommunikationsprotokolle, die für unterschiedliche Zwecke verwendet werden.

HTTP ist ein Anfrage/Antwort-Protokoll, das Daten nur als Antwort auf eine Anfrage eines Clients liefert. Es ist für große Datenmengen ausgelegt und wird häufig für die Übertragung von Webseiten, Bildern und Videos verwendet. MQTT ist ein Pub/Sub-Protokoll, das die asynchrone Übermittlung von Nachrichten ermöglicht, wobei mehrere Clients ein einzelnes Thema abonnieren und Nachrichten von einem oder mehreren Herausgebern empfangen können. MQTT ist für kleine Datenmengen optimiert, ist aber in Bezug auf den Netzwerk-Overhead und den Stromverbrauch der Geräte effizienter als HTTP und eignet sich daher für Anwendungen, die eine geringe Bandbreite und einen minimalen Stromverbrauch erfordern, wie z. B. die von AWS IoT-Services verwalteten.

In welchen Sprachen ist MQTT geschrieben?

MQTT ist nur ein Protokoll und kann in vielen Sprachen geschrieben werden. MQTT-Client-Bibliotheken, die für die Kommunikation über das MQTT-Protokoll verwendet werden, sind jedoch in mehreren Sprachen wie C/C++, Java, Python und JavaScriptverfügbar , einschließlich Node.js, Ruby, Go, PHP und Swift. Eine MQTT-Client-Bibliothek kommuniziert über einen MQTT-Broker, der ebenfalls in mehreren Programmiersprachen verfügbar ist.

Wie funktioniert MQTT?

MQTT ist ein äußerst flexibles Protokoll, aber es gibt nur zwei grundlegende Einheiten: den MQTT-Client und den MQTT-Broker.

Wie funktionieren MQTT-Clients?

Der MQTT-Client kann jeder Endpunkt sein, der das MQTT-Protokoll implementiert. Im Fall von IoT ist der Client das angeschlossene Gerät, z. B. ein Sensor, ein Monitor oder ein Arduino-Board, aber MQTT ist nicht auf IoT beschränkt, der Client kann auch ein Smartphone oder ein Laptop sein.

MQTT-Clients kommunizieren nicht direkt miteinander. Alle Interaktionen werden jedoch von einer Serverkomponente, dem so genannten MQTT-Broker, vermittelt, der zwischen den Clients sitzt und die Weiterleitung der Nachrichten übernimmt.

Was ist die MQTT-Gruppierung?

Die gesamte Kommunikation in MQTT wird in "Topics" gruppiert. MQTT-Clients können Nachrichten in Topics veröffentlichen und Nachrichten von anderen abonnieren. Ein Topic kann eine beliebige Zeichenfolge sein und dient dazu, Themen von gemeinsamem Interesse zu gruppieren, z. B. würden Sensoraktualisierungen in einem Topic veröffentlicht, ebenso wie Nachrichten in einem Gruppenchat, je nach Anwendungsfall.

Was ist der MQTT-Broker?

Der Broker verwaltet, welche Clients bei welchen Themen angemeldet sind, empfängt Nachrichten, die in einem bestimmten Thema veröffentlicht werden, und sendet diese Nachricht an jeden Client, der Aktualisierungen abonniert hat. Wenn die Verbindung zwischen einem Client und dem Broker unterbrochen wird, ist der Broker auch dafür verantwortlich, die Nachricht zwischenzuspeichern und sie dem Client zuzustellen, wenn die Verbindung wiederhergestellt ist.

Welche MQTT-Broker können verwendet werden?

Der MQTT-Broker ist ein wesentlicher Bestandteil des MQTT-Protokolls und kann als MQTT-Server betrachtet werden. Wie bereits erwähnt, sitzt der Broker zwischen allen Clients und erleichtert die Kommunikation.

Es gibt viele MQTT-Broker, sowohl quelloffene als auch proprietäre, und eine der wichtigsten architektonischen Entscheidungen bei einem MQTT-basierten Einsatz ist die Frage, wie der Broker gehostet werden soll. Da MQTT für einen sehr großen Maßstab ausgelegt ist, muss jede Broker-Architektur entsprechend skaliert werden. Die meisten Unternehmen werden sich auf in der Cloud gehostete, firmeneigene Angebote verlassen, so dass sie sich keine Sorgen um die Infrastruktur machen müssen, obwohl es auch selbst gehostete Optionen gibt.

Da der Broker zwischen der gesamten Kommunikation sitzt, kann er Nachrichten aufbewahren und eine sichere Aufzeichnung aller Sitzungen führen; die Clients sind voneinander isoliert, so dass Client-Sicherheiten und -Schwachstellen in einer Sandbox untergebracht werden können, und je nach Netzwerktopologie kann ein Broker den Datenverkehr in Ihrem Netz insgesamt reduzieren und ein effizienteres Routing ermöglichen.

Wie man MQTT und Pub/Sub verwendet

Jeder Client, der das MQTT-Protokoll unterstützt, kann Topics abonnieren und veröffentlichen, aber die gesamte Kommunikation läuft über den Broker, wie im folgenden Beispielmodell dargestellt.

Wir haben unseren eigenen MQTT-Broker, die MQTT-Bridge, um PubNub nahtlos in Ihre MQTT-Lösung zu integrieren. Weitere Informationen finden Sie am Ende dieses Artikels.

Merkmale des MQTT-Protokolls

Obwohl MQTT oft als IoT-Lösung betrachtet wird, ist es nur das Protokoll, das vielen bekannten IoT-Produkten zugrunde liegt. Viele Eigenschaften von MQTT machen es besonders geeignet für die effiziente Kommunikation zwischen Geräten:

Einfache Einrichtung und Inbetriebnahme

MQTT gibt es schon seit langem, und es gibt viele robuste, zuverlässige und skalierbare proprietäre und Open-Source-Lösungen. Diese bereits vorhandenen MQTT-Komponenten können in allen Projekten verwendet werden, von großen Lösungen bis hin zu Hobbyprojekten, ohne Änderungen und unabhängig von der Erfahrung der Entwickler.

Verlässlichkeit und Konfiguration

MQTT verfügt über das Konzept der Dienstgüte (Quality of Service, QoS), auf das später noch näher eingegangen wird, bei dem Nachrichten im MQTT-Broker in eine Warteschlange gestellt und zwischengespeichert werden, so dass sie dem Client zugestellt werden, sobald die Verbindung wiederhergestellt ist. Dies funktioniert besonders gut bei teilweise verbundenen Geräten oder Clients mit unterbrochener Konnektivität, wie z. B. IoT-Geräten.

Der Client muss sich nicht um die Lösungsarchitektur kümmern

Mit MQTT veröffentlichen Sie Nachrichten in einem Topic und empfangen sie, wenn sie verfügbar sind. Als Client müssen Sie sich keine Gedanken über den Aufbau oder die Wiederherstellung einer Verbindung machen oder darüber, ob der/die Empfänger auf Ihre Nachrichten warten - es funktioniert einfach.

Für die Skalierung konzipiert

MQTT kann jede Größenordnung bewältigen, die Ihre Lösung erfordert, von Startups bis hin zu globalen Unternehmen. Am bekanntesten ist der Facebook Messenger, der MQTT für seine Kommunikation verwendet.

Lebenszyklus von MQTT-Sitzungen

MQTT stützt sich auf TCP/IP für die Verbindung und folgt daher einem ähnlichen Lebenszyklus

Verbindung

Der MQTT-Client initiiert eine Verbindung mit dem MQTT-Broker, in der Regel über die Standard-MQTT-Ports(1883/883 für sichere bzw. unsichere Verbindungen)

Authentifizierung

Das MQTT-Protokoll sieht keine Authentifizierung vor, abgesehen von TLS für die zugrunde liegende TCP/IP-Verbindung, was für die meisten Anwendungsfälle ausreichend ist.

Veröffentlichen / Abonnieren

Sobald eine Verbindung besteht, können Clients Themen veröffentlichen oder abonnieren, um Nachrichten zu senden und zu empfangen.

Trennen der Verbindung

Die Trennung der Verbindung kann entweder vom Client oder vom Broker initiiert werden und führt zum Ende der MQTT-Sitzung, nachdem alle laufenden Anfragen verarbeitet wurden.

MQTT Dienstgüte (QoS)

Mit derDienstgüte kann der Entwickler einer Lösung festlegen, wie zuverlässig eine MQTT-Verbindung sein soll. Im Allgemeinen gilt: Je zuverlässiger die Verbindung ist, desto größer ist der potenzielle Speicher-Overhead für Wiederholungen und die Aufbewahrung von Nachrichten.

QoS -1

Die Nachricht wird nur einmal gesendet und der Client und der Broker unternehmen keine weiteren Schritte, um die Zustellung zu bestätigen. Dies wird auch als "fire and forget" bezeichnet.

Dies gilt nur für Nachrichten, die von einem Client gesendet werden. Sobald die Nachrichten beim Broker eingegangen sind, werden sie als QoS 0

Dienstgüte 0

Sender und Empfänger führen einen Handshake durch, um sicherzustellen, dass nur eine Kopie der Nachricht empfangen wird. Dies gewährleistet die Zustellung und verhindert, dass mehrere Kopien der Nachricht gesendet werden.

Dienstgüte 1

Die Nachricht wird mehrmals gesendet, bis der Empfänger den Empfang bestätigt. Dies funktioniert am besten bei zeitkritischen Nachrichten, kann aber dazu führen, dass Nachrichten doppelt empfangen werden.

MQTT-Anwendungsfälle und IoT

MQTT ist ein leichtgewichtiges und energieeffizientes Protokoll, das im Laufe der Jahre in der Art von Lösungen verwendet wurde, bei denen diese Faktoren eine wichtige Rolle spielen.

IoT ist das populärste Beispiel, bei dem MQTT hervorragend geeignet ist. IoT-Geräte sind in der Regel batteriebetrieben und können sehr teuer in der Wartung sein, so dass eine lange Lebensdauer zwischen den Batteriewechseln bevorzugt wird. Während es in der häuslichen Umgebung nicht schwierig ist, eine Batterie hin und wieder auszutauschen, kann die Wartung in einer industriellen Umgebung mit Tausenden von Sensoren, die über ein weites Gebiet verteilt sind und sich oft an sehr schwer zugänglichen Stellen befinden, sehr schnell kostspielig werden.

Zu den Anwendungsfällen vonMQTT IoT gehören Brandmelder, Diebstahlüberwachung, Standortüberwachung, Sensoren, Motorstatus usw. MQTT hat auch einen sehr geringen Daten-Overhead, so dass MQTT in Umgebungen, in denen Daten teuer sind oder in denen Tausende von Geräten eingesetzt werden und die Bandbreite ein Problem darstellt, ideal ist.

PubNub und MQTT eignen sich hervorragend für IoT. In unserer IoT-Demo und unserem IoT-Tutorial erfahren Sie mehr darüber, wie PubNub und MQTT eine zuverlässige, skalierbare und effiziente IoT-Lösung liefern können.

MQTT ist auch in der Echtzeitkommunikation sehr beliebt, das bekannteste Beispiel ist der Facebook Messenger. Warum hat sich Facebook für MQTT entschieden? Weil es den Akku Ihres Telefons nicht belastet, nicht übermäßig viele Daten verbraucht, auf sicheren Protokollen läuft, eine Skalierung ermöglicht, Gruppenchats leicht ermöglicht und alle Daten über eine zentrale MQTT-Broker-Backbone-Infrastruktur verteilt.

Unterstützt PubNub MQTT-Anwendungsfälle?

Auf jeden Fall! PubNub bietet eine MQTT-Bridge mit sehr geringer Latenz, die den Einsatz eines eigenen MQTT-Brokers überflüssig macht und eine einfache Integration mit anderen PubNub-Funktionen wie Funktionen und Daten-Streaming ermöglicht.

Da PubNub auf dem Publish-Subscribe-Modell basiert, lässt es sich sehr gut mit MQTT verbinden:

  • Publish / Subscribe: Diese Konzepte sind sowohl für PubNub als auch für MQTT identisch

  • PubNub-Kanäle: Das Äquivalent in MQTT ist das "Topic".

  • UUID: Sowohl PubNub als auch MQTT haben das Konzept eines eindeutigen Bezeichners, der jedem Client zugewiesen wird.

Wildcards: Sowohl PubNub als auch MQTT unterstützen Wildcards beim Abonnieren von Channels/Topics. Siehe die PubNub Doku für weitere Details.

Wie man MQTT-Anwendungsfälle ausnutzt

Der Kern der Nutzung von MQTT als Kommunikationsweg ist das Thema. Es ist eine bemerkenswert einfache Idee, die nicht nur für MQTT gilt, aber das MQTT-Protokoll nutzt die Möglichkeiten dieses Themas sehr gut aus. Ein Topic erfüllt implizit mehrere Aufgaben, vor allem stellt es sicher, dass eine Nachricht an die richtigen Zuhörer zugestellt wird. MQTT behandelt ein Topic wie einen Dateipfad. Wenn man sich ein Topic als einfachen Kommunikationsfilter vorstellt, kann die Pfadanwendung sehr mächtig werden.

Sie könnten sich für eine bestimmte höhere Ebene des Pfades oder das Blattelement interessieren. Ohne es explizit zu sagen, filtert MQTT Nachrichten auf der Grundlage der Position, die Sie im Baumpfad einnehmen. Es ist eine einfache Idee, die sehr effektiv genutzt werden kann.

Technische Spezifikationen von MQTT für Ihren Anwendungsfall

Gehen wir nun etwas näher auf die technischen Aspekte von MQTT ein. Zunächst einmal läuft das Protokoll auf dem TCP/IP-Netzwerkstack. Wenn Clients eine Verbindung herstellen und Daten veröffentlichen/abonnieren, verfügt MQTT über verschiedene Nachrichtentypen, die beim Handshaking dieses Prozesses helfen. Der MQTT-Header besteht aus zwei Bytes, wobei das erste Byte konstant ist.

Im ersten Byte werden der Typ der gesendeten Nachricht sowie die QoS-Stufe, Retain- und DUP-Flags (Duplikation) angegeben. Das zweite Byte ist das verbleibende Längenfeld. Weitere Informationen können Sie der MQTT-Spezifikation entnehmen, wenn Sie daran interessiert sind.

Wie man PubNub und MQTT benutzt

Da PubNub jetzt MQTT über unser globales Echtzeit-Datenstromnetz unterstützt , möchten wir einen Überblick über das Protokoll geben und erläutern, warum Sie es aus unserer Sicht verwenden können oder nicht.

Vielleicht haben Sie bereits MQTT-basierte Geräte im Einsatz. Oder Sie erwägen einen neuen IoT-Einsatz. In jedem Fall stellt sich die Frage: “Wann sollte ich MQTT und wann PubNub verwenden?” Und wann macht es Sinn, beides zu verwenden? Wenn Sie robuste, bidirektionale Kommunikationsoptionen für Ihre MQTT-basierten Geräte in Erwägung ziehen, bietet PubNub Sicherheit, Skalierbarkeit und Zuverlässigkeit auf Unternehmensniveau sowie viele Mehrwertfunktionen wie Funktionen als Service, Präsenzerkennung sowie Speicherung und Wiedergabe von Nachrichten. Und all diese Funktionen sind mit einem einfachen Publish-Subscribe-Befehl verfügbar.

Wie die sprichwörtliche Erdnussbutter und Schokolade können PubNub und MQTT zusammen viele Anwendungsfälle für eingebettete Geräte auf elegante Weise lösen. Sie können PubNub mit MQTT nutzen, um Anwendungsfälle wie effiziente Anomalieerkennung mit niedriger Latenz zu erfüllen. Nehmen wir zum Beispiel an, Sie haben MQTT-basierte Sensoren auf industriellen, stromerzeugenden Turbinen. Sie können PubNub – einschließlich der "Functions-as-a-Service"-Funktionen – nutzen, um auf Sensordaten zu reagieren und diese in Echtzeit zu übertragen, so dass ein Betriebsteam Turbinenprobleme erkennen kann, bevor die Daten überhaupt ein zentrales Datenzentrum erreichen. Sie können PubNub auch mit MQTT-basierten Hausalarmen nutzen, um Signale über Alarme hinweg zu überprüfen und zu erkennen, ob es einen schlechten Alarm gibt, der falsch-positive Meldungen sendet. Und in allen Anwendungsfällen können Sie die Integrationen von PubNub in mehrere maschinelle Lerndienste nutzen, um Anomalien zu erkennen.

Wenn MQTT nicht Teil Ihrer aktuellen Infrastruktur ist, können Sie das PubNub Data Stream Network direkt zusammen mit den zahlreichen IoT-SDKs von PubNub für Ihre gesamte Internet of Things-Konnektivität nutzen. Oder das PubNub Network mit MQTT kann eine gute Wahl für Geräte mit geringer Leistung sein.

Um das PubNub Network mit MQTT-fähigen Geräten zu nutzen, müssen Sie Ihre Geräte bei PubNub unter mqtt.pubnub.com anmelden. Unser Leitfaden PubNub Improves MQTT Support & IoT Capabilities führt Sie detailliert durch die Schritte zur Anmeldung.

Zusätzliche MQTT-Ressourcen

Wie kann PubNub Ihnen helfen?

Dieser Artikel wurde ursprünglich auf PubNub.com veröffentlicht

Unsere Plattform unterstützt Entwickler bei der Erstellung, Bereitstellung und Verwaltung von Echtzeit-Interaktivität für Webanwendungen, mobile Anwendungen und IoT-Geräte.

Die Grundlage unserer Plattform ist das größte und am besten skalierbare Echtzeit-Edge-Messaging-Netzwerk der Branche. Mit über 15 Points-of-Presence weltweit, die 800 Millionen monatlich aktive Nutzer unterstützen, und einer Zuverlässigkeit von 99,999 % müssen Sie sich keine Sorgen über Ausfälle, Gleichzeitigkeitsgrenzen oder Latenzprobleme aufgrund von Verkehrsspitzen machen.

Erleben Sie PubNub

Sehen Sie sich die Live Tour an, um in weniger als 5 Minuten die grundlegenden Konzepte hinter jeder PubNub-gestützten App zu verstehen

Einrichten

Melden Sie sich für einen PubNub-Account an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

Beginnen Sie

Mit den PubNub-Dokumenten können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder SDK

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .