MQTT – Erste Schritte

Einleitung

MQTT Getting Started Guide gibt eine detaillierte Erklärung zuMQTfür MQTT Anfänger

MQTT Publish / Architektur anmelden
mqtt Architecture
Geschichte von MQTT

Andy Stanford Clark (IBM) und Arlen Nipper denken an die Gestaltung der Protokoll MQTT, die 1999 wahr war. Der Zweck dieses MQTT ist die Überbrückung auf Gliederung Sensoren an einer Öl-Pipeline-Telemetrie über Satelliten. Es verwendet einen Publisher Modell die eine stabile und zuverlässige Netzwerkverbindung auf Basis von TCP/IP bietet, ein Leichtgewicht Header für Reduzierung der Übertragungskosten und zuverlässiger Nachrichtenunterstützung. MQTT Version 3.1.1 war veröffentlicht als einOASIS Standardim Oktober 2014. Das Upgrade der MQTT Version 5 fügt mehrere hinzu neue Features und wird im März 2019 veröffentlicht. Es erfüllt die Notwendigkeit der Industrie und bereitet sich vor für die Veränderungen in der Entwicklung der Industrie in der Zukunft. MQTT als ISO und OASIS Standard 2010. MQTT 5.0 wurde 2019 zum neuen OASIS-Standard.

MQTT-Agenda

Das Protokoll MQTT wurde 1999 erfunden, und sein Wachstum begann viele Jahre später. Fünf Jahre später wurde MQTT 3.1.1 mit einer OASIS- und ISO-Norm veröffentlicht. Nach 2010, die Version geändert von 3.1 auf 3.1.1 dann der OASIS-Standard sanktioniert die neueMQTT5 In den Warenkorb. Im März 2019 fand dann MQTT5 als neu genehmigt OASIS und ISO-Norm.

MQTT5 Vs MQTT3.1
MQTT3.1 Agenda

Seit 2013 hat der Begriff „MQTT“ wenig Bedeutung.MQT V3.1wurde 2013 dem OASIS-Spezifikationsausschuss vorgelegt mit einem Charta, die sicherstellen, dass nur geringfügige Änderungen der Definition akzeptiert werden können. Auf vom 29. Oktober 2014, OASIS angekündigt Version 3.1.1 nach der Übernahme der Standard Wartung von IBM.

MQTT5 Agenda

MQTT 5ist der Vererber von MQTT 3.1.1. Die erste öffentliche Veröffentlichung war im Januar 2018, und seine Die offizielle Veröffentlichung wurde im Jahr 2019 mit OASIS und ISO-Standards sanktioniert.

Warum von MQTT3.1.1 bis MQTT 5

Der MQTT-Anfangsführer beschreibt den Vererber 3.1.1 MQTT5. Die Antwort ist zu einfach,MQT Das ist alles.definiert einen festen Header im CONNECT Paket die einen einzigen Byte-Wert für diese Protokollversionen enthält. MQTT 3.1.1 hat Wert ‚3‘ und 3.1.1 den Wert "4". Daher hat der Vererber von 3.1.1 (MQTT5) den Wert „5“. Diese Zahl "5" ist sowohl für den Protokollnamen als auch für den Wert. MQTT5 stellt einige vor Änderungen und Verbesserungen gegenüber MQTT3.1.1.

Im Folgenden wurde MQTT5 erläutert, um einen klaren Überblick über die funktionelle Ziele von MQTT Messaging Protokoll.

MQTT 3.1 Ziele

MQTT wurde mit der Absicht entworfen, ein Protokoll zu erstellen würde Ölpipelines über Satellitenverbindungen mit minimalem Akku verbinden lassen Verlust und Nutzung der Bandbreite. Sie haben die folgenden Ziele festgelegt, die derzeit bei der Kern des MQTT-Protokolls:

  • Einfach zu implementieren
  • Bereitstellung einer Qualität des Dienstes für die Datenlieferung
  • Leicht und Bandbreite effizient
  • Daten agnostict
  • Kontinuierliches Sitzungsbewusstsein
MQTT 5 Ziele

Dieses einfache MQTT Startmodell bietet Verbesserungen für die Zweck der Erfüllung der Anforderungen bestehender MQTT5-Kunden/Benutzer.

  • DieMQTT 5Ziele verbessern die einfache Nutzung, um die Bedürfnisse zu erfüllen die lange Begriff Benutzer.
  • Die MQTT5-Ziele verbessern die Leistung und unterstützen Skalierbarkeit ohne jede übermäßig komplizierte Dinge.

In der Spezifikation MQTT 5 gibt es fünf Leerzeichen. Sie sind,

  • Anreicherung der Skalierbarkeit für Großanlagen und Unterstützung für kleine Kunden.
  • Erhöhung der Fehlerberichterstattung.
  • Formalisieren Sie übliche Dinge, einschließlich Fähigkeit.
  • Erweiterbare Techniken, einschließlich Benutzereigenschaften.
  • Leistungsverbesserungen für große und kleine Kunden.
MQTT Publizieren und abonnieren/Abmelden
Publizieren

MQTT Start Anleitung gibt eine klare Sicht auf ÖFFENTLICHE Paket und die Veröffentlichungsrolle. Der Vorgang des Sendens von Nachrichten wird Publishing genannt. A Kunden kann eine Nachricht nicht direkt an einen anderen Client veröffentlichen. Aber der MQTT-Client kann Veröffentlichung Nachrichten an den Broker. Jede Nachricht muss ein Thema enthalten. Ein MQTT-Client kann nur Veröffentlichung Nachrichten zu einem einzelnen Thema und können nicht zu einer Gruppe von Themen veröffentlichen. Der Broker kann Filter die Nachricht unter einem Thema und die Nachricht an die angeschlossenen Clients, die alle hat dieses Thema abonniert. Ein ÖFFENTLICHEs Paket wird von einem Client an einen Server oder Laster gesendet zurück um eine Application Message zu transportieren. Jedes ÖFFENTLICHE Paket hat eine Nutzlast, die enthält die Daten (Nachrichten) im Byte-Format übertragen. Der Absender (Publisher) entscheidet, ob es will binäre Daten, Textdaten oder sogar das vom Client benötigte Format zu senden.

