MQTT son las siglas en inglés de “Transporte de telemetría de cola de mensajes” (‘Message Queuing Telemetry Transport’) y es un protocolo de comunicación que concibieron originalmente los empleados de IBM en 1999 para intercambiar datos de la forma más eficiente posible a través de redes inestables y de bajo rendimiento. No obstante, en los últimos años, el protocolo se abrió camino exitosamente hacia las aplicaciones de IoT, desplazando al resto de los protocolos. En la actualidad, su especificación la está refinando la Organización para el Avance de los Estándares de la Información Estructurada (OASIS, por sus siglas en inglés) y está disponible sin cargo.
En los últimos años, el protocolo [MQTT] se abrió camino exitosamente hacia las aplicaciones de IoT, desplazando al resto de los protocolos.
El protocolo MQTT funciona según el principio publicación-suscripción (pub/sub) para el intercambio de datos entre una cierta cantidad de participantes. Hay una instancia central, el llamado “broker”, que administra y distribuye todos los datos en circulación. Un participante que desea compartir información lo hace cuando publica sus datos en el broker. Un participante interesado en datos se puede suscribir al broker y recibirá de este los datos que le interesen. En la teoría, cualquier cantidad de dispositivos se pueden registrar con el broker para editar y suscribir. Asimismo, un participante puede ser editor y suscriptor a la vez.
La mayor ventaja es que no se necesitan conexiones punto a punto, por lo tanto, se puede desvincular a participantes de forma positiva y reducir la complejidad.
Este concepto ofrece nuevas libertades que principalmente tienen los siguientes efectos:
- Independencia de los participantes. Un emisor de datos (editor) no conoce a los destinatarios finales (suscriptores), y viceversa. Por ende, las direcciones clásicas de los participantes y su administración no se aplican en este nivel.
- Independencia temporal. La emisión y recepción de datos puede ocurrir en cualquier momento y, por sobre todo, en diferentes horarios. Al editor le resulta indistinto si sus suscriptores están interesados en los datos en ese momento o si actualmente están apagados y, por ende, los utilizarán más tarde.
La mayor ventaja es que no se necesitan conexiones punto a punto, por lo tanto, se puede desvincular a participantes de forma positiva y reducir la complejidad. Gracias a estas dos propiedades, los sistemas pub/sub ganan una escalabilidad enorme. Nuevos participantes se pueden unir a la red sin mucho esfuerzo o desuscribirse sin que otros se enteren. Ese es exactamente uno de los requisitos principales de las aplicaciones IoT industriales.
Otra ventaja es la huella mínima de una pila MQTT. Con solo unos pocos kilobytes, se pueden integrar fácilmente una gran cantidad de dispositivos.
Se utilizan los llamados “temas” para que un broker sepa a quién le interesa qué datos. Un tema es una especie de carpeta donde se almacenan datos específicos. Un tema también se puede anidar para acotarlo aún más. Un ejemplo muy simple es un sensor de temperatura que desea poner a disposición sus valores de medición. Para ello, publica sus datos en el tema “temperatura”. Como una aplicación habitualmente tiene varios sensores, esto se publica de forma más específica en el tema “Temperatura/Hall_1”. Cualquier participante interesado en este valor ahora se puede suscribir al tema “Temperatura/Hall_1”, y entonces el broker le proveerá los datos nuevos cada vez que se publique algo nuevo de este tema.
Además de todas las ventajas que ofrece el MQTT, hay un gran inconveniente desde la perspectiva de las aplicaciones industriales: los datos del usuario (carga útil) del MQTT son una cadena arbitraria que no está sujeta a ninguna regla adicional con respecto al contenido o la semántica de los datos que contiene (los datos son agnósticos).
Nuevos participantes se pueden unir a la red sin mucho esfuerzo o desuscribirse sin que otros se enteren. Ese es exactamente uno de los requisitos principales de las aplicaciones IoT industriales.
Figura 1. Concepto de publicación-suscripción de MQTT
Autor: Andrés Gorenberg