Buscar
×

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

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:

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


Deja un comentario