¿Qué es MQTT y cómo funciona?

Introducción

El Internet de las cosas (IoT) ha transformado la forma en que vivimos y trabajamos, y cada vez más dispositivos y electrodomésticos de nuestra vida diaria se conectan a Internet y se comunican entre sí. Desde asistentes domésticos inteligentes hasta rastreadores de actividad física portátiles, IoT permite una nueva y apasionante era de comodidad, eficiencia y conocimiento a través de la tecnología conectada.

Pero facilitar una comunicación confiable entre todos estos dispositivos en red plantea desafíos formidables. Los protocolos HTTP tradicionales utilizados para el tráfico web suelen ser demasiado pesados para los dispositivos IoT con recursos limitados. Además, la necesidad de transmisión de datos en tiempo real significa que no podemos depender de sondeos periódicos cliente/servidor.

Aquí es donde entra en juego MQTT. MQTT (Message Queuing Telemetry Transport) es un protocolo de mensajería de publicación/suscripción ligero optimizado para la comunicación de máquina a máquina (M2M) en entornos de IoT. Su funcionamiento eficiente y con poco ancho de banda lo hace ideal para conectar dispositivos con capacidades limitadas o conexiones poco confiables.

En esta guía completa, revelaremos el mundo de MQTT y cómo establece una comunicación eficiente y en tiempo real para IoT. Cubriremos:

  • Conceptos básicos de MQTT
  • Cómo funciona la arquitectura de publicación/suscripción
  • El papel del broker MQTT
  • Niveles de calidad de servicio en MQTT
  • Mensajes del protocolo MQTT y estructura de temas.
  • Principales ventajas del uso de MQTT para IoT
  • Aplicaciones reales con MQTT
  • El futuro de MQTT en las tecnologías emergentes
  • Preguntas frecuentes sobre MQTT

¡Así que profundicemos e iluminemos esta tecnología transformadora!

Profundizando en lo esencial de MQTT

MQTT significa Transporte de telemetría de colas de mensajes. Es un protocolo de código abierto desarrollado inicialmente en 1999 por Andy Stanford-Clark de IBM y Arlen Nipper de Arcom (ahora Eurotech).

MQTT proporciona un método ligero para intercambiar datos estructurados e información de control entre dispositivos utilizando un patrón de mensajería de publicación/suscripción (pub/sub). Estas características lo hacen ideal para la comunicación de máquina a máquina en entornos de IoT.

Arquitectura de publicación-suscripción

El patrón de mensajería pub/sub es el corazón de MQTT. Desacopla el envío y la recepción de mensajes.

Los editores generan mensajes y los publican sobre temas específicos. Los suscriptores expresan interés en diversos temas y reciben mensajes publicados sobre esos temas.

Esto permite una distribución de mensajes uno a muchos altamente escalable con una sobrecarga de red mínima. Los dispositivos publican actualizaciones de un tema, sin dirigirse a ningún destinatario en particular. Otros dispositivos se suscriben a temas de interés y reciben actualizaciones relevantes sin problemas.

Arquitectura de publicación-suscripción de MQTT

Papel del corredor

¿Qué es el corredor mqtt?

La entrega de publicación-suscripción de MQTT se realiza a través de un corredor MQTT.

El corredor es responsable de filtrar los mensajes según el tema y distribuirlos a los clientes suscritos. Actúa como un centro central, acepta mensajes publicados y los envía en consecuencia.

El uso de un corredor elimina la necesidad de conexiones directas entre cada cliente. Los editores simplemente envían mensajes al corredor. Los suscriptores se conectan al corredor para recibir mensajes. Esto mantiene la topología de la red simple incluso para una gran cantidad de clientes.

El corredor también maneja otras tareas clave como autenticación, permisos y persistencia de mensajes. Los corredores MQTT pueden escalar para manejar una gran cantidad de dispositivos conectados simultáneamente. Las opciones populares incluyen Mosquitto, HiveMQ y AWS IoT Core.

Entrega de mensajes Calidad del servicio

Entrega de mensajes Calidad del servicio

Dado que los dispositivos IoT a menudo utilizan redes poco confiables como WiFi o telefonía celular, MQTT incorpora funciones para garantizar una entrega confiable de mensajes. Los clientes pueden especificar un nivel de Calidad de Servicio (QoS) al publicar mensajes:

  • QoS 0 – Sin garantía de entrega. Mensaje enviado una sola vez.
  • QoS 1 – Mensaje entregado al menos una vez. Puede recibir duplicados.
  • QoS 2 – Mensaje entregado exactamente una vez. Utiliza un apretón de manos de 4 pasos.

