Contáctanos

¿Qué es MQTT? Una introducción práctica

MQTT – Message Queuing Telemetry Transport

MQTT (Message Queuing Telemetry Transport) es un protocolo de mensajería diseñado para redes restringidas de bajo ancho de banda y dispositivos IoT con latencia muy alta. Dado que está especializado en entornos de baja capacidad y alta latencia, es un protocolo ideal para la comunicación máquina a máquina (M2M).

MQTT funciona bajo el principio publicador/suscriptor y se opera mediante un broker central. Esto significa que el emisor y el receptor no tienen una conexión directa. Las fuentes de datos envían su información a través de una publicación (publish) y todos los receptores interesados en ciertos mensajes (“marcados por un tema o topic”) reciben esos datos porque se han registrado como suscriptores.

En IoT e IIoT, MQTT se utiliza incluso para la conexión con entornos en la nube. Aquí encontrarás todo lo que necesitas saber sobre el uso de MQTT con un enfoque industrial.

  1. ¿Qué significa MQTT?

MQTT significa Message Queuing Telemetry Transport. Es un protocolo de mensajería extremadamente sencillo y liviano (suscripción y publicación) diseñado para dispositivos y redes limitados con alta latencia, bajo ancho de banda o conexiones poco confiables.
Sus principios de diseño buscan reducir el consumo de ancho de banda y los requisitos de recursos de los dispositivos, garantizando al mismo tiempo seguridad en la transmisión. Esto es especialmente ventajoso en dispositivos M2M o IoT, donde el rendimiento de la batería y la eficiencia en la red son críticos.

  1. ¿Qué es un topic en MQTT?

Con MQTT, los dispositivos IoT con recursos limitados pueden enviar (publicar) información sobre un tema específico (topic) a un servidor que actúa como broker de mensajes MQTT.
El broker luego transmite la información a todos los clientes que previamente se hayan suscrito a ese tema.

Para los humanos, un topic se asemeja a una ruta jerárquica de archivos. Los clientes pueden suscribirse a un nivel específico de esa jerarquía o usar caracteres comodín para abarcar múltiples niveles.

El protocolo MQTT es especialmente útil en redes inalámbricas con latencias variables, limitaciones ocasionales de ancho de banda o conexiones inestables.

  • Si un cliente suscriptor pierde la conexión con el broker, este almacena en búfer los mensajes y los entrega cuando el cliente vuelva a estar en línea.
  • Si un cliente publicador se desconecta sin aviso, el broker puede cerrar la conexión y enviar un mensaje en caché al suscriptor con las instrucciones del publicador.
  1. ¿Qué es un broker MQTT?

MQTT Schema EN 1

El broker MQTT es el núcleo de todo protocolo Publish/Subscribe. Según su implementación, un broker puede gestionar hasta miles de clientes conectados simultáneamente.

Sus funciones principales son:

  • Recibir todos los mensajes.
  • Filtrarlos.
  • Determinar qué clientes están suscritos a cada mensaje.
  • Reenviar los mensajes a los clientes correspondientes.
  • Mantener las sesiones de los clientes persistentes (suscripciones y mensajes perdidos).
  • Autenticar y autorizar a los clientes.

Además, el broker suele ser extensible, lo que permite integrarlo con sistemas backend y añadir autenticación personalizada. Esto es clave porque normalmente el broker está expuesto a internet, atiende a numerosos clientes y debe redirigir mensajes a sistemas de análisis o procesamiento posteriores.

En resumen: el broker es el centro de intercambio de todos los mensajes, por lo que debe ser escalable, integrable, monitoreable y tolerante a fallos.
Ejemplos industriales: HiveMQ MQTT Broker, mosquitto de Cedalo. Proveedores cloud como Microsoft y Amazon también ofrecen brokers propios: Azure IoT Hub y AWS IoT Core.

  1. ¿Qué es un payload en MQTT?

Cada mensaje transmitido mediante MQTT contiene dos elementos:

  • Un topic que define cómo debe procesarse el mensaje.
  • Un contenido o carga útil (payload), que puede diseñarse libremente.

El payload no está atado a una estructura fija, pero es recomendable definir un formato estandarizado (ej. JSON, XML, OPC UA) para garantizar que todos los dispositivos y aplicaciones puedan interpretar los datos correctamente.

  1. ¿Qué es un cliente MQTT y cómo funciona?

Todos los dispositivos y aplicaciones conectados al broker se denominan clientes MQTT (ejemplo: OPC Router). Un cliente puede:

  • Publicar mensajes en el broker.
  • Suscribirse a topics para recibir mensajes.

Los mensajes pueden transmitirse con distintos niveles de calidad de servicio (QoS):

  • QoS 0: el mensaje se envía una sola vez, sin confirmación de entrega.
  • QoS 1: el mensaje se reenvía hasta que el broker confirme su recepción (puede llegar varias veces).
  • QoS 2: garantiza la entrega exactamente una vez, con más consumo de ancho de banda.

Un cliente puede usar comodines para recibir múltiples temas, por ejemplo:

  • planta1/hall1/temperatura → recibe solo esa variable.
  • planta1/hall1/# → recibe todos los datos de hall1.
  • planta1/+/temperatura → recibe todas las temperaturas de planta1.

Además, los clientes MQTT pueden configurar un “Último Mensaje” (Last Will), que se envía automáticamente si pierden la conexión con el broker.

  1. ¿Cuándo usar (y no usar) MQTT?

MQTT es útil cuando muchas máquinas envían datos a un único destino (ej. la nube) para análisis, interpretación y distribución.

  • El broker en la nube actúa como intermediario entre máquinas y usuarios.
  • Los datos se organizan mediante topics y se comunican con el modelo publish/subscribe.

Ejemplo: un sistema de aire acondicionado publica datos sobre el estado de sus compresores en un topic. Los interesados (ingenieros de mantenimiento, sistemas de planificación, software de repuestos) se suscriben a ese topic y reciben la información en tiempo real.

Esto abre enormes oportunidades en IoT e IIoT: detección temprana de fallas, reducción de costos, mayor eficiencia y optimización de la planificación.

  1. ¿Para qué se usa MQTT en IoT?

Un topic en MQTT es una cadena UTF-8 que el broker usa para filtrar mensajes.

  • Los niveles del topic se separan con /.
  • No es necesario declararlos antes de usarlos.
  • Los topics distinguen mayúsculas y minúsculas (casa/temp ≠ Casa/Temp).
  • El / solo también es válido como topic.

⚠️ Excepción: los topics que empiezan con $ están reservados para estadísticas internas del broker (ej. $SYS/). Los clientes no pueden publicar en ellos.

  1. ¿Cómo empezar fácilmente con MQTT?

Una forma sencilla es usar HiveMQ como broker MQTT, ya que está basado en estándares IoT abiertos y ofrece compatibilidad con una amplia variedad de clientes.

El protocolo MQTT, gracias a su simplicidad y modelo publish/subscribe, es ideal para aplicaciones IoT y en la nube, especialmente con:

  • Sensores de bajo consumo.
  • Dispositivos móviles.
  • Computadoras embebidas y microcontroladores.

Combinado con herramientas como OPC Router, la integración de conexiones industriales se simplifica enormemente.