MQTT

Message Queuing Telemetry Transport — protocolo ligero de mensajes entre dispositivos

Por Yapci Bello ·

Protocolo de comunicación pensado para aparatos pequeños y redes lentas. En domótica es el idioma común con el que sensores, enchufes y bombillas envían sus datos a un servidor central sin pasar por la nube del fabricante.

Qué es y por qué existe

MQTT son las siglas de Message Queuing Telemetry Transport. Es un estándar de OASIS, el organismo que mantiene su especificación, y nació para un problema muy concreto: enviar mensajes pequeños entre aparatos con poca memoria, poca batería y una conexión mala.

Ese origen explica todo lo demás. MQTT no está pensado para mover ficheros ni vídeo. Está pensado para que un sensor diga «21,4 grados» gastando lo mínimo posible y se vuelva a dormir. Por eso se ha convertido en el idioma común de buena parte del mundo IoT y en el pegamento de casi cualquier instalación de domótica seria.

Publicar y suscribirse: el tablón de anuncios

La diferencia clave con una web normal está aquí. Cuando tu navegador pide una página, habla directamente con el servidor: uno pregunta, otro responde. MQTT no funciona así. Funciona por publicación y suscripción, con un intermediario en medio llamado broker.

  • Un aparato publica un mensaje en un tema (un texto con forma de ruta, por ejemplo casa/salon/temperatura).
  • Cualquier otro que se haya suscrito a ese tema recibe el mensaje.
  • El que publica no sabe ni le importa quién lo está escuchando. Puede ser nadie, puede ser cinco.

El broker más extendido es Mosquitto, que es software libre y cabe de sobra en un equipo modesto. Es la pieza central: si el broker cae, los aparatos siguen encendidos pero dejan de enterarse unos de otros.

Ese desacoplamiento es lo que hace MQTT tan cómodo. Puedo añadir un panel nuevo que lea la temperatura del salón sin tocar el sensor. Puedo cambiar el sensor por otro de otra marca y, si publica en el mismo tema, no se entera nadie.

Las dos piezas que la gente pasa por alto

Hay dos detalles del protocolo que marcan la diferencia entre una instalación que funciona y otra que da la lata.

La calidad de servicio (QoS). MQTT permite elegir cuánta garantía quieres en la entrega de cada mensaje: como mucho una vez, al menos una vez, o exactamente una vez. Suena a detalle menor y no lo es. Para la temperatura de una habitación da igual perder una lectura, porque llegará otra en un minuto. Para «se ha abierto la puerta» o «corta el suministro», no da igual en absoluto.

El mensaje de últimas voluntades. El broker puede guardar un mensaje que publicará automáticamente si un aparato desaparece sin despedirse. Es la forma limpia de saber que algo se ha quedado colgado en vez de descubrirlo tres días después. Junto con los mensajes retenidos —el último valor publicado en un tema, que se entrega a quien se suscriba después—, es lo que hace que el sistema se recupere solo tras un reinicio.

Cómo lo tengo montado

En mi casa el broker corre en el mismo equipo que Home Assistant, dentro de mi red, y no está expuesto a internet. Esa es la primera decisión y la más importante.

Lo que publica ahí dentro es de todo: enchufes medidores mandando consumo, sensores de puerta, temperatura y humedad de varias habitaciones, y la pasarela que traduce a MQTT lo que llega por Zigbee. Ese último punto es el que más me ha simplificado la vida: en vez de que cada tecnología hable su propio idioma con el sistema central, todo acaba convertido en mensajes MQTT y el resto de la instalación no necesita saber si el sensor es de una radio o de otra.

Lo que aprendí a base de fallos:

  1. Los nombres de los temas hay que pensarlos antes. Empecé improvisando y acabé con temas incoherentes que no había forma de filtrar por comodines. Rehacerlo con sesenta aparatos publicando ya es una tarde perdida.
  2. Sin usuario y contraseña, cualquiera que entre en tu red manda en tu casa. Un broker abierto acepta órdenes de quien sea. Cuesta cinco minutos ponerle credenciales y hay que hacerlo el primer día.
  3. Un aparato con firmware defectuoso puede inundar el broker. Me pasó: un dispositivo publicando decenas de mensajes por segundo llenó la base de datos de histórico hasta que la lentitud del panel me hizo mirar. Se detecta en un minuto si sabes dónde mirar, y en tres días si no.

Por qué le importa a quien vive en la casa

Porque MQTT es la vía práctica para que la información de tu casa no salga de tu casa. Un montaje sobre broker propio funciona en local: si se cae la fibra, tus sensores siguen hablando, tus automatizaciones siguen disparándose y las luces siguen respondiendo. Con dispositivos atados a la nube del fabricante, esa misma caída deja la casa muda.

Hay una segunda razón, menos evidente: la independencia del fabricante. Un aparato que habla MQTT es un aparato que puedes seguir usando aunque la empresa desaparezca, la aplicación se abandone o el modelo se descatalogue. Es la diferencia entre comprar un dispositivo y alquilar un servicio.

Para un negocio pequeño —un local con cámaras de frío, un taller, una oficina— la lectura es la misma más una: el registro de mensajes es una traza de lo que pasó y a qué hora, útil cuando algo falla y hay que justificar qué ocurrió.

Errores frecuentes

Dejar el broker sin autenticación. Es el fallo más repetido y el más grave. Cualquier dispositivo de la red, incluido uno comprometido, podría publicar órdenes en tus temas. Usuario, contraseña y, si sales de la red, cifrado.

Abrir el puerto del broker en el router. Para acceder desde fuera hay opciones mucho mejores que exponer el broker a internet. Un broker público sin protección se encuentra escaneando en minutos.

Ignorar la calidad de servicio. Usar el nivel más bajo para todo es cómodo hasta que se pierde el mensaje que importaba. Piensa qué mensajes puedes permitirte perder y cuáles no.

Guardar en el histórico absolutamente todo. Un sensor que publica cada pocos segundos multiplicado por muchos aparatos hincha la base de datos sin aportar nada. Merece la pena decidir qué se guarda a largo plazo y qué solo interesa en el momento.

Creer que MQTT sustituye a Zigbee o a Z-Wave. No compiten: MQTT es el idioma que se habla por encima, y esas son las radios por las que viaja la señal hasta la pasarela. Se usan juntos, no en lugar del otro.

Dónde trato MQTT a fondo

Ver los 7 artículos de Domótica e IoT →

¿Quieres que lo implementemos por ti?

Yo diseño la estrategia; la ejecuta mi equipo en SMedialab, la agencia que cofundé en Tenerife.

Ir a SMedialab →

Buscador del sitio

Escribe al menos dos letras para buscar.