Los niveles más altos proporcionan más seguridad en la entrega, a costa de una mayor sobrecarga de procesamiento. De esta forma, los clientes pueden elegir el nivel de QoS óptimo para cada caso de uso. Configuraciones como la telemetría pueden usar QoS 0, mientras que los mensajes de control críticos requieren QoS 2.

Esto le da a MQTT flexibilidad para operar de manera eficiente en diferentes entornos, desde una red satelital hasta un taller ruidoso.

Componentes clave de la arquitectura MQTT

El ecosistema MQTT consta de tres componentes principales: editores, suscriptores y corredor.

Editores

Los editores son clientes MQTT que envían mensajes al corredor. Empaquetan los datos de la carga útil junto con un nombre de tema que clasifica el mensaje.

Por ejemplo, un editor podría ser un sensor de temperatura que envía periódicamente lecturas de temperatura al tema “hogar/dormitorio/temperatura”. O un editor basado en eventos, como un sensor de movimiento que envía alertas en tiempo real cada vez que detecta movimiento.

Los editores establecen conexiones con el corredor y envían mensajes utilizando comandos del protocolo MQTT como CONNECT, PUBLISH y DISCONNECT.

Abonados

Los suscriptores son clientes que se conectan al corredor y se suscriben a diversos temas de interés. El corredor entrega mensajes de cualquier editor a los suscriptores de esos temas.

Por ejemplo, un suscriptor podría ser un sistema de aire acondicionado inteligente que se suscribe a “hogar/dormitorio/temperatura” para ajustar la refrigeración en consecuencia. O una aplicación de seguridad suscrita a alertas de movimiento de sensores.

Los suscriptores registran suscripciones con el corredor y reciben mensajes utilizando comandos de protocolo como CONECTAR, SUBSCRIBE y UNSUBSCRIBE. Las suscripciones pueden incluir patrones comodín para recibir mensajes de una variedad de temas.

Corredor

El corredor MQTT gestiona las conexiones de los editores y suscriptores y enruta mensajes entre ellos. Es responsable de:

  • Aceptar conexiones de red entrantes mediante TCP/IP o WebSockets
  • Autenticar clientes y autorizar el acceso
  • Recibir mensajes publicados y enviarlos a clientes suscritos.
  • Mantener información de sesión y suscripciones para clientes conectados.
  • Poner en cola los mensajes sin conexión hasta que los clientes se vuelvan a conectar
  • Comunicarse con otros corredores para formar una red federada

Por tanto, el corredor constituye el núcleo de cualquier sistema MQTT. Debe ser altamente escalable y confiable para manejar una gran cantidad de dispositivos y mensajes.

Los corredores de código abierto populares como Mosquitto, HiveMQ y EMQ pueden manejar miles de clientes con hardware básico. También existen corredores de nube totalmente administrados como AWS IoT Core y Google Cloud IoT Core.

Exploración de los mensajes del protocolo MQTT

MQTT se basa en un protocolo simple y liviano para facilitar la mensajería en tiempo real entre clientes. Exploremos la estructura de los mensajes del protocolo MQTT y los conceptos clave involucrados.

Temas MQTT

El tema es una parte crucial de cualquier mensaje MQTT. Los temas proporcionan una estructura jerárquica para clasificar y organizar mensajes.

Al publicar un mensaje, el cliente establece el tema para categorizar la información. El corredor utiliza temas para filtrar mensajes y entregarlos a los suscriptores.

Por ejemplo, un tema como “hogar/cocina/vela_llama_detector” identifica claramente la fuente y el propósito del mensaje. Los elementos del tema MQTT están separados por barras diagonales, con una profundidad de anidamiento arbitraria.

Los temas pueden utilizar comodines como # y + para suscripciones más amplias:

  • home/kitchen/# – Recibir todos los mensajes bajo cocina
  • +/candle_flame_detector – Recibir todos los mensajes del detector de llama

Carga útil de los mensajes

La carga útil contiene los datos reales que se transmiten en el mensaje MQTT. Puede ser cualquier contenido, desde unos pocos bytes hasta kilobytes de datos.

Para las lecturas del sensor, la carga útil contendría el valor medido y metadatos como unidades, precisión, etc. Los mensajes de control pueden tener directivas de acción o actualizaciones de parámetros en la carga útil.

Para optimizar el uso de ancho de banda bajo, las cargas útiles deben mantenerse lo más pequeñas y eficientes posible. MQTT funciona bien en redes de bajo rendimiento, ya que solo es necesario transmitir el tema y una pequeña carga útil.

Calidad del servicio

Como se analizó anteriormente, el nivel de calidad de servicio (QoS) es un parámetro importante en cada mensaje MQTT. Determina las garantías de entrega y los gastos generales de comunicación subyacentes.

Los tres niveles de QoS son:

QoS 0 – Fuego y olvido. Mensaje entregado como máximo una vez. Por defecto para muchas aplicaciones no críticas.

QoS 1: garantiza la entrega al menos una vez mediante acuses de recibo. Puede recibir mensajes duplicados.

QoS 2 – Entregado exactamente una vez gestionando las retransmisiones. Utiliza un apretón de manos de 4 pasos. Crítico para los mensajes de control.

El corredor almacena mensajes QoS 1 y 2 hasta que recibe confirmación de entrega exitosa a los clientes suscritos. Esto evita la pérdida de datos pero genera más gastos generales de procesamiento.

Beneficios de adoptar MQTT para aplicaciones de IoT

MQTT está diseñado para satisfacer las demandas específicas de la comunicación de máquina a máquina en sistemas de IoT. Examinemos algunas ventajas clave:

Ligero

MQTT utiliza un diseño de encabezado de paquete mínimo, con longitudes fijas de solo 2 bytes para paquetes de control. Esto permite una mayor eficiencia que los encabezados HTTP que utilizan cadenas ASCII.

Los paquetes de control como CONNECT y PUBLISH tienen una longitud máxima de carga útil de sólo 256 MB. Esto optimiza MQTT para redes de bajo ancho de banda y dispositivos integrados con procesamiento y memoria limitados.

Bajo consumo de ancho de banda

MQTT minimiza el uso del ancho de banda de la red reduciendo la cantidad de datos transmitidos. Esto le permite funcionar en redes restringidas y reduce los costos operativos, como el uso de datos móviles.

La sobrecarga del protocolo se reduce drásticamente al eliminar las transmisiones innecesarias. Por ejemplo, los paquetes PUBLISH omiten la dirección del suscriptor: el intermediario se encarga de la entrega. Los pings Keepalive monitorean el estado de la conexión sin transmitir datos pesados.

El uso del ancho de banda aumenta linealmente con el número de clientes, en lugar de exponencialmente. Esto permite soportar grandes densidades de dispositivos.

Entrega fiable de mensajes

Los niveles de calidad de servicio permiten una transmisión confiable incluso en redes poco confiables, como enlaces satelitales o fábricas ruidosas.

Para mensajes críticos, MQTT garantiza la entrega mediante apretones de manos y reconocimientos. Los mensajes almacenados se reenvían cuando los clientes se vuelven a conectar después de una caída de la red.

Estas características establecen a MQTT como una plataforma sólida para la automatización industrial, el monitoreo remoto de equipos y otras aplicaciones de misión crítica.

Escalabilidad

MQTT escala a cantidades gigantescas de clientes y mensajes mediante el uso de patrones de red eficientes.

La arquitectura de publicación-suscripción elimina la sobrecarga de la mensajería uno a uno entre clientes. Las suscripciones comodín y el filtrado basado en temas optimizan la distribución de datos.

Los corredores comerciales y de código abierto aprovechan técnicas como la agrupación en clústeres para manejar millones de clientes simultáneos en servidores básicos.

Flexibilidad

MQTT ofrece flexibilidad y personalización inigualables para diferentes entornos y casos de uso.

Los clientes pueden seleccionar entre múltiples niveles de Calidad de Servicio para ajustar las garantías de entrega. Las jerarquías de temas para mensajería se pueden diseñar para adaptarse a cualquier ontología. Las cargas útiles transmiten eficazmente cualquier formato de datos.

Esta versatilidad permite a MQTT conectar diversos dispositivos en una amplia gama de industrias, ¡desde atención médica hasta plataformas petrolíferas!

Seguridad

MQTT permite una comunicación segura mediante cifrado TLS/SSL para las conexiones TCP subyacentes.

El control de acceso se gestiona mediante nombres de usuario y contraseñas de los clientes. Las políticas de autorización determinan los accesos a temas y las operaciones permitidos para cada usuario. Los registros de auditoría registran los eventos de seguridad.

Los corredores MQTT pueden integrarse con proveedores de identidad externos mediante autenticación SASL. Los certificados de cliente cifrados permiten conectar dispositivos aprobados.

Norma abierta

MQTT es un estándar ISO abierto (ISO/IEC PRF 20922) con documentación publicada de forma abierta. Esto garantiza la interoperabilidad entre clientes y corredores de diferentes proveedores.

Existen implementaciones de corredores de código abierto como Mosquitto y HiveMQ. El código para las bibliotecas cliente MQTT está disponible gratuitamente para los principales idiomas y plataformas.

Un estándar abierto evita la dependencia de un proveedor y permite una adopción generalizada. La comunidad MQTT continúa impulsando la evolución del protocolo.

Alotcer MQTT en acción: Aplicaciones IoT

MQTT está ganando tremendo impulso en todas las industrias a medida que se expande el Internet de las cosas. Exploremos algunos de los principales dominios de IoT que aprovechan MQTT:

Domótica inteligente

En hogares inteligentes, MQTT conecta y controla la iluminación, el clima, el entretenimiento, la seguridad y otros sistemas:

  • Los termostatos inteligentes publican lecturas de temperatura y ajustan el sistema HVAC en consecuencia
  • Los sensores de movimiento envían alertas de intrusos en tiempo real
  • Los sistemas de iluminación se suscriben a horarios para controlar las bombillas.
  • Los asistentes de voz usan MQTT para notificaciones y comandos del sistema

Las plataformas de automatización del hogar como Home Assistant utilizan MQTT como columna vertebral para la integración de dispositivos. Proporciona una tubería unificada para una comunicación eficiente de la red doméstica.

IoT industrial

Puerta de enlace de IoT industrial AR7091

Para entornos industriales, MQTT ofrece datos clave entre sensores, controladores y sistemas de monitoreo:

  • Los sensores publican datos operativos en tiempo real, como temperaturas o niveles de tanques.
  • Se encienden las alarmas por mediciones fuera de límites
  • Los sistemas de control ajustan los parámetros del equipo en función de las métricas analizadas.
  • Los paneles visualizan agregados y análisis para los operadores

MQTT resiste los desafíos de las fábricas (alcance, interferencias, ruido) para permitir la Industria 4.0. Los datos confiables en tiempo real permiten la automatización y la inteligencia.

Wearables

En el ámbito del fitness y la salud, los dispositivos portátiles aprovechan MQTT para transmitir datos de actividad rastreados:

  • Los rastreadores de actividad física publican datos del acelerómetro, coordenadas GPS, lecturas de frecuencia cardíaca, etc.
  • Los datos se agregan en resúmenes de actividad para mostrarlos a los usuarios.
  • Se lanzan alertas por detección de arritmias o falta de actividad
  • Las reglas de diagnóstico definidas por los médicos responden a los umbrales de biomarcadores

MQTT permite la transmisión eficiente de alertas y datos biométricos. Esto facilita el desarrollo de aplicaciones de medicina digital personalizadas.

Estos son sólo algunos ejemplos. ¡MQTT también impulsa ciudades inteligentes, logística de la cadena de suministro, energía renovable y más!

El futuro de MQTT: adoptar nuevas tecnologías

MQTT ha demostrado su valía como protocolo de mensajería de IoT. Pero también resulta prometedor como facilitador de paradigmas tecnológicos de vanguardia:

MQTT para Edge Computing

La computación perimetral lleva el procesamiento a dispositivos locales en lugar de servidores centralizados en la nube. MQTT es óptimo para transmitir datos hacia y desde nodos perimetrales:

  • Las métricas en tiempo real se publican desde los equipos cercanos hasta las puertas de enlace perimetrales.
  • Las puertas de enlace filtran y analizan los datos localmente y envían resultados agregados a la nube.
  • Los sistemas en la nube pueden publicar actualizaciones de configuración en dispositivos de campo a través de MQTT

Al reducir los viajes a la red, MQTT libera el potencial de la inteligencia perimetral en tiempo real.

Integración con AI/ML

