MQTT Getting Started Guide gibt eine detaillierte Erklärung zuMQTfür MQTT Anfänger
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.
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.
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.
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.
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 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:
Dieses einfache MQTT Startmodell bietet Verbesserungen für die Zweck der Erfüllung der Anforderungen bestehender MQTT5-Kunden/Benutzer.
In der Spezifikation MQTT 5 gibt es fünf Leerzeichen. Sie sind,
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.
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.
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.
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.
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.
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 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.
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
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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 |
ANHANG | 0x8E | 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 |
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.
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.
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.
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:
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.
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 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 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.
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 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 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.
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.