Protokoll zum Konfigurieren der IoT-Geräteeinstellungen

9

MQTT wird im IoT häufig verwendet, wenn Anwendungsdaten zwischen dem Endgerät und dem Hostdienst ausgetauscht werden sollen. Das Publish-Subscribe-Modell macht es einfach zu bedienen: kein Handshake, Verhandeln usw. (zumindest über der MQTT-Protokollschicht). Es ist in erster Linie darauf ausgerichtet, dass Datenproduzenten ihre Daten problemlos an Verbraucher verteilen können.

Wenn es sich jedoch um einen zentralen Server handelt, der Einstellungen auf einem Endgerät konfigurieren möchte, bin ich mir nicht sicher, ob das Modell sehr gut geeignet ist. Der Server möchte einen Befehl an das Gerät senden und auf eine Antwort warten (z. B. eine bestimmte Einstellung lesen, auf eine Antwort warten), was nicht wirklich zum Publish-Subscribe-Modell von MQTT passt.

Ich habe mich gefragt, ob es Protokolle gibt, die auf das Senden und Empfangen von Befehlen und das Konfigurieren von Remote-Geräten ausgerichtet sind.

Amr Bekhit
quelle
1
Sind Sie sicher, dass MQTT dem Client nicht erlaubt, einen Steuerkanal zu abonnieren? Ich denke, dies ist der richtige Ort, um nach Antworten zu suchen, aber ich bin nicht gut genug, um eine Antwort zusammenzufassen. En.wikipedia.org/wiki/Representational_state_transfer
Sean Houlihane
1
Vergessen Sie nicht, dass der Endpunkt derjenige sein muss, der den Kanal initiiert, damit er den Stromverbrauch steuert.
Sean Houlihane
1
@ SeanHoulihane Es ist sicherlich möglich, MQTT zum Senden und Empfangen von Befehlen / Einstellungen zu verwenden, wie Sie es beschreiben, aber so wie ich es sehe, benötigen Sie idealerweise ein Protokoll, das "sitzungsbasiert" ist, dh Sie erstellen eine Sitzung und senden einen Befehl und erhalten in derselben Sitzung eine Antwort, wodurch die Antwort leicht mit dem ursprünglichen Befehl verknüpft werden kann. MQTT ist nachrichtenbasiert, daher gibt es überhaupt nichts, um Nachrichten miteinander zu verknüpfen - es liegt an Ihnen, diesen Teil zu behandeln. Ich fragte mich, ob es ein leicht verfügbares Protokoll gab, das ich für diesen Zweck verwenden konnte.
Amr Bekhit
1
en.wikipedia.org/wiki/OMA_LWM2M Ich weiß nicht genau, wie, aber die Cloud scheint in der Lage zu sein, PUT- oder POST-Aufrufe zu tätigen, um einen Rückruf im Client auszulösen.
Sean Houlihane
MQTTv5 verfügt über Header-Felder, um eine Nachricht als Antwort auf eine frühere Nachricht zu markieren.
Hardillb

Antworten:

6

Klingt nach einem Job für CoAP :

Wie HTTP basiert CoAP auf dem äußerst erfolgreichen REST-Modell: Server stellen Ressourcen unter einer URL zur Verfügung, und Clients greifen mit Methoden wie GET, PUT, POST und DELETE auf diese Ressourcen zu.

Aus Entwicklersicht fühlt sich CoAP sehr nach HTTP an. Das Abrufen eines Werts von einem Sensor unterscheidet sich nicht wesentlich vom Abrufen eines Werts von einer Web-API.

Es kann anscheinend mit sehr geringem Aufwand implementiert werden :

CoAP wurde für Mikrocontroller mit nur 10 KB RAM und 100 KB Code-Speicher entwickelt

CoAP ist in RFC 7252 angegeben , und es gibt verschiedene Implementierungen (z . B. in C ).

Es ist sehr stark von REST inspiriert, wie es mit HTTP für Web-APIs verwendet wird. Wenn Sie also mit diesen vertraut sind, werden Sie schnell CoAP lernen. Wenn nicht, ist diese Präsentation möglicherweise für den Kontext hilfreich . Die Idee ist, dass jede HTTP-Methode eine semantische Bedeutung hat, z. B. GETInformationen vom Gerät anfordert, ohne etwas zu ändern POST, PUTund DELETEdie Daten zu mutieren.

Wie Sie sagen, funktionieren Publish / Subscribe-Modelle nicht für Situationen, in denen Ihr Gerät als "Server" für die zentrale Systemkoordinierung fungiert (die für jedes Gerät als Client fungiert). Stattdessen ist ein Modell ähnlich wie HTTP ideal, außer dass HTTP viel zu viel Overhead hat, und hier kommt CoAP ins Spiel.

Aurora0001
quelle
0

Ich habe mich gefragt, ob es Protokolle gibt, die auf das Senden und Empfangen von Befehlen und das Konfigurieren von Remote-Geräten ausgerichtet sind.

Ja, es gibt ein besseres Protokoll für die Geräteverwaltung im IoT. Es ist LwM2M - Es ist viel effizienter als MQTT und höher als COAP, MQTT und HTTP.

LwM2M wird mit einem genau definierten Daten- und Geräteverwaltungsmodell geliefert, das eine Vielzahl gebrauchsfertiger Standardobjekte (IPSO Smart Objects), Konnektivitätsüberwachung, Remote-Geräteaktionen und strukturierte FOTA- und SOTA-Updates bietet, während diese Funktionen in MQTT vollständig vorhanden sind hersteller- und plattformspezifisch. Was folgt ist, dass mit MQTT Firmware-Updates oder andere Verwaltungsfunktionen von Grund auf neu erstellt werden müssen. Im Gegensatz dazu bietet LwM2M Firmware-Upgrades als eine seiner Grundfunktionen an, sodass keine neuen Bausteine ​​für die Kommunikation erfunden werden müssen.

Hier haben Sie Vergleich MQTT vs LwM2M und ganzen Crashkurs.

Barbara Potter
quelle