El transporte de telemetría por cola de mensajes (MQTT, por sus siglas en inglés, Message Queuing Telemetry Transport) es uno de los protocolos de comunicación más utilizados en el internet de las cosas (IoT). Su función es permitir que sensores, máquinas, aplicaciones y otros dispositivos intercambien información consumiendo muy poca energía y un ancho de banda mínimo, lo que lo hace ideal para equipos con recursos limitados o conexiones de red poco confiables.
La historia de MQTT comenzó en 1999, cuando los ingenieros Andy Stanford-Clark, de IBM, y Arlen Nipper, entonces en Arcom Control Systems, buscaban una manera de supervisar sensores instalados en oleoductos remotos mediante enlaces satelitales. En aquella época, las comunicaciones eran costosas, lentas e inestables, mientras que muchos dispositivos funcionaban con baterías que debían durar largos periodos. Para resolver este problema diseñaron un protocolo extremadamente ligero, capaz de seguir funcionando incluso cuando la conexión se interrumpía temporalmente. En 2010, su especificación se publicó como un estándar abierto y, desde 2013, es mantenida por la organización OASIS. Actualmente, la versión 5.0 es la más completa y ofrece numerosas mejoras.
El funcionamiento de MQTT puede compararse con un tablero de anuncios o con un grupo de mensajería muy bien organizado. Existen tres elementos principales: los clientes, el broker y los temas. Los clientes pueden ser sensores, teléfonos, computadoras, servidores o prácticamente cualquier dispositivo conectado. El broker actúa como un servidor central que recibe todos los mensajes y los distribuye a quienes los necesitan. En lugar de comunicarse directamente entre sí, los dispositivos publican información en un tema específico, mientras que otros dispositivos se suscriben a los temas que desean recibir. Por ejemplo, un sensor de temperatura instalado en una vivienda puede publicar sus mediciones en el tema casa/sala/temperatura, y tanto una aplicación móvil como un termostato inteligente o un sistema de monitoreo recibirán automáticamente cada nueva lectura.
Este modelo hace que la comunicación sea mucho más eficiente. En vez de que cada dispositivo tenga que preguntar constantemente si existe información nueva, el broker se encarga de distribuir los mensajes únicamente a los destinatarios adecuados. Además, los temas tienen una estructura jerárquica similar a las carpetas de una computadora, con nombres como casa/sala/temperatura o fabrica/linea1/maquina3/estado, lo que facilita organizar grandes cantidades de información. También es posible utilizar comodines para suscribirse a varios temas relacionados mediante una sola regla, simplificando el monitoreo de sistemas completos.
Una de las principales fortalezas de MQTT es su capacidad para trabajar en redes inestables, como puede ser el caso de un vehículo que atraviesa una carretera donde la cobertura de internet desaparece por momentos. El protocolo incorpora un mecanismo que permite verificar periódicamente que la conexión siga activa y facilita una reconexión rápida cuando esta se pierde. Además, ofrece tres niveles de calidad de servicio, conocidos como QoS (Quality of Service). El nivel QoS 0 envía el mensaje una sola vez sin confirmar su recepción, por lo que es el método más rápido, aunque existe la posibilidad de que el mensaje se pierda. QoS 1 garantiza que el mensaje llegue al menos una vez, aunque en algunas circunstancias podría recibirse duplicado. Finalmente, QoS 2 asegura que el mensaje sea recibido exactamente una vez, convirtiéndose en la opción más confiable para aplicaciones donde un error podría tener consecuencias importantes, como el control de maquinaria o procesos industriales.
MQTT también incorpora funciones muy útiles para aplicaciones en tiempo real. Los mensajes retenidos permiten que el broker conserve el último valor publicado en un tema para entregarlo inmediatamente a cualquier cliente que se suscriba posteriormente. Asimismo, el denominado “último mensaje y testamento” permite que un dispositivo deje configurado un mensaje que el broker enviará automáticamente si detecta una desconexión inesperada, informando, por ejemplo, que un sensor dejó de funcionar o perdió alimentación eléctrica.
Si se compara con HTTP, el protocolo utilizado habitualmente para navegar por páginas web, MQTT resulta mucho más eficiente para el internet de las cosas. Cada vez que un navegador utiliza HTTP normalmente establece una conexión, realiza una solicitud, recibe una respuesta y posteriormente finaliza esa conexión. MQTT, en cambio, mantiene una conexión persistente entre el cliente y el broker, evitando ese intercambio repetitivo y reduciendo considerablemente el consumo de energía y de ancho de banda.
Actualmente MQTT está presente en numerosos ámbitos de la vida cotidiana. En las casas inteligentes, coordina el funcionamiento de luces, cámaras, sensores de movimiento, cerraduras y termostatos. En la industria, facilita la supervisión remota de maquinaria y procesos de producción. En la agricultura, permite monitorear variables como la humedad del suelo, la temperatura o el estado de los cultivos. En el sector de la salud, posibilita que relojes inteligentes y otros dispositivos portátiles transmitan constantes vitales en tiempo real, mientras que, en el ámbito automotriz, se utiliza para intercambiar información entre vehículos y servicios conectados. Los brokers son capaces de gestionar desde unos cuantos dispositivos hasta millones de conexiones simultáneas.
Algo poco conocido es que, durante varios años, la aplicación móvil de Facebook Messenger utilizó MQTT como uno de sus principales protocolos de comunicación para mantener activas las conversaciones en tiempo real. Gracias a su bajo consumo de recursos, la aplicación podía recibir mensajes de forma continua sin agotar rápidamente la batería del teléfono ni consumir grandes cantidades de datos, una ventaja especialmente importante cuando predominaban las redes móviles 2G y 3G.
Gracias a su eficiencia, bajo consumo de recursos y capacidad para mantener comunicaciones confiables incluso en redes poco estables, MQTT permite que millones de dispositivos intercambien información de forma rápida y segura.
Referencias: