En el mundo actual, donde los dispositivos conectados se han vuelto ubicuos, el término Internet de las Cosas (IoT, por sus siglas en inglés) se ha convertido en la descripción por defecto para "dispositivo que está conectado a internet". Aunque este acrónimo, glorificado y en camel case, es hermoso por derecho propio, hay mucho más en los "dispositivos conectados a internet" de lo que la gente se da cuenta. En este artículo, me gustaría profundizar en uno de los protocolos más prevalentes utilizados en dispositivos IoT: el protocolo de Transporte de Telemetría MQ (MQTT). Cubriremos brevemente qué es, cómo funciona y qué tiene de novedoso en comparación con otras tecnologías utilizadas. También repasaremos un ejemplo comprensivo utilizando un dispositivo Arduino.
En una configuración típica de cliente-servidor tenemos un proveedor (es decir, los propios dispositivos) que publica datos de sensores en el servidor y un consumidor que solicita ver esos datos de sensores desde el servidor. MQTT no es diferente. Es un protocolo ligero utilizado para comunicarse entre dispositivos. Los dispositivos típicamente "publican" (es decir, envían) datos a un "broker" (o servidor) MQTT, que luego se guarda para ser servido a otros dispositivos o aplicaciones web. Otro dispositivo o aplicación web "se suscribe" a ese conjunto de datos (es decir, solicita los datos) desde el broker MQTT y luego el broker MQTT entrega esos datos a ellos. Piensa en esto realmente como un servidor web glorificado con dos excepciones principales:
Por las dos razones mencionadas anteriormente, MQTT se ha convertido en un protocolo muy popular con dispositivos IoT. Históricamente, las personas utilizarían solicitudes HTTP POST/GET para lograr esta forma de comunicación dispositivo-servidor, pero esto inhibía su capacidad para usar otros dispositivos de comunicación como Bluetooth o ZigBee. Dado que MQTT es agnóstico en ese aspecto, ahora podemos tener capacidades de paso de mensajes dentro de una red basada en malla usando MQTT sin nunca conectarnos a internet
Hay muchas maneras de comenzar con MQTT, incluyendo diseñar una solución completa de principio a fin. Para simplificar las cosas, utilizaremos un servicio gratuito de broker MQTT proporcionado por Adafruit en este ejemplo. Esto nos permitirá centrarnos solo en el lado del cliente del proceso de desarrollo. Para comenzar, necesitarás lo siguiente:
Hay algunas cosas que necesitamos hacer primero para configurar nuestro entorno. Primero, configuraremos nuestro hardware. Voy a usar un Arduino Uno y un Arduino Ethernet Shield conectados a mi red local.
Necesitaremos apilar el Ethernet Shield sobre el Arduino y conectarlo a la red de esta manera:
Una vez que tengamos nuestro hardware configurado, abramos el Arduino IDE e instalemos las bibliotecas necesarias. Abre el Arduino IDE y navega a Herramientas > Administrar bibliotecas…
Busca la Biblioteca MQTT de Adafruit y haz clic en instalar:
Se te pedirá que instales las dependencias de la biblioteca también. Adelante y haz clic en “Instalar todo”.
Una vez que hayas instalado las bibliotecas de soporte, puedes abrir un ejemplo navegando a Archivo > Ejemplos > Adafruit MQTT Library > mqtt_ethernet.
En este punto, necesitamos hacer una pausa y obtener nuestras credenciales de nuestra cuenta de Adafruit IO. Inicia sesión en Adafruit IO y haz clic en "Mi clave" en la parte superior:
Ahora regresa a tu ejemplo de sketch de Arduino mqtt_ethernet y rellena los campos AIO_USERNAME y AIO_KEY con los campos "Nombre de usuario" y "Clave activa" ubicados en tu cuenta de Adafruit IO. Asegúrate de que tu dispositivo esté conectado y luego haz clic en Subir:
Para ver el estado del dispositivo (y asegurarte de que esté conectado al broker MQTT) navega a Herramientas > Monitor Serie. Deberías ver una salida que se ve así:
En este punto, hemos confirmado que los datos se están enviando con éxito al broker MQTT. Para echar un vistazo a los datos reales en el servidor, volvamos a nuestra cuenta de Adafruit IO y hagamos clic en "Feeds" luego clic en "fotocélula"
Ahora obtenemos una captura en vivo de los datos que nuestro Arduino está enviando al broker MQTT. También podemos descargar datos históricos.
¡Felicidades! Ahora has configurado un dispositivo habilitado para MQTT y has publicado tus datos en un broker MQTT. Ahora da el siguiente paso construyendo tus propios sensores personalizados y publicando los datos en tu broker MQTT.
En este artículo aprendimos qué es MQTT, por qué se utiliza y cómo implementarlo en un microcontrolador. También demostramos cómo comenzar con un servicio de broker MQTT gratuito y ver los datos en su servidor. Ahora deberías sentirte cómodo para iniciar tu propio sketch de Arduino basado en el ejemplo que usamos para publicar tus propios datos de sensores en el broker MQTT y verlos en la nube.