Anmeldung

Das SUBSCRIBE-Paket wird vom MQTT-Client an denMQTT Server, die verwendet wird, um mehr als ein Abonnement zu erstellen. Lassen Sie uns klären die SUBSCRIBE Paket und abonnieren Rolle. Um Nachrichten zu einem bestimmten Thema zu empfangen, Der Kunde muss abonnieren Sie dieses Thema. Der Server sendet Pakete an den Kunden veröffentlichen, um zu senden veröffentlicht Dienstprogrammnachrichten zu Themen, die mit diesen Abonnements kompatibel sind. Der SUBSCRIBE Paket gibt auch das maximale QoS an, an das der Server Application Messages senden kann die Client. Um Nachrichten vom Broker an den Client zu senden, verwendet der Broker dasselbe Verlag Methode, die vom Verlag verwendet wird. Abonnieren Sie mehrere Themen, die erlaubt sind mit zwei Wildcard-Zeichen (z.B. + und #). Alle Abonnements werden vom Broker mit einem Abo-Anmeldenachricht. EineMQTT Clientnur Themen abonnieren und nicht einen bestimmten Client abonnieren.

Anmeldung

Der Widerspruch der SUBSCRIBE-Nachricht ist die UNSUBSCRIBE Nachricht. Eine UNSUBSCRIBE Paket wird vom Client an den Server gesendet, um Themen abzumelden. Es Löschen die vorhandenen Abonnements auf dem Broker. Diese Abmelden Nachrichten haben auch eine Liste von Themen von dem der MQTT-Client abmelden möchte. Um Unsubscribe zu bestätigen, der Broker sendet ein UNSUBSCRIBE, um die Nachricht an den MQTT-Client zu bestätigen. Sie können annehmen, dass Abonnements werden gelöscht, nachdem der MQTT-Client die Bestätigungsnachricht von die Broker.

Kunden-/Brokerverbindung
MQTT Client

Im Allgemeinen jedes IoT-Gerät, das MQTT über einen TCP/IP spricht stapeln werden einen MQTT-Client. Sowohl Verlage als auch Abonnenten gelten als MQTT Kunden. Die Verleger und Abonnent geben an, ob der Client derzeit publiziert Nachrichten oder ob der Client abonniert hat, die Nachrichten zu empfangen. Derjenige, der veröffentlicht Nachrichten werden Verlage genannt und derjenige, der die Informationen abonniert, ist genannt Teilnehmer.

Das Veröffentlichungsmodell unterscheidet sich von der Client-Server-Modell. Im PUB/SUB-Modell veröffentlicht mehr als ein Verleger Nachrichten an einen Teilnehmer, oder als ein Teilnehmer gleichzeitig Nachrichten von einem Verlag erhält. In diesem Modell, MQTT Kunden können sich nicht direkt kontaktieren. Aber sie kommunizieren mit Hilfe von der MQTT Broker. Denn die Client-Umsetzung des MQTT-Protokolls ist sehr einfach und effizient. MQTT-Client ist jedes Gerät, das über ein Netzwerk mit einem MQTT Broker verbunden ist Verbindung.

MQTT Broker

DieMQT Brokerwirkt als Zwischenprodukt zwischen den MQTT Clients. Es ist Der Kernel von protokoll veröffentlichen/subscribe. Der MQTT Broker ist proprietäre Software, die auf einer Computer (in der Cloud) und kann von einem Dritten selbst generiert oder gehostet werden. MQTT Broker hilft MQTT-Clients teilen, Daten verwalten und Geräte steuern. Der Broker hat Verantwortung für den Empfang aller Nachrichten, Filterung der Nachrichten unter Themen und dann Verteilen dieser Nachrichten an die abonnierten Clients. MQT Broker kann nicht abonnieren einer MQTT-Client. Aber die MQTT-Clients (Abonnenten) können den anderen Client abonnieren (Publisher). Der Broker speichert keine Nachrichten, während gespeicherte Nachrichten, Dauer Verbindungen und QoS-Spiegel können dazu führen, dass Nachrichten vorübergehend auf der Broker.

Sobald die veröffentlichte Nachricht an die MQTT Clients gesendet wird, dann es ist aus dem Broker entfernt. Wenn keine Kunden das jeweilige Thema abonniert haben oder die abonnierte Clients werden derzeit nicht angeschlossen, dann wird die Nachricht aus dem Broker. Aber der Broker kann Daten in Form von gespeicherten Nachrichten speichern. Dies ermöglicht neue Abonnenten erhalten den letzten Wert direkt. Auch, wenn Geräte genannt werden „Persistent Sitzungen“, überwacht der Broker alle Informationen der Sitzungen und beseitigt gefährdet und unsichere Kundenverbindungen. DieMQTT Brokerwird verwendet, um zu reduzieren Netzwerkstamm ohne die Sicherheit zu beeinträchtigen. Ein Backup-Broker kann eingerichtet werden, um eine Last von Kunden auf mehrere Server vor Ort, Cloud oder in einer Kombination von beiden.

MQTT-Verbindung

Die MQTT-Verbindung basiert auf TCP/IP. Sowohl der Client als auch der Broker muss einen TCP/IP-Stack haben. Die MQTT-Verbindung ist immer zwischen einem Client und die Broker. Die MQTT Clients verbinden sich nie direkt. MQTT-Kunden (Publisher und Teilnehmer) werden hauptsächlich verwendet, um eine Verbindung zwischen Zwangsgeräten herzustellen. Nach Netzwerk Die Verbindung wird zwischen den MQTT-Clients hergestellt, wobei das erste Paket aus dem Kunden zu der Server ist nur ein CONNECT-Paket. Um zunächst eine Verbindung herzustellen, der Client sendet a CONNECT-Nachricht an den Broker. Wenn der Broker die Verbindungsnachricht erhält, dann reagiert mit einer CONNACK-Nachricht. Wenn es einen enormen Zeitspalt zwischen Öffnung a Netzwerk und Senden der CONNECT-Steuerpaket-Nachricht, dann wird der Broker die Verbindung. Sobald die Verbindung hergestellt ist, hält der Broker sie offen, bis der Client sendet die trennen Sie den Befehl oder die Netzwerkverbindung bricht von einigen Netzproblemen. Der MQTT immer start guide gibt die Details der MQTT-Verbindung über den Client und die Broker.

MQTT QoS Levels – (Servicequalität)

MQTT liefert einfache Nachrichten nach demQoS-Level. Der MQTT Broker kann QoS-Level für jede Client-Server-Verbindung angeben. Es wird nur verwendet zwischen den MQTT Sender und Empfänger. Die QoS-Level werden verwendet, um festzustellen, ob die Nachricht ist vom Server vom Client empfangen oder nicht. Die QoS-Ebene wird verwendet, wenn ein Client sendet a Anfrage an ein bestimmtes Thema. Wenn ein Client mehrere abonniert Themen, dann sie können verschiedene QoS-Spiegel für verschiedene Themen verwenden, basierend auf der Notwendigkeit des MQTT Kunden.

Der MQTT, der gestartet wird, macht einen klaren Blick auf die QoS. drei Arten von Ebenen in QoS. Das sind sie.

  • QoS 0-At Most Einmal
  • Qo 1 bis mindestens einmal
  • QoS 2-genau einmal
QoS 0 –> Am meisten Einmal

Die erste Ebene in QoS ist 0. Auf dieser Ebene wird die Nachricht gesendet bis die entweder einmal oder nie. Es besteht keine Garantie für eine Antwort vom Empfänger in der Client. Sendet der Absender eine Nachricht mit QoS0, so kann der Empfänger oder darf nicht empfangen die Nachricht. Der Client weiß nicht, ob die Nachricht an den Empfänger gesendet wird oder nicht. Diese Ebene wird auch genannt “Fire und Vergessen”. Auf dieser Ebene gibt es keine Garantie für Lieferung und es gibt keine Bestätigung durch den Broker

QoS 1 –> Mindestens einmal

Die zweite Ebene in QoS ist 1. Auf dieser Ebene muss die Botschaft werden zu senden den Empfänger mindestens einmal. Die Nachricht wird jedoch an den Empfänger geliefert. mehrfach bis die Bestätigung vom Broker empfangen wird. Wenn der Absender eine Nachricht sendet mit QoS 1, dann muss der abonnierte Empfänger die Nachricht unter Themen empfangen und dann Antworten mit ein PUBACK-Paket. Auf dieser Ebene ist das Senden garantiert, aber die Nachricht kann die Broker mehr als einmal.

QoS 2 –> Genau einmal

Die dritte Ebene in QoS ist 2, das ist die höchste Ebene Service in MQTT. Auf dieser Ebene wird die Nachricht nur einmal von ihren Empfängern empfangen. Es ist die sichersten QoS-Ebene. Zwischen Sender und Empfänger gibt es eine Folge von vier Nachrichten. Hier. die Nachricht vom Sender an den Empfänger gesendet wurde und der Empfänger Versenden Anerkennung für diese Botschaft. Dabei wurde die Nachricht genau einmal gesendet. Also, die meisten von Anwendungen verwenden diese Quality of Service Ebene.

Dauerhafte Sitzungen / Nachrichtensuche

ADie Welt der Welteine laufende Verbindung zwischen a Kunden und der MQTT-Nachrichtenmakler. Jeder MQTT-Client muss eine dauerhafte Sitzung speichern oder sauber Sitzung. Für Beispiel, wenn dieMQTT Clientssind mit dem Broker verbunden, jeder Client, der Veröffentlichung und Die Anmeldung zum Thema muss die Persistent-Session oder saubere Sitzung enthalten. Die Dauer Sitzung wird verwendet, während das Internet für den Client unzuverlässig ist. MQTT persistent session kann sein erstellt durch Senden der Connect-Nachricht und Einstellung der sauberen Session-Flag auf 0. Wenn Kunden hat keine Sitzungen, um die CONNECT-Nachricht zu senden, eine neue Dauersitzung wird erstellt. Wenn der Client bereits eine Sitzung hat, wird der Client die Sitzung neu starten, die schon existiert während der Netzwerkverbindung. Wenn der abonnierte Client plötzlich von die Broker, es wird keine der Nachrichten, die zu diesem Thema veröffentlicht Verlag.

Um dieses Problem zu überwinden, wird diese persistente Sitzung oder saubere Sitzung verwendet. MQTT Broker Stützen saubere Sitzung 0(false) und 1(true) für Dauersitzungen. Zuerst der MQTT Client sollte verbinden mit dem Broker, dann kann es den Broker für diese persistente Sitzung anfordern. Die Broker speichert alle Kundeninformationen. Wenn die Kunden die Themen abonnieren müssen, sie sollte Verwenden Sie die QoS-Ebene von 1 oder 2, und dann wird der Broker die unveräußerten Nachrichten veröffentlichen. Nach die Trennung, der Client reconnects, dann der Broker sendet alle undelivered Nachrichten, die alle vom Broker in einer Nachrichtenwarteschlange dem Client gespeichert werden. Wenn Nachricht Broker erkennt, dass ein Client aus der Verbindungszeit getrennt wird, die persistent Sitzung Ausdauer-Timer beginnt. Wenn der Client eine CONNECT-Nachricht sendet, setzt er die CleanSession Flagge bis 1. Wenn die persistente Sitzung vor der erneuten Verbindung abläuft, dann die gespeicherten Nachrichten in der Broker werden verworfen.

Nachrichten erhalten

Retained Messages ist eine wichtige MQTT-Funktion, die es ermöglicht, halten. die aktuelle Schlüsselnachricht zu einem Thema für zukünftige Client / Teilnehmer. Der Verleger kann die Broker die letzte Nachricht zum Thema zu halten, indem Sie das gespeicherte Nachrichten-Flag festlegen. Es kann nur eine gespeicherte Nachricht pro Thema zu einem Zeitpunkt. Die gespeicherte Nachricht wird im MQTT gespeichert Kunden (Server). DieIn den Warenkorb MQTdie Veröffentlichung von MQTT-Clients Nachricht für die spätere Lieferung gespeichert, um Kunden zu abonnieren. Erhaltene Nachrichten können von Konfigurieren des MQTT Retain Bit. Ein Client kann mit jedem QoS-Level veröffentlichen oder abonnieren mit spezifisches Thema, aber die gespeicherte Nachricht ist nur anwendbar, ob das gespeicherte Flag eingestellt in MQTT 3.1.1. Spezifikation. Die häufigste Verwendung von gespeicherten Nachrichten ist, Identifizierung letzte bekannte Nachrichten an neue Teilnehmer..

Gespeicherte Nachrichten werden an neue Abonnenten auf einer bestimmten Thema, dann die Broker verarbeitet die Anfrage und veröffentlicht die Nachrichten an die konfigurierten Clients. wenn der Server muss die Rückhalte-Flag vor der Weiterleitung löschen, dann wird der Client es angeben selbst. Zu Löschen einer gespeicherten Nachricht, sendet der Client eine gespeicherte Nachricht mit einer leeren Nutzlast an eine ein bestimmtes Thema dann löscht der Server die gespeicherte Nachricht unter diesem Thema. Dann Nachricht Ablaufintervall wird in der gespeicherten Nachricht gesetzt. Nach dem Ablaufintervall Zeit, die Die gespeicherte Nachricht wird gelöscht. Die gespeicherte Nachrichtenfunktion ist nützlich, um die Die letzte Nachricht des Clients und besonders nützlich, wenn der Zustand ständig unverändert ist. Service Qualität beeinträchtigt nicht die gespeicherten Nachrichten. Die Funktion Retained message wird mit LWT (letzte werden und testament) Funktion in MQTT.

Letzter Wille und Testament (LWT) und Will Delay
Letzter Will und Testament (LWT)

Last Will ist eine auf einem bestimmten MQTT Broker gespeicherte Nachricht spezifische Kunden. DieLetzter Beitragist eine normale MQTT-Nachricht, die folgende Felder Thema, wird Nachricht, QoS, und behalten Flagge. Wenn es eine unerwartete Abschaltung gibt, dann Der Letzte Will und Testament werden verwendet, um die Benutzer oder MQTT-Kunden zu benachrichtigen. Der MQTT Client ist verwendet, um die Nachricht veröffentlichen. Die grundlegenden Techniken des LWT sind, wenn die Verbindung Pausen, dann die Last Will-Nachricht wird helfen, die interessierten Teilnehmer zu benachrichtigen, dass sie/Sie haben die Verbindung verloren. Zum Beispiel, In MQTT3.1.1, wenn der Broker erkennt die abschaltung, es sendet die Last Will-Nachricht an alle Abonnenten dieser spezifischen Thema. Die richtige Verwendung von LWT in MQTT ist, es vermeidet eine Menge unerwünschte Überwachung Nachrichten

Will Delay

Seit 2013 hat der Begriff „MQTT“ wenig Bedeutung.MQT V3.1wurde 2013 dem OASIS-Spezifikationsausschuss vorgelegt mit einem Charta, die sicherstellen, dass nur geringfügige Änderungen der Definition akzeptiert werden können. Auf vom 29. Oktober 2014, OASIS angekündigt Version 3.1.1 nach der Übernahme der Standard Wartung von IBM. Will Delay bietet die Möglichkeit, das Senden einer bestimmten Willensnachricht nach die eine Verbindung unterbrochen wird. Nach der Trennung, wenn entweder der Will Delay Intervall verschwinden oder die Sitzung endet, dann muss die Will-Nachricht veröffentlicht werden. Das Netzwerk Verbindung wird für den MQTT-Client geöffnet, bevor das Verzögerungsintervall von Will verblasst. Die Will Message sollte nicht veröffentlicht werden, wenn das Will Delay-Intervall länger ist als die Sitzungsablaufintervall. Der Will veröffentlicht Werke wie erwartet, wenn der Will Delay Intervall kürzer als das Ablaufintervall der Sitzung. Der Server verzögert die Veröffentlichung des Clients wird Nachricht, bis das Intervall Will Delay abgelaufen ist oder abgelaufen ist, welches von oben passiert. zuerst. Dadurch wird der Last Will und Will Delay abgelenkt.

Halten Sie sich bereit

Dies erklärt den halten-alive in einem Kontrollpaket.Weiterführendist die Intervall Zeit zwischen Start und Ende des Übertragungsvorgangs des MQTT Clients. Lebewohl ist eine zweibyte ganze Zahl, die in Sekunden gemessen wird. Der MQTT-Client muss Verantwortung Prüfen Sie, ob der Haltewert das Zeitintervall zwischen dem Senden nicht überschreitet MQT Kontrollpakete. Ist der Halte-Alive-Wert 0, so wird der Halte-Alive-Mechanismus sein Ausschalten und auch, der Client sendet nicht MQTT-Steuerpakete auf einem bestimmten Zeitplan. Die Ist Ein Wert des Keep-Alive ist anwendungsspezifisch. Der Maximalwert beträgt 18 Stunden 12 Minuten und 15 Sekunden. Der Server erhält bis zur Festhaltezeit kein MQTT-Steuerpaket. Intervall erreicht ein und ein halbes Mal. Da der Haltewert nicht Null ist, muss der Client schließen Netzwerkverbindung. Wenn Keep-alive im Kontrollpaket ist, stellen Sie sicher, dass Verbindung zwischen dem Broker und dem Client ist noch offen und bestätigen auch, dass der Broker und Kunden sind verbunden.

MQTT über Web-Sockets

WebSocket ist ein Computer-Kommunikationsprotokoll. Es bietet bidirektional gleichzeitige Übertragung über eine einzige TCP-Verbindung. mitMQTT over WebSockets, alle Browser kann ein MQTT-Gerät sein. Der MQTT transportiert über eine Steckverbindung. Die WebSocket URL wird verwendet, um den Client und den Server zu verbinden. Ein einziger WebSocket Datenrahmen enthält Viel MQTT-Steuerpakete, die keinen Einfluss auf das MQTT-Protokoll erzeugen.

Für die Nutzung von WebSockets in MQTT.

  • Sind die MQTT-Steuerpakete bereit, über eine WebSocket-Verbindung zu transportieren, dann es muss werden in WebSocket Binärrahmen gesendet. Abgesehen davon, alle anderen Frames, die sind erhalten der Empfänger muss die Netzwerkverbindung schließen.
  • Die MQTT-Empfängersteuerpakete können nicht innerhalb des WebSocket-Rahmens ausgerichtet werden Grenzen.
  • Der Client sollte “MQTT” in die Liste der WebSocket Sub-Protokolle hinzufügen, die es bietet. Die Server ausgewählt und den WebSocket Sub-Protokollnamen in „MQTT“ zurückgegeben.
Benutzerverhalten

Eigenschaften (MQTTv5) ist wahrscheinlich eine der wichtigsten Kombinationen von dieMQTT Protokollerklärt durch diese MQTT gestartet Führer, und sie sind verfügbar in den meisten MQTT Nachrichtentypen. In den MQTT-Steuerpaketen wie CONNECT, CONNACK, PUBLISH, PUBACK, PUBREC, PUBREL, PUBCOMP, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK, DISCONNECT und AUTH-Paket hat ein Set Benutzereigenschaften im letzten Feld des variablen Headers. Das CONNECT-Paket auch enthält die Optionen der Eigenschaften im Feld Will Properties mit einer Nutzlast. Der Benutzer Eigentum Feld ist Teil des Eigenschaftenfeldes. Eine Eigenschaft definiert ihre Nutzung und Daten gefolgt von eine Standardwert, und es kann verwendet werden, um zusätzliche Informationen an die MQTT-Clients bereitzustellen.

Die CONNECT-Nachricht hat verschiedene Eigenschaftsfelder als Der ÖFFENTLICHE Nachricht, weil Eigenschaftsfelder vom Nachrichtentyp abhängen. Die Benutzer-Eigenschaft ermöglicht Gleich Name, um mehr als einmal zu erscheinen und erlaubt es auch, mehrmals zu erscheinen Viel Namen, Wertepaare beim Weiterleiten der Nachrichten an den Client und Server. Es ist hauptsächlich verwendet für Senden von Metadaten zwischen Clients. Benutzereigenschaften können effektiv sein, damit der Benutzer Abschnitt die MQTT Protokoll und allen Nachrichten und Antworten. Sie haben nur die Bedeutung der Benutzer Aktivierung, da die Eigenschaften des Benutzers vom Benutzer definiert werden.

Sitzung/Message Ablauf

Das Ablaufintervall der Sitzung definiert den Zeitraum, den der Broker Läden die Sitzungsinformationen des jeweiligen MQTT-Clients. Session Expiry ist ein Vier-Byte Ganzzahlig, in Sekunden dargestellt ist. In MQTT 3.1.1, wenn der Wert 0 ist, dann der Sitzungsablauf Intervall absent, und auch die Sitzung endet, wenn die Netzwerkverbindung geschlossen ist. Die Sitzung Auslauf Intervall im CONNECT-Paket wird von den MQTT-Clients verwendet, wenn der Sitzungsablauf Intervall abwesend. Wenn das Sitzungsablaufintervall mehr als einmal in der MQTT-Steuerung enthalten ist Pakete und auch im CONNECT-Paket ist das Sitzungsablaufintervall Null, dann ist es als einen Protokollfehler. Es behandelt es nicht als gültiges DISCONNECT-Paket, wenn das nicht-Null Sitzung Das Ablaufintervall wird vom Server empfangen. Im Falle der Serverabschaltung, Sitzung Ablaufintervall sollte nicht an den Server gesendet werden. Die Meldung Ablaufintervall ist ähnlich das Ablaufintervall der Sitzung. Es ist eine neue Funktion, die durch das MQTT 5.0 Protokoll eingeführt wird. Beide die Sitzungsablauf und Nachrichtenablauf können verwendet werden, um die Kapazität auf demMQTT Broker.

Grundcodes/Erkennung

Ein Grundcode ist eine neue Funktion, die durch die MQTT5-Spezifikation eingeführt wird und wir haben dies im MQTT-Laufwerk beschrieben. Es ist ein einmaliger unbezeichneter Wert dass für das Ergebnis einer Betriebsanzeige verwendet. Der erfolgreiche Abschluss eines Betrieb in Grundcodes geben weniger als 0*80 an. Der Grundcode für Erfolg ist 0. Der Grundcode Werte größer als 0*80, die einen Ausfall anzeigen. Viele MQTT-Pakete enthalten jetzt Grundcodes. A Begründung angegeben, dass im Code ein vorgegebener Protokollfehler aufgetreten ist. Diese Grundcodes sind in der in Quittungspaketen geführt und den Client- und Brokerfehlerbedingungen ermöglichen. Die Begründung Codes werden manchmal negative Anerkennung genannt. Eine ACK-Veröffentlichung mit Grundcode 16 in MQTT3.1.1 gibt an, dass es keine übereinstimmenden Teilnehmer gibt. Als Ergebnis, mit MQTTv5, es ist kann festgestellt werden, ob ein Thema in gewissem Umfang verwendet wird. Die untere Kontrolle Pakete erlauben der Teilnehmer zu bestimmen, ob die angeforderte Funktion erfolgreich ist. Die Steuerpakete eine Ein Grundcode als Teil des variablen Headers sind CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, DISCONNECT und AUTH. Die Steuerpakete haben eine Liste eines oder mehrerer Grundcodes in ihr Nutzlast sind SUBACK und UNSUBACK.

Deko Hafer Name Pakete
0) 0X00 Erfolgreich CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, UNSUBACK, AUTH
0) 0X00 Normale Trennung DISCONNECK
0) 0X00 Geförderte QoS 0 SUBACK
1 0X Geförderte QoS 1 SUBACK
2. 0X02 Geförderte QoS 2 SCHWEIZ
ANHANG 0X04 Verbindung mit Will Message DISCONNECK
ANHANG 0X10 Keine übereinstimmenden Teilnehmer PUBACK, PUBREC
17 0X11 Kein Abonnement existiert UNSUBACK
KAPITEL 0X18 0) Weiter Authentifizierung
ANHANG 0x19 Re-authenticate AUTH
ANHANG 0x80 Nicht spezifizierter Fehler KONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT
ANHANG 0x81 Malformed Packet CONNACK, DISCONNECT
ANHANG 0x82 Protokoll Fehler CONNACK, DISCONNECT
ANHANG 0x83 Spezifischer Fehler KONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT
ANHANG 0x84 Nicht unterstützte Protokollversion INHALT
ANHANG 0x85 Client ID (Identifier) nicht gültig INHALT
ANHANG 0x86 Schlechter Benutzername oder Passwort INHALT
ANHANG 0x87 Nicht autorisiert KONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT
ANHANG 0x88 Server nicht verfügbar INHALT
137 0x89 Server beschäftigt CONNACK, DISCONNECT
138. 0x8A Verboten INHALT
KAPITEL 0x8B Serverabschaltung DISCONNECT
ANHANG 0x8C Schlechte Authentifizierungsmethode CONNACK, DISCONNECT
1 0x8D Halten Sie Alive Timeout DISCONNECT
ANHANG0x8E Der Präsident DISCONNECT
143 0x8F Thema Filter invalid SUBACK, UNSUBACK, DISCONNECT
144. 0x90 Name invalid KONNACK, PUBACK, PUBREC, DISCONNECT
ANHANG 0x91 Packet Identifier im Einsatz PUBACK, PUBREC, SUBACK, UNSUBACK
146 0x92 Pack-Identifier nicht gefunden PUBREL, PUBCOMP
KAPITEL 7 0x93 Maximale Überschreitung DISCONNECT
ANHANG 0x94 Thema Alias invalid DISCONNECT
149 0x95 Paket zu groß CONNACK, DISCONNECT
KAPITEL 0x96 Nachrichtenrate zu hoch DISCONNECT
151 0x97 Kontingent überschritten KONNACK, PUBACK, PUBREC, SUBACK, DISCONNECT
KAPITEL 0x98 Verwaltungsmaßnahme DISCONNECT
153 0x99 Payload-Format invalid KONNACK, PUBACK, PUBREC, DISCONNECT
154 0x9A Nicht unterstützt CONNACK, DISCONNECT
155. 0x9B QoS nicht unterstützt CONNACK, DISCONNECT
156 0x9C Verwenden Sie einen anderen Server CONNACK, DISCONNECT
157 0x9D Server bewegt CONNACK, DISCONNECT
158 0x9E Geteilte Abonnements nicht unterstützt SUBACK, DISCONNECT
159 0x9F Anschlussrate überschritten CONNACK, DISCONNECT
ANHANG 0xA0 Maximale Verbindungszeit DISCONNECT
L 347 vom 20.12.2013, S. 1). 0xA1 Subscription Identifiers nicht unterstützt SUBACK, DISCONNECT
162 0xA2 Wildcard Abonnements nicht unterstützt SUBACK, DISCONNECT
Server Disconnection

