Existe-t-il un mécanisme RPC normalisé pour MQTT?

10

Over on Stack Overflow, il y a une question sur l'implémentation de l'interaction demande / réponse sur MQTT. Comme le note une réponse, vous pouvez le faire en publiant la demande sur un sujet et en écoutant la réponse sur un autre jeton inclus dans la demande. C'est un peu gênant, mais ça marche.

Étant donné que MQTT est largement utilisé dans l'IoT, je me demande, y a-t-il eu des tentatives de standardisation de cette interaction de type RPC pour des raisons d'interopérabilité?

Chris Steinbach
la source
Je viens de trouver cela qui pourrait être la base d'une réponse: esr.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf . Certes, pas une spécification générique de demande / réponse étant étroitement couplée à LWM2M.
Chris Steinbach

Réponses:

9

Je ne connais pas de telles normes.

Comme indiqué dans les réponses à l'autre question, pub / sub ne se prête pas au RPC mais il peut être plié pour s'adapter.

L'une des forces de MQTT est que la charge utile peut être n'importe quoi, permettant au développeur de faire le meilleur choix pour son projet.

hardillb
la source
4

Je ne sais pas quelle est votre exigence pour une méthode de communication RPC standardisée sur MQTT mais j'ai quand même fait une petite recherche et trouvé plusieurs points à vous livrer.

Tout d'abord, sur la méthode standard. Sur un projet RPC Github , le type de description le cloue:

Ce module fournit une interface rpc pour une connexion mqtt, c'est essentiellement une stratégie de demande et de réponse qui utilise une structure de rubrique MQTT comme transport.

Le point est d'utiliser le modèle de pile (le modèle OSI est une norme) et d'utiliser simplement MQTT comme l'une des couches de la pile.

Ce projet sur json-rpc sur mqtt utilise un protocole standardisé ou au moins bien connu sur MQTT.

À propos de la maladresse, vous n'avez pas à construire le MQTT et le RPC par-dessus, mais à la place, utilisez l'une des bibliothèques liées ou une autre trouvée sur Github.

OK, pour chaque langue, il n'y a pas de base prête sur Github, mais dans ce cas, la conformité devient un critère de planification et peut malheureusement affecter l'ensemble du projet.

mico
la source
Je n'ai pas vraiment d'exigence. L'impulsion de la question est de comparer CoAP (qui a des mécanismes de demande / réponse et pub / sub définis par RFC ) à MQTT qui, je suis raisonnablement sûr, n'a plus que pub / sub standardisé. Certes, avoir des bibliothèques open source pour RPC est mieux que rien.
Chris Steinbach
4

Azure IoT Hub a un concept de méthodes directes:

IoT Hub vous permet d'invoquer des méthodes directes sur des appareils à partir du cloud.

Ceci est implémenté sur MQTT (AMQP n'est pas pris en charge), où

Les appareils reçoivent des demandes de méthode directes sur le sujet MQTT:

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

Ils ont inclus cela dans leur SDK, donc les développeurs n'ont pas à se soucier de surveiller spécifiquement le sujet. Vous pouvez implémenter une approche similaire.

Selon d'autres réponses, pub-sub ne se prête pas au RPC, et il n'y a pas de normes, à ma connaissance.

Plus de documentation est ici .

Simon Munro
la source