El protocolo MQTT fue creado para conectar sensores y sistemas SCADA mediante enlaces de bajo ancho de banda. Su arquitectura publish/subscribe desacopla productores de consumidores y minimiza el tamaño de cada mensaje, lo que lo hace ideal para IoT, domótica y monitoreo industrial.
En lugar de realizar peticiones directas, los dispositivos publican mensajes en “topics”. Cualquier cliente suscrito a ese topic los recibe inmediatamente. Este esquema reduce el acoplamiento entre emisores y receptores.
| Elemento | Descripción |
|---|---|
| Topic | Cadena jerárquica (por ejemplo, casa/sala/temperatura) que organiza los mensajes. |
| Publicador | Envía datos al topic correspondiente; no necesita conocer a los suscriptores. |
| Suscriptor | Recibe mensajes de uno o varios topics; puede usar comodines para abarcar jerarquías. |
El broker es el intermediario que recibe las publicaciones y las reenvía a los suscriptores. Algunas implementaciones populares son:
El broker gestiona autenticación, autorización, retención y distribución eficiente de mensajes.
MQTT ofrece tres niveles de calidad de servicio para adaptarse a distintos requerimientos:
La elección del QoS afecta el uso de ancho de banda y la complejidad del broker, por lo que conviene asignarlo topic por topic.
Además del QoS, MQTT incluye mecanismos para mantener el estado:
Gracias a estos mecanismos, las redes IoT toleran caídas temporales sin perder datos relevantes.
Un flujo típico consiste en que un sensor publique su temperatura y un panel web la consuma:
# Terminal 1: suscribirse
mosquitto_sub -h test.mosquitto.org -t "casa/sala/temperatura" -v
# Terminal 2: publicar un valor simulando un sensor
mosquitto_pub -h test.mosquitto.org -t "casa/sala/temperatura" -m "25.3"
El mensaje aparece instantáneamente en la terminal suscrita. Cambiando el topic se pueden separar zonas, tipos de sensores o niveles de QoS distintos.
Para asegurar un entorno estable:
Estos lineamientos evitan que un solo cliente comprometido afecte a toda la red de sensores.