Introducción
El protocolo de comunicación MQTT, se ha vuelto uno de los principales pilares del IoT por su sencillez y ligereza.
¿Qué es MQTT?
MQTT son las siglas MQ Telemetry Transport, aunque en primer lugar fue conocido como Message Queing Telemetry Transport.
Está basado en la pila TCP/IP como base para la comunicación.
En el caso de MQTT cada conexión se mantiene abierta y se «reutiliza» en cada comunicación.
Es una diferencia, por ejemplo, a una petición HTTP 1.0 donde cada transmisión se realiza a través de conexión.
¿Cómo funciona el MQTT?
MQTT es un servicio de mensajería push con el modelo de publicador/suscriptor (pub-sub). En este tipo de arquitecturas los clientes (publicadores ó suscriptores) intercambia datos con un servidor centralizado o broker.
Para organizar las colas de envio y recepcion de datos estas se organizan por asuntos o topics.
Cada cliente puede publicar un mensaje en un determinado topic o recibir informacion de los topics a los que se encuentra suscripto.
Flujo de trabajo
Los clientes inician una conexión TCP/IP con el broker, el cual mantiene un registro de los clientes conectados.
Esta conexión se mantiene abierta hasta que el cliente la finaliza.
Para ello el cliente envía un mensaje CONNECT que contiene información necesaria (nombre de usuario, contraseña, client-id…).
El broker responde con un mensaje CONNACK, que contiene el resultado de la conexión (aceptada, rechazada, etc).
Por defecto, MQTT emplea el puerto 1883 y el 8883 cuando funciona sobre TLS.
Te puede interesar
QoS (Calidad del Servicio)
MQTT dispone de un mecanismo de calidad del servicio o QoS, entendido como la forma de gestionar la robustez del envío de mensajes al cliente ante fallos (por ejemplo, de conectividad).
Niveles QoS posibles
- QoS 0 unacknowledged (at most one): El mensaje se envía una única vez. En caso de fallo puede que algun mensaje no se entregue.
- QoS 1 acknowledged (at least one): El mensaje se envía hasta que se garantiza la entrega. En caso de fallo, el suscriptor puede recibir algún mensaje duplicados.
- QoS 2 assured (exactly one): Se garantiza que cada mensaje se entrega al suscriptor, y únicamente una vez.
Usar un nivel u otro depende de las características y necesidades de fiabilidad de nuestro sistema.
Lógicamente, un nivel de QoS superior requiere un mayor intercambio mayor de mensajes de verificación con el cliente y, por tanto, mayor carga al sistema.
Ventajas del MQTT
Son varias las ventajas del protocolo MQTT como sistema de comunicación IoT.
Por un lado, tenemos todas las ventajas de la arquitectura publicador/suscriptor como son escalabilidad, asincronismo, desacomplamiento entre clientes.
Otra ventaja es su ligereza del protocolo MQTT es que requiere un ancho de banda mínimo, lo cual es importante en redes inalámbricas (3G), o conexiones con posibles problemas de calidad.