¿Existe un mecanismo RPC estandarizado para MQTT?

10

En Stack Overflow hay una pregunta sobre la implementación de la interacción de solicitud / respuesta a través de MQTT. Como señala una respuesta, puede hacerlo publicando la solicitud sobre un tema y escuchando la respuesta en otro token que se incluyó en la solicitud. Es un poco incómodo, pero funciona.

Como MQTT se usa ampliamente en IoT, me pregunto, ¿ha habido algún intento de estandarizar esta interacción de tipo RPC en aras de la interoperabilidad?

Chris Steinbach
fuente
Acabo de encontrar esto que podría ser la base para una respuesta: esr.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf . Es cierto que no se trata de una especificación genérica de solicitud / respuesta estrechamente acoplada a LWM2M.
Chris Steinbach

Respuestas:

9

No conozco ninguno de esos estándares.

Como se señaló en las respuestas a la otra pregunta, pub / sub no se presta a RPC pero puede doblarse para encajar.

Una de las fortalezas de MQTT es que la carga útil puede ser cualquier cosa, lo que permite a un desarrollador tomar la mejor decisión para su proyecto.

hardillb
fuente
4

No estoy seguro de cuál es su requisito para el método de comunicación RPC estandarizado a través de MQTT, pero aún hice una pequeña búsqueda y encontré varios puntos para entregarle.

En primer lugar, sobre el método estándar. En un proyecto Github rpc, la descripción lo clava:

Este módulo proporciona una interfaz rpc para una conexión mqtt, en esencia, esta es una estrategia de solicitud y respuesta que utiliza una estructura de tema MQTT como transporte.

El punto es usar el modelo de pila (el modelo OSI es un estándar) y simplemente usar MQTT como una de las capas de la pila.

Este proyecto en json-rpc sobre mqtt utiliza un protocolo estandarizado o al menos conocido sobre MQTT.

Acerca de la incomodidad, no es necesario construir el MQTT y el RPC sobre él desde cero, sino usar una de las bibliotecas vinculadas o alguna otra que se encuentre en Github.

OK, para cada idioma no hay una base lista en Github, pero en ese caso el cumplimiento se convierte en un criterio de planificación y puede afectar a todo el otro proyecto, desafortunadamente.

mico
fuente
No tengo ningún requisito real. El ímpetu para la pregunta es comparar CoAP (que tiene mecanismos de solicitud / respuesta definidos por RFC y pub / sub) con MQTT, que estoy razonablemente seguro de que ahora solo tiene pub / sub estandarizado. Ciertamente, tener algunas bibliotecas de código abierto para RPC es mejor que nada.
Chris Steinbach
4

Azure IoT Hub tiene un concepto de métodos directos:

IoT Hub le brinda la capacidad de invocar métodos directos en dispositivos desde la nube.

Esto se implementa a través de MQTT (AMQP no es compatible), donde

Los dispositivos reciben solicitudes de método directo sobre el tema MQTT:

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

Han incluido esto en su SDK, por lo que los desarrolladores no necesitan preocuparse por monitorear específicamente el tema. Podría implementar un enfoque similar.

Según otras respuestas, pub-sub no se presta a RPC, y no hay ningún estándar, que yo sepa.

Más documentación está aquí .

Simon Munro
fuente