Die Entwicklung von MQTT-SN Clients Guide bietet einen Schritt für Schritt gestartete Anleitung für Entwicklung IoT-Geräte-Agenten, die MQTT-SN verwenden, veröffentlichen abonnierte Messaging-Protokolle (MQTfür Sensornetze) nach Oasis-Standard von MQTT-Technical Committee.
MQTT-SN ist eine Protokollversion, mit der Sie IoT-Sensor erstellen können Mittel für geringe energieverbrauchende IoT-Geräte. Das MQTT-SN Protokoll (SN MQTT für Sensor) kann sein Programmplanung über eingebettete Geräte in nicht TCP/IP-Netzwerke kommunizieren, wieZickbecher,Bluetooth Lautsprecher, z-Welle, oder jedes andere Medium einschließlich drahtgebundener und drahtloser Sensornetze. Dieses Protokoll ist nicht brauchen vernetzte Umgebung wie MQTT. Aber alle bidirektional & verlustreiche Netzwerkprotokolle unterstützen MQTT und MQTT-SN. MQTT SN Spezifikation ist verfügbar untermqt.org.
Machine-to-Machine, Machine-to-User, Machine-to-Mobile Kommunikation kann nicht passieren ohne mächtiger zentraler Server. MQTT Kantengeräte und Anwendungen kommunizieren über den MQTT Broker die als zentraler Server fungiert. Sie können herunterladenUnternehmendie laufen kann unter Windows und Linux jetzt und starten.
Der Hauptvorteil der SN ist die Paketgrößenreduktion und verbindungslos, um sicherzustellen, dass die Transaktion nimmt weniger Energie. Die folgenden sind:Technische Daten In den Warenkorb MQTT-SN über MQTT.
Feste Kopfzeile
Variabler Header
ThemaIdType | Sauberkeit | wird | Rest | Qo | DUP |
---|---|---|---|---|---|
0, 1 | 2. | 3 | ANHANG | 5,6 | 7 |
Die DUP, Retain, WILL, CleanSession sind die gleichen wie MQTT.
Sie werden auf 0 oder eine nach Bedarf eingestellt.
Das 0 und 1’st Bit der Fahne wird verwendet, um die Thema id type.
Das 5, 6 Bit wird verwendet, um das QoS anzugeben.
Ein neuer Client auf einem Netzwerk muss ein Searchgw-Paket senden, um die Adresse eines Gateway. Ein Client kann auch direkt anschließen, wenn er die Adresse eines MQTT-SN-Gateway kennt.
Struktur einer Suche GW-Paket
ANHANG Diese Nachricht ist drei Bytes lang. Der erste Byte ist der Länge. Die zweiter Byte ist der 0x01 Nachrichtentyp. Der dritte Byte ist der Radius der Sendung die auch auf dem zugrunde liegenden Netzwerk gesetzt werden.
2. Diese Nachricht muss in einem Netzwerk in einem Zeitintervall und es wird eine Antwort-Nachricht als GWINFO erhalten.
Der Client kann in zwei Methoden verbunden werden.
ANHANG Verbindung ohne Willen - Die Antwort wird connack message
2. Verbindung mit Willen - Die Antwort wird ein Wille Thema sein Bitte.
Länge | MsgType (0x04) | Flaggen | Protokoll Id | Dauer | Kunden |
---|---|---|---|---|---|
0) | 1 | 2. | 3 | 4.5. | 6-N |
Will zum Thema
Länge | MsgType (0x07) | Flaggen | Will zum Thema |
---|---|---|---|
0) | 1 | 2. | 3-N |
Nach der erfolgreichen Einstellung eines Willensthemas sendet das Gateway eine Nachricht Anfrage und der Kunde muss senden Die Willensnachricht.
Länge | Msgtype (0x09) | Willmsg |
---|---|---|
0) | 1 | 2-N |
Es gibt vier Möglichkeiten, wie ein MQTT-SN-Paket veröffentlicht werden kann.
Mit registrierter Topic ID –Die Kunden müssen Registrieren Sie den Themanamen mit dem Gateway und starten Sie dann die Veröffentlichung mit dem empfangenen Thema Ausweis.
Mit freundlicher Genehmigung Themen –Die Kunden können direkt mit einem Themennamen veröffentlichen, wenn die Länge des Themennamens kleiner als 2 ist Bytes.
Vorname Themen und Themen - Ja.Die Gateway wird ein vorgegebenes Thema haben, dessen Thema-ID vom Client zum Veröffentlichen verwendet werden kann. Die vor Thema ID, bei der sowohl für Server als auch für Client die Thema-ID eines Themas bekannt ist nicht müssen sich registrieren
Das geht nicht. –Das ist ein Sonderangebot wenn der Client muss keine Verbindung zum Gateway erstellen, kann es einfach starten Veröffentlichungen Setzen der QoS-Flag -1 keine Verbindungseinrichtung oder Beendigung des Gateways ! eine separate MQTT-Verbindung zum Broker, um diese Art von Veröffentlichungen zu handhaben. In QoS -1 veröffentlichen die Client kann nur vordefiniertes Thema id oder kurz Thema Name verwenden, es gibt keine Verbindung so Registrierungsthema ist nicht möglich
Paketstruktur für das Register und das Verlagswesen sind wie folgt.
Register
Länge | Msgtype(0x0A) | Thema | Msgid | Über uns |
---|---|---|---|---|
0) | 1 | 2,3 GHT oder mehr | 4,5 GHT | 5-N |
Die Thema-ID muss bei der Registrierungsnachricht als 0 codiert werden gesandt die Client.
Der Client kann die Thema-ID von regack mit folgenden Paket Struktur
Verordnung
Länge | Msgtype(0x0B) | Thema | Msgid | Über uns |
---|---|---|---|---|
0) | 1 | 2,3 GHT oder mehr | 4,5 GHT | 6 |
Der Client muss die entsprechende REGACK-Nachricht an die Register Paket mit Hilfe von Message-ID. Der Client muss den Rückgabecode von REGACK überprüfen und wenn seine 0 die Kunden kann das Thema id verwenden, sonst muss es das Registerpaket erneut geben.
Länge | MsgType(0x0C) | Flaggen | Thema | Msgid | Daten |
---|---|---|---|---|---|
0) | 1 | 2. | 3,4, | 5,6 | 7 |
Ein Client kann das Thema id verwenden, um ein Thema zu abonnieren, wenn es zuvor in einem Thema. Es kann den Namen des Themas oder den kurzen Themanamen abonnieren. Es wird ein Suback erhalten Nachricht mit Thema id. Das Abmeldepaket ist das gleiche wie Abmelden. Die Paketstruktur von abonnieren und Abmelden ist unten angegeben
Struktur
Länge | MsgType (Abonnent (0x12) / Abonnieren (0x14) | Flaggen | MsgId | ThemaId oder Thema Name |
---|---|---|---|---|
0) | 1 | 2. | 3,4 | 5,6,5-N |
Das Paket Abonnieren wird eine variable Länge haben, wenn es Abonniert Verwendung TopicName sonst wird es 7 Bytes sein.
Es gibt zwei Möglichkeiten, wie ein Client vom Gateway trennen kann.
Deconnect dauerhaft
Der Client muss ein Trennpaket senden, um zu trennen dauerhaft. Es wirkt wie MQTT.
Trennen mit Schlaf
Der Client sendet eine Trennnachricht mit Zeitdauer und gehen zu Schlaf für diese Zeitdauer wird das Gateway die Nachrichten für diesen Client speichern Zeit Zeitraum. Der Client muss eine Ping-Nachricht senden, um die gepufferte Nachricht zu erhalten und es wird empfangen Nachrichten aus dem Puffer veröffentlichen. Der Client erhält ein Ping bzw. wenn der Puffer leer. Die Client muss eine Ping vor der angegebenen Periode senden oder das Gateway wird als ein verloren Client.
Länge | MsgType (0x18) | Dauer(Optional) |
---|---|---|
0) | 1 | 2-3 |
Die MQTT-SN hat eine Bestimmung, das WILL-Thema und die Nachricht jederzeit zu aktualisieren. Das ist eine erweiterte Funktionalität über das MQTT-Nachrichtprotokoll.
ENTWICKLUNG
Der Client muss ein Trennpaket senden, um zu trennen dauerhaft. Es wirkt wie MQTT.
Trennen mit Schlaf
Der Client sendet eine Trennnachricht mit Zeitdauer und gehen zu Schlaf für diese Zeitdauer wird das Gateway die Nachrichten für diesen Client speichern Zeit Zeitraum. Der Client muss eine Ping-Nachricht senden, um die gepufferte Nachricht zu erhalten und es wird empfangen Nachrichten aus dem Puffer veröffentlichen. Der Client erhält ein Ping bzw. wenn der Puffer leer. Die Client muss eine Ping vor der angegebenen Periode senden oder das Gateway wird als ein verloren Client.
Länge | MsgType(0x1A) | Flaggen | Will Topic |
---|---|---|---|
0) | 1 | 2. | 3-N |
Die Flagge wird habenQoundZurück zur Übersicht.
Eine Antwortnachricht von Will Topic wird als Antwort in der ANHANG Struktur
Länge | MsgType(willtopicresp (0x1B) / willmessageresp (0x1D)) | Zurück zur Übersicht |
---|---|---|
0) | 1 | 2. |
Wenn der Return-Code ist anders als 0, muss es die Willtopicupd.
WILLMSGUPD
Länge | MsgType(0x1C) | WillMsg |
---|---|---|
0) | 1 | 2-N |
Der Client muss zusätzlich zu dem bestätigt es sendet.
ANHANG Paket anzeigen
2.SearchGW
3.Register
Werbepaket
Die Gateways im Netzwerk senden ein Werbepaket in einem Sicherheit Zeitraum. Der Client muss die Liste der aktiven Gateways im Netzwerk durch die beworbene Dauer.
Suche und Suche
Der Client muss auf eine Suchmaschinen-Nachricht reagieren, indem er sendet eine Gwinfo Nachricht. Es muss eine aktive Gateway-Adresse von seiner Gateway-Adressenliste senden.
Register
Wenn ein Client wieder angeschlossen ist, erhält er eine Registernachricht mit Thema Name und Thema ID für seine vorherigen Registrierungen und Abo muss es speichern die Name und IDs.