Nur der Client konnte die Trennmeldung in MQTTv3.1.1. senden. Die TCP/IP Die Sitzung wird beendet, wenn der Server Probleme hat. Der Server kann eine trennen Nachricht an den Client zusammen mit einem Grundcode in MQTTv5. Serverabschaltung geschieht wenn Der Client sendet das DISCONNECT-Paket mit einem Grundcode. Die Trennung ist das letzte Schritt für Schritt den MQTT-Prozess. Das DISCONNECT ist das letzte vom Client gesendete MQTT-Steuerpaket oder die Server. Servertrennung gibt den Grund an, warum die Netzwerkverbindung geschlossen. Vor dem Schließen der Netzwerkverbindung sendet der Client oder Server MAY ein DISCONNECT Paket. Wenn Client, ohne ein DISCONNECT Paket zuerst mit Grundcode 0x00 (Normal) zu senden Ausschalten) aber die Netzwerkverbindung ist geschlossen und die Verbindung hat eine Will-Nachricht, dieser Will Nachricht ist veröffentlicht.

Payload Format / Content-Typ
Format der Nutzlast

Das Payload Format ist Teil eines MQTT-Pakets, das enthalten kann eine Nutzlast. Erlauben Sie, dass das Payload-Format angegeben wird, wenn eine Nachricht veröffentlicht wird. Das kann sein an den Empfänger der Nachricht weitergeleitet. Einige MQTT-Steuerpakete enthalten eine Nutzlast als Endteil. Die Steuerpakete, die die Payload-Formatfelder benötigen, sind INHALT SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK. Im PUBLISH-Steuerpaket die Payload Format Das Feld ist optional. Weil es als Application Message gilt. Die Nutzlast Feld existiert nur in der willigen Eigenschaft von ÖFFENTLICHEm Paket und CONNECT Paket. A Server muss senden Sie den Payload-Format-Indikator unverändert an alle Teilnehmer, die die Anwendungsbereich Nachricht. Der Empfänger kann bestätigen, dass die Nutzlast im angegebenen Format liegt und wenn es sendet keinen PUBACK, PUBREC oder Kausalcode, dann ist das Payload-Format falsch.

