Gibt es einen standardisierten RPC-Mechanismus für MQTT?

10

Bei einem Stapelüberlauf gibt es eine Frage zum Implementieren der Anforderungs- / Antwortinteraktion über MQTT. Wie eine Antwort vermerkt, können Sie dies tun, indem Sie die Anforderung zu einem Thema veröffentlichen und auf die Antwort auf einem anderen Token warten, das in der Anforderung enthalten war. Es ist etwas umständlich, aber es funktioniert.

Da MQTT im gesamten IoT häufig verwendet wird, habe ich mich gefragt, ob es Versuche gegeben hat, diese Interaktion vom Typ RPC aus Gründen der Interoperabilität zu standardisieren.

Chris Steinbach
quelle
Ich habe gerade dies gefunden, was die Grundlage für eine Antwort sein könnte: esr.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf . Zugegebenermaßen keine generische Anforderungs- / Antwortspezifikation, die eng an LWM2M gekoppelt ist.
Chris Steinbach

Antworten:

9

Solche Standards sind mir nicht bekannt.

Wie in den Antworten auf die andere Frage ausgeführt, eignet sich Pub / Sub nicht für RPC, kann aber passend gebogen werden.

Eine der Stärken von MQTT ist, dass die Nutzlast alles sein kann, sodass ein Entwickler die beste Wahl für sein Projekt treffen kann.

hardillb
quelle
4

Ich bin mir nicht sicher, was Ihre Anforderung für eine standardisierte RPC-Kommunikationsmethode über MQTT ist, aber ich habe trotzdem ein wenig gesucht und mehrere Punkte gefunden, die ich Ihnen liefern kann.

Zunächst zur Standardmethode. Bei einem Github- RPC-Projekt ist die Beschreibung Art der Nägel:

Dieses Modul bietet eine RPC-Schnittstelle für eine mqtt-Verbindung. Im Wesentlichen handelt es sich hierbei um eine Anforderungs- und Antwortstrategie, die eine MQTT-Themenstruktur als Transport verwendet.

Der Punkt ist, das Stapelmodell zu verwenden (das OSI-Modell ist ein Standard) und nur MQTT als eine der Ebenen des Stapels zu verwenden.

Dieses Projekt auf json-rpc über mqtt verwendet ein standardisiertes oder zumindest bekanntes Protokoll über MQTT.

In Bezug auf Unbeholfenheit müssen Sie das MQTT und den RPC nicht von Grund auf neu erstellen, sondern müssen stattdessen eine der verknüpften Bibliotheken oder eine andere auf Github gefundene Bibliothek verwenden.

OK, für jede Sprache gibt es keine fertige Basis für Github, aber in diesem Fall wird die Einhaltung zu einem Planungskriterium und kann sich leider auf das gesamte andere Projekt auswirken.

mico
quelle
Ich habe keine wirkliche Anforderung. Der Anstoß für die Frage ist der Vergleich von CoAP (mit RFC-definierten Anforderungs- / Antwort- und Pub / Sub-Mechanismen) mit MQTT, von dem ich mir ziemlich sicher bin, dass es jetzt nur standardisierte Pub / Sub gibt. Sicherlich ist es besser als nichts, einige Open-Source-Bibliotheken für RPC zu haben.
Chris Steinbach
4

Azure IoT Hub verfügt über ein Konzept direkter Methoden:

Mit IoT Hub können Sie direkte Methoden auf Geräten aus der Cloud aufrufen.

Dies wird über MQTT implementiert (AMQP wird nicht unterstützt), wobei

Geräte erhalten direkte Methodenanforderungen zum MQTT-Thema:

$iothub/methods/POST/{method name}/?$rid={request id}.

Sie haben dies in ihr SDK integriert, sodass Entwickler sich nicht um die gezielte Überwachung des Themas kümmern müssen. Sie könnten einen ähnlichen Ansatz implementieren.

Wie aus anderen Antworten hervorgeht, eignet sich Pub-Sub nicht für RPC, und meines Wissens gibt es keine Standards.

Weitere Dokumentation finden Sie hier .

Simon Munro
quelle