Comparativa entre MQTT y Modbus como protocolos IoT

El IoT no trata sólo de nuevas tecnologías, sino que trata también de cómo se integra el nuevo paradigma con las tecnologías más antiguas. El atributo clave para todo ello es la comunicación. Los métodos de comunicación disponibles son diversos y un gran número de ellos juegan un gran papel en el IoT. Este artículo explora dos protocolos complementarios: Modbus como protocolo local para la comunicación de dispositivos a corta distancia y MQTT como un protocolo escalable a internet que permite la comunicación global.

Post original de https://software.intel.com

Modbus es un protocolo de comunicaciones serie que apareció por primera vez en 1979 y es el protocolo estándar de facto para la conexión de dispositivos industriales. MQTT apareció 20 años después con una clara vocación IP con lo que estos dos protocolos juntos generan sistemas de gran escalabilidad y conectividad. La Figura 1 ilustra la relación general entre estos protocolos.

Figura 1.  La puerta de enlace de Internet de las Cosas (IoT) como una solución favorable para la comunicación IO Vamos a explorar Modbus y MQTT para ver en qué se diferencian y cómo se complementan entre sí.

Modbus

Desde su aparición en 1979, Modbus se ha convertido en un amplio conjunto de protocolos a través de una variedad de enlaces físicos (por ejemplo, RS-485). En su esencia, Modbus es un protocolo de comunicaciones serie que sigue un modelo maestro-esclavo. Un maestro envía una petición a un dispositivo esclavo, y el esclavo devuelve una respuesta. En una red Modbus estándar, hay un maestro y hasta 247 esclavos (aunque con el aumento del direccionamiento a 2 byte se puede ampliar de manera significativa este límite).

Con RS-485, la comunicación entre un maestro y un esclavo se produce en un marco que indica un código de función. El código de función identifica la acción a realizar, tales como leer una entrada discreta; leer primero en entrar, primero en salir de colas; o realizar una función de diagnóstico. El esclavo responde entonces, basándose en el código de función recibido, con una simple respuesta indicada por un conjunto de bytes. Por lo tanto, los esclavos pueden ser dispositivos inteligentes o dispositivos simples que representan un único sensor.

A partir de esta descripción, se puede ver la simplicidad del protocolo Modbus que se ha popularizado como un protocolo de comunicación de facto para sistemas industriales o SCADA.

MQTT

MQTT es un protocolo ligero y abierto de comunicación máquina a máquina diseñado para la interacción de la IO. Una red MQTT contiene un broker MQTT, que media entre las interacciones entre los agentes MQTT. Los agentes son editores, que publican la información para el consumo por los suscriptores (ver Figura 2).

Figura 2. actores en una red Message Queuing Telemetry Transport

Los requisitos para MQTT son mínimos, ya que está diseñado para dispositivos integrados de recursos limitados. Además de una huella mínima, MQTT fue diseñado para la eficiencia de la comunicación - incluso a través de redes de bajo ancho de banda - y una sobrecarga mínima (en comparación con protocolos tales como HTTP). A través de redes 3G,  el rendimiento es de hasta 93 veces más rápido que Representational State Transfer (REST) ​​a través de HTTP.

MQTT implementa un modelo de publicación / suscripción con un conjunto mínimo de métodos que indican la acción que se lleva a cabo sobre un tema determinado. Los agentes se conectan a un broker, y desde ahí publican sobre un topic o se suscriben para quedar a la escucha. Los métodos MQTT se definen como:

  • Conectar - Establecer una conexión con un broker de MQTT.

  • Desconectar - Derribar una conexión de un broker MQTT.

  • Publicar - Publicar un tema en un broker de MQTT.

  • Subscribir - Suscribirse a un tema de un broker MQTT.

  • Darse de baja - Dar de baja a un tema de un broker MQTT.

La Figura 3 ilustra una interacción simple entre un editor y el suscriptor utilizando un broker MQTT. Como se muestra, un productor de información se conecta a un broker MQTT. Del mismo modo, un consumidor de información conecta con el broker MQTT. El consumidor se suscribe a un tema, que se define aquí como / home / alarma / 1 / estado. En este tema el ejemplo identifica el cambio en el estado del sistema de alarma de un hogar para la zona 1. Cuando el productor tiene información para compartir, publica un mensaje al corredor, que a su vez comparte la información a todos los suscriptores de este tema.

Figura 3. Una interacción simple entre agentes Message Queuing Telemetry Transporte

MQTT permite incluso una forma de comodines para simplificar el proceso de suscripción. Si un suscriptor quería el estado de todas las alarmas, él o ella podría simplemente suscribirse a / home / alarma / + / estado, lo que notificará al suscriptor de cualquier cambio de estado de alarma. El subárbol completo también podría ser suscrito con el tema / home / #, lo que permite suscribirse a todos los eventos en / home.

Calidad de servicio

MQTT permite la definición de calidad de servicio (QoS). Existen tres niveles de calidad de servicio en MQTT:

  • 0. Este nivel de calidad de servicio significa “como máximo una vez” entrega (mejor esfuerzo). Los mensajes no son reconocidas, lo que hace de este un enfoque tipo “dispara y olvida”.

  • 1. Este nivel de calidad de servicio significa una entrega tipo “al menos una vez”. Un suscriptor puede recibir el mensaje más de una vez, pero se permite el acuse de recibo por parte del receptor.

  •  2. El nivel de garantía de calidad de servicio más lento pero más alto es 2. QoS 2 significa “una sola vez” e implica un apretón de manos de cuatro etapas para la entrega. Este nivel es el más lento, pero también el más seguro de los niveles de calidad de servicio.

Su elección del nivel de calidad de servicio se basa en los datos y la importancia de su entrega.