Inhaltsart

Content-Type existiert nur in der WILL-Eigenschaft von ÖFFENTLICHEm Paket und CONNECT Paket. Lassen Sie die MIME (Multipurpose Internet Mail Extensions – der Inhalt Art die von einer Serverseite zu einem Client-Seiten-Stil gesendeten Daten, die bei einer Nachricht ist veröffentlicht. Dies kann an den Empfänger der Nachricht weitergeleitet werden. Ein Server muss senden die Inhaltsnachricht an alle Teilnehmer, ohne den Inhaltstyp zu ändern. Die Inhaltsart ist mehr als einmal im Paket enthalten, ist es als Protokoll Fehler. Die Der Content-Typ-Wert wird durch Senden und Empfangen der Applikationsnachrichten definiert. Cannot den Inhaltstyp während der Nachrichtenübermittlung abschneiden.

Anfrage/Beantwortung Muster

Paketanfrage/Response-System innerhalb von MQTT bietet Antwort Titel und Kontaktdaten-Attribute, um Antwortnachrichten an den Verleger eines Bitte. Fügen Sie die Fähigkeit des Clients hinzu, Konfigurationsinformationen vom Server zu erhalten, wie bis Konfiguration von Antwort-Headern. Einige Anwendungen möchten Anfragen/Kontakte ausführen über MQTT. Diese Version von MQTT verfügt über drei Eigenschaften, die für einige Zwecke verwendet werden können: Antwort Thema, Korrelationsdaten und Anfrage-/Responseinformationen.

Ein MQTT-Client veröffentlicht eine angeforderte Nachricht an ein Thema, das ist an alle abonnierten Kunden. Es gibt mehrere Antworten, die auf den gleichen Themanamen abonniert sind. Die antworter nimmt auf der Grundlage der Anfragenachricht Maßnahmen und veröffentlicht dann Antwortthemen in der Kunden. Die Anfrage/Antwort-Nachricht kann von jedem QOS, der Antworter verwenden Session Entfällt Interval und Gemeinschaftsabonnement. Der Ersuchende hat die Verantwortung für die erforderlich Behörde, um den Themennamen zu veröffentlichen und zu abonnieren Eigentum. Es ist die Verantwortung des Beschwerdegegners, sicherzustellen, dass der Beschwerdegegner die Befugnis hat, abonnieren das angeforderte Thema veröffentlichen und veröffentlichen.

Anfrage-Response Interaktionsprozess:

  • Ein MQTT-Client (der Anfragende) veröffentlicht eine Anfragenachricht mit einem Antwortthema.
  • Die anderen Kunden (Antragsteller) abonnieren ein Thema, das mit dem Themanamen übereinstimmt von der anfragen, dann erhielten andere MQTT-Clients die Anfragenachricht.
  • Der Beantworter veröffentlicht eine Antwortnachricht auf den Themennamen, der in die Anfragenachricht übernimmt auch geeignete Aktion basierend auf der Anfragenachricht
  • In der regulären Anmeldung abonniert der Anfrager den Antwortkopf, so dass die Eine Antwortnachricht wird empfangen. Einige andere Kunden können jedoch die Antwort Header, wo die Antwortnachricht von diesem Client empfangen und verarbeitet wird. Wie ein Anfrage senden Nachricht, mehrere Clients oder jeder kann die Antwortnachricht abonnieren.
Geteiltes Abonnement

Das MQTT 5.0 Protokoll stellt ein neues Feature vor, das als freigegeben bezeichnet wird Abonnements. Sie entspricht der Lastausgleichsfunktion mehrerer Teilnehmer. Hinzufügen geteilt Der Abonnement-Support ermöglicht es dem Abonnenten, das Gleichgewicht zu laden. Es kann identifiziert werden Verwendung von spezielle Art des Themafilters. Der gemeinsame Name darf nicht „/“, „+“ oder „#“ enthalten. Zeichen. $ share prefix gibt an, dass ein gemeinsames Abonnement. Geteilte Abonnements kann sein mit mehreren MQTT-Sitzungen verbunden. Veröffentlichung von Nachrichten, die und seine Ein Themenfilter wird nur an eine seiner Anmeldesitzungen gesendet. Diese Funktion kann nützlich sein wenn mehrere Kunden teilen die Verarbeitung der Veröffentlichung parallel. Im Allgemeinen, Verwendung von den gemeinsamen Namen auf eine Gruppe von Abonnementssitzungen.

Geteilte Abonnements werden anstelle des MQTT-Servers definiert. von Sitzung. Wenn es ein gemeinsames Abonnement gibt, können andere Sitzungen abonniert werden Gleich Subskriptionsfilter. Es sendet nur eine der Sitzungen, an die abonnieren Gemeinschaftsabonnement. Jedes gemeinsame Abonnement ist unabhängig voneinander. Es ist möglich haben zwei gemeinsame Abonnements mit überlappenden Filtern. In solchen Fällen eine Meldung, dass gilt beide geteilten Abonnements werden separat bearbeitet. Beim Senden einer Anwendung Nachricht an eine Client, der Server geben Sie die maximale QoS für das Abo des Clients, weil anders Abonnieren von Clients bitten um verschiedene angeforderte QOS Levels.

Abonnement Identifier & Abonnement Optionen
Subscribe Identifier

Während des Abonnements kann der Client ein Abonnement angeben Kennung. Dem Abonnement-Identifikator folgt der ganze Wertbyte, stellt die Kennung des Teilnehmers dar. Die Bezugskennung hat einen Wert von 1 bis 268,435,455. Ist der Subskriptionskennungswert Null, dann ist er ein Protokollfehler. Die Subscription Identifier ermöglicht es dem Client zu bestimmen, welches Abonnement oder Abonnements die zu liefernde Nachricht verursacht. Wenn der Client ein Abonnement angeben kann Kennnummer während eines Abonnements errichtet und speichert der Broker die Mapping-Beziehung zwischen dieses Abonnement und die Abonnementkennung, wenn es erfolgreich erstellt oder Änderungen das Abonnement. Wenn Sie PUBLISH-Pakete an diesen Client senden müssen, der diesem entspricht Abo, der Broker wird die Abo-Kennung mit diesem ÖFFENTLICHE Paket. Mehrere Abonnement-Kennzeichen werden hinzugefügt, wenn die Veröffentlichung das Ergebnis der Veröffentlichung ist identische Artikel für mehr als ein Abonnement. In diesem Fall ist die Bestellung nicht signifikant.

Abonnementoptionen

Im MQTT v5 wird das Serververhalten durch die Verwendung verändert Abonnement Optionen. Bieten Sie vor allem eingeschränkte Abonnement-Optionen, um Anwendungen zu ermöglichen. Das einschließlich die Optionen nicht zu senden Nachrichten auf diesem Client (No Local) und Optionen für die Behandlung von im Abonnement gespeicherten Nachrichten. In MQTT v5, Abonnementoptionen Unterstützung QoS, No Local, Retain As Publish, Retain Handling. Es kann hilfreich sein, nicht zu senden zurück Meldungen an ein bestehendes Abonnement beim Wiederanschließen und der Client wird nicht wissen, ob die Das Abonnement wurde auf der vorherigen Verbindung für die Sitzung abgeschlossen. Es ist nützlich, nicht bis sende gespeicherte Nachrichten durch ein neues Abonnement, bei dem ein Kunde Änderungen empfangen will Benachrichtigungen und müssen die ersten Zustände nicht kennen. Abonnement Optionen geben die maximale QoS-Ebene, auf der der Server Application Messages an den Client senden kann. Die Abonnementkennung und Abonnementoptionen werden durch diese MQTT klar erklärt immer fing an Führung.

Thema Alias

Thema Alias ist eine neue Funktion, die durch das MQTT 5.0 Protokoll eingeführt wird, die ein Mechanismus zur Verringerung der Größe der veröffentlichten Pakete durch Verringerung der Größe des Themas Feld. Es reduziert die MQTT Paket Overhead-Größe durch die Abkürzung des Themanamens mit kleine ganze Zahl. Der Client und der Server geben unabhängig an, wie viele Themen sie erlauben. A Thema Alias ist ein ganzzahliger Wert, der verwendet wird, um ein Thema anstatt ein Thema zu identifizieren Name. Das ist nützlich, wenn die Themennamen lang sind und die gleichen Themennamen wiederholt verwendet werden in Netzwerkverbindung. Die Abbildungen des Themas Alias existieren nur innerhalb eines Netzwerks Anschluss und nur für die Lebensdauer dieser Netzwerkverbindung. Werden diese Mappings verwendet von Client und Server sind dann unabhängig voneinander. In den meisten Fällen sind sie nicht wichtig, aber wenn viele Kunden häufig freigegeben werden, können sie deutlich reduzieren Netzwerk Verkehr.

Durchflussregelung

Durchflussregelung ist der Prozess der Verwaltung der Datenrate Getriebe zwischenMQTT Kunden. Es ist nützlich, die Zahl der Unwissenden zu kontrollieren VERÖFFENTLICHUNGEN Pakete. Erlauben Sie dem Client und dem Server, die Anzahl der anhängigen vertrauenswürdigen Nachrichten anzugeben (QoS > 0) unabhängig. Dann wird der Absender aufhören, solche Nachrichten zu senden, unten zu studieren Quote. Die Client oder Server sollte nicht mehr als seinen ursprünglichen Lieferanführungswert erhalten Null. Am andere MQTT-Steuerung, Pakete müssen weiterhin verarbeiten und reagieren, auch wenn der Client und Der Server-Zitatewert ist Null. Dies wird verwendet, um die Rate der glaubwürdigen Nachrichten zu begrenzen und bis steuern, wie viele auf dem Weg sind. Es wird hauptsächlich zur Steuerung der Zahl verwendet von anhängige zuverlässige Nachrichten.

Maximale Packungslänge

Hier haben wir die maximale Paketlänge definiert. Diese Packungslänge spezifiziert die Größe des gesamten Pakets einschließlich des Headers und der auf diesem Paket gesendeten Daten. Erlauben Sie Client und Server unabhängig, um die maximale Paketgröße zu bestimmen, die sie unterstützen. Senden einer Ein großes Paket an den Sitzungspartner ist ein Fehler.

Optionale Server-Funktion Verfügbarkeit

Optionale Server-Funktion Verfügbarkeit definiert den Satz von Funktionen dass die Server nicht erlaubt und bietet dem Client einen Mechanismus, um diese Funktion anzugeben von den Server. Die Hauptmerkmale der Server-Funktionsverfügbarkeit sind Maximum QoS, Retain Verfügbar, Wildcard Abonnement verfügbar, Abonnement Identifier verfügbar und geteilt Abonnement Verfügbar. Wenn der Server erklärt, dass diese Funktionen nicht verfügbar sind, dann die Clients mit diesen Merkmale gelten als Fehler. Die Tatsache, dass ein Server eine Funktion nicht aktivieren kann früher Versionen von MQTT werden ermöglicht, indem dem Client mitgeteilt wird, dass die Funktionalität nicht autorisiert. Diese Funktion ermöglicht es uns, ein solches bevorzugtes Verhalten zu melden und spezifische Begründung Codes, wenn der Client eine dieser Funktionen verwendet.

Verbesserte Authentifizierung

Verbesserte Authentifizierung wird verwendet, um Authentifizierung in einer Herausforderung-Response Art. Es bietet einen Mechanismus, um die Authentifizierung mit Benutzername und Passwort inklusive gegenseitiger Anerkennung. Verbesserte Authentifizierung setzt auf Authentisierung Verfahren und Authentifizierungsdaten, um den gesamten Authentifizierungsprozess abzuschließen. Die Authentisierung Verfahren ist die Vereinbarung zwischen dem Client und dem Server auf dem Objekt der gesendeten Daten in der Authentifizierungsdaten. Die Datenübermittlungen und -prozesse sind für den Client und Server die Authentifizierung abschließen. Dies ermöglicht SASL (Simple Authentication and Security Layer) Stil Authentifizierung zu verwenden, wenn sowohl vom Client als auch vom Server unterstützt und re-authenticat einen Client innerhalb einer Verbindung. MQTT bietet die Implementierung einer verbesserten Authentifizierung. Das Die Implementierung einer verbesserten Authentifizierung ist optional für Clients und Server.

Server hält angeschlossen

Damit kann der Server die Keep-alive-Werte angeben Kunden haben bis Verwendung ermöglicht es dem Server auch, die maximal zulässige Halte-Alive einzustellen.

Hoffnung, dass dieser Artikel eine ausführliche Erklärung zu MQTT gibt Anfang Adopter zum Start mit MQTT.

Haben Sie weitere Fragen?

Wir sind mit allen Ohren, die auf dich warten. Post uns mit Ihre Fragen und Feedback.