IoT MQTT Hola Mundo

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.

Materiales

  • Acceso a un brokerun agente - típicamente online MQTT
  • Un cliente MQTT instalado en tu PC

Cómo funciona MQTT

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.

IoT con protocolo MQTT
IoT con protocolo MQTT

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.

Pasos

Crear una cuenta con un agente gratis público

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.

Crear una cuenta en hivemq

  1. Conecta a https://www.hivemq.com/ > Get started Now > Sign Up y introducir un nombre de usuario y una contraseña (fíjate que el enlace Sign Up también sirve como log-in más adelante por alguna razón). Ten en cuenta que también puedes instalar un broker en tu propio PC local.
  2. Haz click en Create new cluster y elige el paquete gratis ("free").
    Crear un broker MQTT en HiveMQ
    Crear un broker MQTT en HiveMQ
  3. Apunta el URL exacto de tu broker (lo vas a necesitar).
    El URL de tu broker MQTT
    El URL de tu broker MQTT
  4. Haz click en la lengüeta User Management e introduce unn nombre de usuario (1) y una contraseña (2, 3) para dar de alta el acceso del cliente; luego darle al botón ADD.
    URL de tu broker MQTT
    URL de tu broker MQTT

Instalar un cliente MQTT en tu PC

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

Comprobar conectividad con el agente MQTT

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

Comprobar la funcionalidad publicar/suscribir

Ahora vamos a suscribir y publicar un mensaje sencillo usando el cliente MQTT y el broker que acabamos de crear.

  1. Suscribe a un topic nuevo con el siguiente comando. Ten en cuenta que necesitas sustituir {URL} por el URL exacto que creaste en hiveMQ (puedes copiarlo desde la página My Clusters); sustituir {tu usuario} y {tu contraseña} por el nombre de usuario y contraseña que creaste en la página Access Management. {mi/prueba/topic} es el nombre del topic. Puede ser lo que quieras pero es importante que los suscritores y publicadores apunten al mismo nombre exacto para poder comunicar entre ellos.
    mqtt sub -h {URL} -p 8883 -s -u {tu usuario} -pw {tu contraseña} -t '{mi/prueba/topic}'
  2. Ahora vamos a publicar un mensaje. Abre una segunda ventana de terminal y escribe:
    mqtt pub -h {URL} -p 8883 -s -u {tu usuario} -pw {tu contraseña} -t '{mi/prueba/topic}' -m "¡Hola mundo!"

Miramos los resultados

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.

© 2022