13 - Protocolos de mensaxería en IoT - MQTT (broker EMQX)

Volver ao curso

Servidor.

Imagina MQTT como un protocolo de mensajería similar a Whatsapp. No pienses en los chats, sino en los grupos de Whatsapp (jaulas de grillos!). MQTT se basa en publicación/suscripción. Un cliente publica un mensaje en un determinado canal (llamado “topic”) del servidor (llamado “broker”), y este lo reenvía a todos los clientes subscritos al “topic”.

Los nodos de la izquierda son dispositivos IoT muy limitados. Envían datos (publish) al broker, y éste los reenvía a los nodos conectados. Sólo el de arriba a la derecha parece estar subscrito al topic del termómetro.
Los nodos de la izquierda son dispositivos IoT muy limitados. Envían datos (publish) al broker, y éste los reenvía a los nodos conectados. Sólo el de arriba a la derecha parece estar subscrito al topic del termómetro.

Hay muchos brokers, casi todos gratuitos.

Clientes

Lo verdaderamente genial de este protocolo es que funciona en casi cualquier dispositivo. Como tiene muchos años (creado en 1999) y está muy extendido (aunque quizá sea tu primera vez trabajando con él)… Es <casi> independiente de la capa física. Se puede usar en ethernet/Wi-Fi, pero también en LoRa, NB-IoT, Thread, Zigbee… muchos dispositivos limitados contienen instrucciones para publicar en MQTT.

Capa de transporte (L4). Puertos que usa el protocolo MQTT:

Pruebas en broker público

Instala cliente MQTT (para escritorio): MQTTX

Configura test.mosquitto.org

Sin usuario nin contrasinal. Tan só tes que aleatorizar o ClientID.

Un mesmo username pode ser utilizado en varios clientes xa que estes teñen distintos ClientID

Subscríbete a un topic:

aula206/#

O símbollo # (almohadilla) é un comodín para recibir TODOS os topics que colguen de aula206 usando unha soa subscrición.

Exemplo: as mensaxes do topic:

aula206/equiposdeaudio/

entrarían na suscrición aula206/#

PRÁCTICA - Instalación de aplicación de servidor

Diríxete á web de xestión: http://10.207.0.XXX:18083. Credenciais: admin / public. Crea unha conta para un cliente (username/password) e próbao co cliente de escritorio MQTTX.

O paso natural é facer as primeiras probas en MQTTX emulando o comportamento dun canal de Whatsapp (gaiola de grilos!). Despois se pasaría a utilizar dispositivos IoT tales como routers (hai cliente MQTT para MikroTik) e microcontroladores ESP32/Arduino (librería PubSubClient).

Diferencias entre MQTT y CoAP (NO ENTRA)

CoAP es mejor para dispositivos tienen recursos limitados (bajo consumo de energía, poca memoria). El modelo es de solicitud/respuesta similar a HTTP en lugar de publish/subscribe.

Ambos son protocolos de comunicación diseñados para IoT, pero tienen diferencias clave:

Característica MQTT CoAP
Modelo de comunicación Basado en publicación/suscripción (broker intermediario). Basado en solicitud/respuesta (similar a HTTP).
Transporte Usa TCP (orientado a conexión, fiable). Usa UDP (sin conexión, más ligero pero menos fiable).
Cifrado Usa TLS/SSL para seguridad (puerto 8883). Usa DTLS (Datagram Transport Layer Security) para seguridad.
Overhead Mayor overhead debido a TCP y cabeceras MQTT. Menor overhead, ideal para dispositivos con recursos limitados.
Uso típico Ideal para escenarios donde se necesita comunicación bidireccional y en tiempo real (ej: sensores, domótica). Ideal para dispositivos con recursos limitados y escenarios RESTful (ej: iluminación, sensores simples).
Mensajería Soporta mensajería asíncrona y retención de mensajes. No soporta mensajería asíncrona de forma nativa, pero puede simularse.
Descubrimiento No tiene mecanismo de descubrimiento integrado. Soporta descubrimiento de recursos usando CoAP Discovery.

Volver ao curso