Índice
TogglePrimera introducción a MQTT
El Internet de las cosas, como su nombre indica, es la red en la que los objetos están conectados. Permite conectar objetos a través de Internet, y estos objetos pueden interactuar entre sí. MQTT es un protocolo basado en TCP/IP para la comunicación de datos entre estos objetos.


Cada terminal está conectado a un proxy o servidor que implementa el protocolo MQTT.
Enviar datos a través de un tema en un servidor proxy MQTT publicado.
Obtén los datos del tema al que estás suscrito desde el servidor proxy MQTT a través de la suscripción.
El servidor proxy en sí mismo no genera datos; todos los datos los genera el terminal conectado al servidor proxy.
El terminal envía datos al servidor. El terminal que está suscrito al tema en el servidor acepta los datos enviados desde otro terminal al servidor y se los reenvía a sí mismo a través del servidor.
¿Por qué elegir el protocolo MQTT?
El protocolo MQTT es un protocolo de red ligero y flexible. Además, resulta muy adecuado para aplicaciones de Internet de las cosas (IoT).
En primer lugar, la definición del protocolo IoT es muy breve y no tan compleja como la de HTTP y HTTPS.
Por lo general, el entorno de transmisión de red y la potencia de cálculo de los dispositivos compatibles con el IoT son relativamente limitados, por lo que resultan adecuados para MQTT, un protocolo ligero que no plantea grandes exigencias en cuanto a red y datos.
Entonces, ¿por qué MQTT es tan ligero y flexible? Una característica clave del protocolo MQTT es el modelo de publicación/suscripción. Este modelo separa al emisor del receptor de los datos.
Un terminal puede actuar como emisor o como receptor de datos.
Si un dispositivo desea publicar datos, solo tiene que enviar el contenido de dichos datos al tema correspondiente en el servidor proxy.
Si un dispositivo necesita recibir datos, solo tiene que suscribirse previamente en el servidor proxy a los temas a los que debe prestar atención.
¿Por qué no elegir otro protocolo de red?
La mayoría de los desarrolladores ya están familiarizados con el protocolo HTTP WEB. Entonces, ¿por qué no hacer que la configuración del IoT se conecte al servicio web?
El dispositivo puede enviar datos en forma de solicitudes HTTP y obtener datos del servidor en forma de respuestas HTTP para aceptar actualizaciones.
Porque, en el caso de los dispositivos del Internet de las cosas (IoT), este modelo de transmisión de datos —solicitud activa → espera pasiva de la respuesta— presenta graves limitaciones:
HTTP es un protocolo síncrono. El cliente tiene que esperar a la respuesta del servidor. Los navegadores web tienen este requisito, pero ello va en detrimento de la escalabilidad. En el mundo del IoT, el gran número de dispositivos y las redes potencialmente poco fiables o con alta latencia hacen que la comunicación síncrona sea un problema. Los protocolos de mensajería asíncrona son más adecuados para las aplicaciones de IoT. El sensor simplemente envía los datos y deja que la red determine la mejor ruta y el mejor momento para entregarlos al dispositivo de destino y al servidor.
El protocolo HTTP es unidireccional. El cliente debe iniciar activamente la solicitud. En las aplicaciones de IoT, el dispositivo o sensor suele actuar como cliente, lo que significa que no puede recibir datos del servidor a menos que el usuario o la aplicación lo soliciten activamente.
HTTP es un protocolo uno a uno. El cliente realiza una solicitud y el servidor responde. Existe una correspondencia uno a uno entre ambos. Sin embargo, es necesario pasar de la relación uno a uno de HTTP a la relación uno a muchos, muy habitual en el IoT. Su implementación resulta complicada y el coste también es elevado. Y la relación «uno a muchos» es muy habitual en el IoT.
En comparación con MQTT, HTTP es un protocolo relativamente pesado. No resulta adecuado para la red limitada y la escasa potencia de cálculo de los dispositivos terminales del IoT.