Protocolo para configurar los ajustes del dispositivo IoT

9

MQTT se usa ampliamente en IoT cuando se trata de intercambiar datos de aplicaciones entre el dispositivo final y el servicio de host. El modelo de publicación-suscripción hace que sea fácil de usar: sin apretones de manos, negociaciones, etc. (al menos por encima de la capa de protocolo MQTT). Está orientado principalmente a que los productores de datos puedan distribuir sus datos fácilmente a los consumidores.

Sin embargo, cuando se trata de un servidor central que desea configurar los ajustes en un dispositivo final, no estoy seguro de que el modelo sea muy adecuado. El servidor querrá enviar un comando al dispositivo y esperar una respuesta (por ejemplo, leer una configuración específica, esperar respuesta), que realmente no se ajusta al modelo de publicación-suscripción de MQTT.

Me preguntaba si hay protocolos existentes que estén orientados a enviar y recibir comandos y configurar dispositivos remotos.

Amr Bekhit
fuente
1
¿Está seguro de que MQTT no permite que el cliente se suscriba a un canal de control? Creo que este es el lugar para comenzar a buscar respuestas, pero no estoy lo suficientemente actualizado como para resumir en una respuesta es.wikipedia.org/wiki/Representational_state_transfer
Sean Houlihane
1
No olvide que el punto final debe ser el que inicia el canal, por lo que tiene el control del consumo de energía.
Sean Houlihane
1
@SeanHoulihane Ciertamente es posible usar MQTT para enviar y recibir comandos / configuraciones como lo describe, pero tal como lo veo, lo ideal es tener un protocolo "basado en sesión", es decir, crear sesión, enviar un comando y recibir una respuesta en esa misma sesión, vinculando así fácilmente la respuesta al comando original. MQTT se basa en mensajes, por lo que no hay nada en absoluto para vincular los mensajes entre sí; depende de usted manejar esa parte. Me preguntaba si había un protocolo fácilmente disponible que pudiera usar para ese propósito.
Amr Bekhit
1
en.wikipedia.org/wiki/OMA_LWM2M No estoy seguro exactamente cómo, pero la nube parece ser capaz de hacer llamadas PUT o POST para activar una devolución de llamada en el cliente.
Sean Houlihane
MQTTv5 tiene campos de encabezado para marcar un mensaje como respuesta a un mensaje anterior.
hardillb

Respuestas:

6

Suena como un trabajo para CoAP :

Al igual que HTTP, CoAP se basa en el modelo REST tremendamente exitoso: los servidores ponen a disposición los recursos bajo una URL y los clientes acceden a estos recursos utilizando métodos como GET, PUT, POST y DELETE.

Desde el punto de vista del desarrollador, CoAP se parece mucho a HTTP. Obtener un valor de un sensor no es muy diferente de obtener un valor de una API web.

Aparentemente se puede implementar con una sobrecarga muy baja:

CoAP ha sido diseñado para funcionar en microcontroladores con tan solo 10 KiB de RAM y 100 KiB de espacio de código

CoAP se especifica en RFC 7252 , y hay varias implementaciones (por ejemplo, en C ).

Está muy inspirado en REST como se usa con HTTP para las API web, por lo que si está familiarizado con ellos, rápidamente obtendrá CoAP. Si no, puede encontrar esta presentación útil para el contexto. La idea es que cada método HTTP tiene un significado semántico, por ejemplo, GETsolicita información desde el dispositivo sin cambiar nada y POST, PUTy DELETEmutar los datos.

Como usted dice, los modelos de publicación / suscripción no funcionarían para una situación en la que su dispositivo actúa como un "servidor" para la coordinación del sistema central (que actúa como un cliente para cada dispositivo). En cambio, un modelo similar a HTTP es ideal, excepto que HTTP tiene demasiada sobrecarga, que es donde entra CoAP.

Aurora0001
fuente
0

Me preguntaba si hay protocolos existentes que estén orientados a enviar y recibir comandos y configurar dispositivos remotos.

Sí, hay un mejor protocolo para la administración de dispositivos en IoT. Es LwM2M : es mucho más eficiente que MQTT y por encima de COAP, MQTT y HTTP.

LwM2M viene con un modelo de gestión de datos y dispositivos bien definido, que ofrece una variedad de objetos estándar listos para usar (IPSO Smart Objects), monitoreo de conectividad, acciones remotas del dispositivo y actualizaciones estructuradas de FOTA y SOTA, mientras que en MQTT estas características son completamente proveedor y plataforma específica. Lo que sigue es que con MQTT, las actualizaciones de firmware o cualquier otra característica de administración deben crearse desde cero. En contraste, LwM2M ofrece actualizaciones de firmware como una de sus funcionalidades básicas, por lo que no es necesario inventar ningún nuevo bloque de construcción para la comunicación.

Aquí tienes una comparación MQTT vs LwM2M y todo el curso intensivo.

Barbara Potter
fuente