MQTT en español: Guía completa para principiantes
Este artículo fue publicado por el autor Editores el 09/02/2025 y actualizado el 09/02/2025. Esta en la categoria Artículos.
MQTT (Message Queuing Telemetry Transport) es un protocolo de comunicación ligero y eficiente, diseñado específicamente para conexiones de baja ancho de banda y dispositivos con recursos limitados. Este protocolo se utiliza en entornos del Internet de las Cosas (IoT) y en aplicaciones de máquina a máquina (M2M). Es perfecto para aquellos proyectos que necesitan comunicación en tiempo real y a larga distancia.
La historia de MQTT
MQTT fue creado a principios de los años 2000 por Andy Stanford-Clark (IBM) y Arlen Nagy (Eurotech). Su objetivo era desarrollar un protocolo que pudiera transmitir datos en entornos con restricciones de energía y ancho de banda. A diferencia de otros protocolos, MQTT posee una gran capacidad de adaptación y funciona en redes con baja disponibilidad de conexión.
Características de MQTT
- Ligero: El tamaño de los paquetes MQTT varía entre 2 y 5 bytes. Este protocolo tiene un bajo overhead, permitiendo que se use en entornos con conexiones de baja disponibilidad.
- Simple: MQTT requiere poco código y permite implementar proyectos rápidamente. Además, su especificación es corta y fácil de entender.
- Pub/Sub: MQTT utiliza un modelo de publicación y suscripción (Pub/Sub), lo que facilita la comunicación entre nodos.
- Bi-direccional: MQTT es un protocolo bi-direccional, permitiendo que los dispositivos envíen y reciban datos de forma simultánea.
- QoS: MQTT incluye calidad de servicio (QoS), permitiendo que los dispositivos especifiquen la prioridad de los mensajes.
Instalación de MQTT
Para instalar MQTT necesitamos un broker, un componente en el que se alojan los topicos (tema) de publicación/suscripción. Uno de los brokers más populares es Mosquitto, disponible para sistemas Linux, macOS y Windows.
La instalación de Mosquitto varía en función del sistema operativo. En sistemas Linux podemos instalarlo utilizando el gestor de paquetes (apt, yum, pacman, etc.). En sistemas macOS podemos instalarlo utilizando Homebrew y en sistemas Windows con Chocolatey. Otra opción es descargar el binario directamente desde la página web del proyecto.
El otro componente necesario para trabajar con MQTT es una librería cliente. Existen librerías MQTT para distintos lenguajes de programación (Python, JavaScript, C, etc.). Una de las más utilizadas es Paho-MQTT, disponible para sistemas Linux, macOS, Windows y Android.
Publicación y Suscripción
MQTT es un protocolo que funciona en un modelo de publicación/suscripción (Pub/Sub), donde los nodos pueden ser publishers (publicadores) o subscribers (suscriptores). Un nodo puede actuar como publicador, suscriptor o ambos.
La publicación y suscripción de datos se realiza a través de topicos (tema), un identificador de los contenidos a publicar o suscribir. Los topicos se crean de forma jerárquica, con un formato similar a un directorio de archivos.
Por ejemplo, para publicar la temperatura de una habitación, podríamos usar un topico como: casa/habitacion1/temperatura
. En el caso de suscribirnos a los contenidos de una ciudad, podríamos usar un topico como: ciudad/madrid
.
Los nodos (dispositivos) se conectan al broker MQTT y envían los paquetes de publicación y suscripción. El broker procesa los paquetes y los distribuye hacia los nodos adecuados.
Calidad de Servicio (QoS)
Una de las características más interesantes de MQTT es la Calidad de Servicio (QoS), que permite a los nodos especificar la prioridad de los mensajes. MQTT define tres niveles de QoS:
- QoS 0: Al igual que en UDP, los paquetes se envían una vez y sin confirmación. Si el paquete se pierde, no se envía de nuevo.
- QoS 1: Los paquetes se envían tantas veces como sea necesario hasta obtener una confirmación. Si un paquete se pierde, se reenvía automáticamente.
- QoS 2: Los paquetes se envían utilizando un protocolo de sesión, garantizando la recepción del paquete por el receptor.
Los nodos utilizan los niveles de QoS en función de la criticidad de la información a transmitir. Por ejemplo, un nodo que envíe la posición de un dron podría utilizar QoS 2, mientras que un nodo que publique el color de una bombilla podría utilizar QoS 0.
Practicando con MQTT
Para practicar con MQTT necesitamos un broker y una librería cliente. Una opción es utilizar el broker de Mosquitto y la librería Paho-MQTT. Vamos a ver un ejemplo de publicación y suscripción:
Publicación
En el código de publicación utilizamos la librería Paho-MQTT para conectarnos al broker y publicar los datos en el topic. En este ejemplo publicamos la temperatura de una habitación cada 5 segundos.
python import paho.mqtt.client as mqtt import time
def on_connect(client, userdata, flags, rc): print("Conectado al broker con resultado: "+str(rc)) client.subscribe("temperatura/#", 0)
def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload))
client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message
client.connect("localhost", 1883, 60)
while True: client.publish("temperatura/habitacion1", "22", 0) time.sleep(5)
Suscripción
En el código de suscripción utilizamos la librería Paho-MQTT para conectarnos al broker y suscribirnos a los contenidos de un topic. En este ejemplo mostramos los valores de los topicos temperatura/habitacion1
, temperatura/habitacion2
y temperatura/habitacion3
.
python import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc): print("Conectado al broker con resultado: "+str(rc)) client.subscribe("temperatura/#", 0)
def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload))
client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message
client.connect("localhost", 1883, 60)
client.loop_forever()
Preguntas frecuentes
¿Qué es MQTT?
MQTT es un protocolo de comunicación ligero y eficiente, diseñado específicamente para conexiones de baja ancho de banda y dispositivos con recursos limitados.
¿Cuál es la historia de MQTT?
MQTT fue creado a principios de los años 2000 por Andy Stanford-Clark (IBM) y Arlen Nagy (Eurotech).
¿Cuáles son las características de MQTT?
MQTT es ligero, simple, bi-direccional, Pub/Sub y posee QoS (calidad de servicio).
¿Cómo se instala MQTT?
MQTT se instala utilizando un broker (Mosquitto) y una librería cliente (Paho-MQTT).
Referencias
- MQTT.org: La página web oficial de MQTT.
- Mosquitto: El broker de MQTT más popular.
- Paho-MQTT: La librería cliente de MQTT más utilizada.
- Especificación MQTT v3.1.1: La especificación oficial del protocolo MQTT v3.1.1.
- Especificación MQTT v5.0: La especificación oficial del protocolo MQTT v5.0.
Deja un comentario