Actualizado: 5 junio 2022
MQTTtransporte telemétrico de cola mensejaría es un protocolo ligero M2Mmáquina a máquina que se utiliza para la comunicación por internet (o una intranet) entre dispositivos (típicamente los que incorporan sensores) y otros sistemas o dispositivos, también conocido como IoTInternet of "Things" - o sea el internet de "las cosas". Unos ejemplos son: la domótica, la seguridad de vivienda, dispositivos vestibles para la gente mayor, sensores agriculturales y meteorológicos.
MQTT no es el único protocolo M2M pero en estos momentos es el más popular y parece que está cobrando más fuelle comparado a las alternativas.
Este artículo te enseñará como montar el proyecto IoT más básico usando MQTT para que puedas entender los conceptos esenciales.
MQTT permite la comunicación entre dispositivos desacopladosdesacoplado se refiere al hecho que un componente de un sistema desconozca pero pueda comunicar con otros componentes dentro del mismo sistema. a través de una estrategia especial conocida como publicar/suscribir. En un sistema publicar/suscribir los dispositivos emisores no envian sus mensajes directamente a los receptores; sino publican los mensajes a un broker Un "broker" (o agente intermediaro) es básicamente un servidor en la nube que recibe mensajes y los hace disponibles para dispositivos clientes suscritos. que los "reenvia" a los clientes que están suscritos.
Los publicadores deben enviar sus mensajes y los suscriptoes deben recoger dichos mensajes del mismo "sitio" en el servidor. Este "sitio" es un especie de canal conocido como un topic.
Cada vez que un cliente publica un mensaje a un topic cada cliente que esté suscrito a ese topic recibirá el mensaje.
El mensaje, por cierto, no tiene que ser necesariamente texto; podría ser una imagen, una hoja de cálculo, un PDF o un MP4, por ejemplo - cualquier formato binario hasta 260MB.
Para montar nuestro primer proyecto IoT tipo MQTT solo hace falta crear una instancia de un broker y instalar un par de clientes en nuestro PC local: uno para publicar un mensaje y otro para recibirlo.
Usaremos hiveMQ. Otros agentes existen, que obviamente puedes usar, (destacan Eclipse Mosquitto o CloudMQTT), pero no son tan senzillos como hiveMQ o no son gratis.
El cliente MQTT CLI me gusta más. El Eclipse cliente Mosquitto también es bueno pero ha dado problemas en la lectura de ficheros y al enviar datos binarios. ¡NO descargues la versión de MQTT CLI que hay en la página Get Started de hiveMQ! Píllalo de hivemq.github.io.
Esta página también incluye instrucciones de instalación para Linux, Mac y Windows.
La instalacióń para Linux (Ubuntu/Debian) es sencilla. The Linux (Ubuntu/Debian) steps are simple. Solo hace falta ejecutar los 2 comandos a continuación en una ventana de terminal (introduce la contraseña del usuario root cuando te la pida):
wget https://github.com/hivemq/mqtt-cli/releases/download/v4.8.1/mqtt-cli-4.8.1.deb sudo apt install ./mqtt-cli-4.8.1.deb
Una vez que hayas instalado el cliente, ejecuta el siguiente comando en el terminal:
mqtt test -h broker.hivemq.com
Deberías ver alguna información como la siguiente. Esto muestra el estado y algunas configuraciones para MQTT versiones 3 y 5:
MQTT 3: OK - Maximum topic length: 65535 bytes - QoS 0: Received 10/10 publishes in 53.97ms - QoS 1: Received 10/10 publishes in 486.06ms - QoS 2: Received 10/10 publishes in 956.58ms - Retain: OK - Wildcard subscriptions: OK - Shared subscriptions: OK - Payload size: >= 100000 bytes - Maximum client id length: 65535 bytes - Unsupported Ascii Chars: ALL SUPPORTED MQTT 5: OK - Connect restrictions: > Retain: OK > Wildcard subscriptions: OK > Shared subscriptions: OK > Subscription identifiers: OK > Maximum QoS: 2 > Receive maximum: 10 > Maximum packet size: 268435460 bytes > Topic alias maximum: 5 > Session expiry interval: Client-based > Server keep alive: Client-based
Ahora vamos a suscribir y publicar un mensaje sencillo usando el cliente MQTT y el broker que acabamos de crear.
mqtt sub -h {URL} -p 8883 -s -u {tu usuario} -pw {tu contraseña} -t '{mi/prueba/topic}'
mqtt pub -h {URL} -p 8883 -s -u {tu usuario} -pw {tu contraseña} -t '{mi/prueba/topic}' -m "¡Hola mundo!"
Deberías ver la siguiente mensaje en la primera ventana:
¡Hola mundo!
Si funciona, es hora de enviar datos por MQTT a otro dispositivo físico. El siguiente artículo te enseña cómo enviar texto e imagenes a tu teléfono móvil.