MQTT es una opción natural para respaldar las tecnologías emergentes de IA/ML en el espacio de IoT:

  • MQTT transmite datos de alta frecuencia desde dispositivos IoT para alimentar modelos de IA
  • MQTT entrega inferencias y directivas de los sistemas de IA al equipo operativo
  • Durante el entrenamiento del modelo, MQTT transmite de manera eficiente conjuntos de datos desde sensores distribuidos a la nube
  • Las alertas de anomalías se publican en función de las desviaciones en tiempo real detectadas por los agentes de IA.

MQTT ofrece canales de datos confiables y de alta velocidad necesarios para permitir la automatización impulsada por IA.

La naturaleza liviana pero poderosa de MQTT lo convierte en la columna vertebral de mensajería ideal para desbloquear nuevas posibilidades a medida que avanza la tecnología.

Preguntas frecuentes sobre MQTT

¿Para qué sirve MQTT?

MQTT está optimizado para entornos de IoT debido a su arquitectura liviana y confiabilidad. Conecta dispositivos de bajo consumo y con recursos limitados donde el ancho de banda es limitado. Los casos de uso típicos incluyen telemetría, notificaciones de eventos y control de equipos.

¿Cómo garantiza MQTT la entrega de mensajes?

MQTT proporciona diferentes niveles de Calidad de Servicio (QoS). QoS 1 garantiza la entrega al menos una vez mediante el uso de acuses de recibo. QoS 2 entrega mensajes exactamente una vez mediante un protocolo de enlace de 4 pasos entre el remitente y el receptor.

¿MQTT es adecuado para aplicaciones en tiempo real?

Sí, MQTT está diseñado para mensajería en tiempo real de baja latencia. Los mensajes se entregan inmediatamente en lugar de utilizar un sondeo programado. Esto permite respuestas rápidas para aplicaciones urgentes.

¿Qué medidas de seguridad emplea MQTT?

Los intermediarios MQTT aseguran las conexiones mediante TLS/SSL. El acceso se puede controlar mediante autenticación de nombre de usuario/contraseña y ACL. Los clientes también pueden cifrar los mensajes de un extremo a otro para mayor privacidad.

¿Cómo elegir el nivel adecuado de QoS en MQTT?

QoS 0 para datos no críticos como la telemetría. QoS 1 para alertas y actualizaciones importantes donde se aceptan duplicados. QoS 2 para comandos y acciones donde exactamente una entrega es vital. Equilibrio entre fiabilidad y gastos generales.

Conclusión

A medida que la revolución de Internet de las cosas continúa acelerándose, MQTT se ha establecido como el protocolo elegido para mensajería confiable en tiempo real entre dispositivos y sistemas. Su eficiente arquitectura de publicación y suscripción, diseñada para redes no confiables, lo convierte en la opción perfecta para conectar la gran cantidad de dispositivos integrados que se conectan.

MQTT agiliza los flujos de comunicación entre sensores, controladores, aplicaciones y la nube. Permite nuevas e interesantes posibilidades, como análisis en tiempo real y automatización impulsadas por IA. Con MQTT, las empresas pueden obtener beneficios como una mayor eficiencia operativa, costos reducidos y nuevas oportunidades de ingresos.

En esta guía, profundizamos en cómo funciona realmente MQTT: sus componentes como el corredor y los suscriptores, el formato de mensaje del protocolo, los diferentes niveles de calidad de servicio y los beneficios generales que aporta. Vimos MQTT en acción en diversos sectores verticales, como hogares inteligentes, automatización industrial y dispositivos portátiles. Y analizamos cómo puede respaldar paradigmas emergentes como la informática de punta y la inteligencia artificial.

MQTT continúa evolucionando, con una comunidad activa que impulsa nuevas funciones e integraciones. Permite a los ingenieros centrarse en la lógica de su aplicación principal en lugar de en los desafíos de la conectividad y la mensajería de los dispositivos. A medida que sus proyectos de IoT despegan, MQTT ofrece la capa de comunicación resistente, escalable y extensible para poner en marcha sus innovaciones.

¡Empiece a experimentar con este protocolo de mensajería liviano que está impulsando el futuro de las cosas conectadas!

RECIBA DESCUENTOS TODOS LOS DÍAS EN SU CORREO ELECTRÓNICO

SÍGUENOS EN NUESTRAS REDES SOCIALES