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”.
Hay muchos brokers, casi todos gratuitos.
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:
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/#
ssh root@10.207.0.XXX
contraseña rootroot
apt install -y curl
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash
apt install -y emqx
sudo systemctl start emqx # inicia servizo
sudo systemctl status emqx --no-pager # comproba estado de servizo. Aquí se ven os portos que ten abertos
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).
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. |