Primeros pasos con MQTT

Objetivo: Realizar unos primeros test de uso del protocolo MQTT (Message Queue Telemetry Transport) con Openwrt para envío de datos entre routers/arduinos/PCs/dispositivos e Internet.

Definición: MQTT (Message Queue Telemetry Transport) es un protocolo utilizado para la comunicación machine-to-machine (M2M) en lo que es llamado como el “Internet de las Cosas“.

Imaginemos que hemos montado una serie de sensores conectados a nuestros dispositivos con OpenWrt. Gracias a este protocolo podremos enviar y consultar estos datos a y desde Internet de una manera rápida y con muy poco consumo de ancho de banda por parte del dispositivo. Además existen muchas herramientas y clientes en diferentes lenguajes de programación y plataformas para consulta de los datos. Además de sensores con imaginación podemos darle otros usos.

Las ventajas de usar el protocolo MQTT son:

  • Es asíncrono con diferentes niveles múltiples de calidad del servicio, lo que resulta ser importante en los casos donde las conexiones de Internet son poco confiables.
  • Envía mensajes cortos y estrechos que se vuelven adecuados para las situaciones de un bajo ancho de banda.
  • No se requiere de mucho software para implementar a un cliente, lo cual lo vuelve fantástico para los dispositivos como Arduino con una memoria limitada.
  • Podemos cifrar los datos enviados y usar usuario y password para proteger nuestros envíos.
sensor
Salida sensor de movimiento conectada a pulsador de ratón. Al pasar por delante envía un mensaje.

Vamos a utilizar la la aplicación MosQuiTTo que implementa el protocolo MQTT pudiéndose usar como servidor, como cliente para recibir mensajes y para enviarlos. En nuestro caso sólo lo utilizaremos como cliente:

Lo haremos en una red de área local conectada a Internet e utilizaremos un servidor público (también llamado broker) localizado en iot.eclipse.org.

 

mqtt1
Esquema del ejemplo que usaremos.

Como vemos en el esquema utilizaremos tres routers. El router A realizará los envíos y comprobaremos como los routers B y C reciben automáticamente esa información.

Paso 1. Instalación de Mosquitto.

Conectaremos a Internet todos los routers y en todos haremos lo siguiente:

opkg update
opkg install mosquitto mosquitto-client libmosquitto

Paso 2. Poner los routers B y C en escucha.

En los routers B y C pondremos lo siguiente:

mosquitto_sub -h iot.eclipse.org -t router/testeo -q 2

Vamos a explicarlo un poco:

mosquito_sub: cliente que se queda a la espera de recibir mensaje desde el servidor. Realiza una subscripción a un toppic de ese servidor

Con esto haremos que los routers estén pendientes de los mensajes recibidos desde el servidor iot.eclipse.iot con el toppic router/testeo.

-q 2 significa que hemos elegido la máxima calidad de servicio que garantiza mediante un handshake de 4 pasos que la información llega correctamente. Es más lento pero asegura mejor la transmisión.

Paso 3. Realizar envíos desde router A.

En el router A pondremos:

mosquitto_pub -h iot.eclipse.org -t router/testeo -m "Primer Test"

mosquitto_pub: Nos permite enviar/publicar datos al servidor.

Con esto enviamos un mensaje desde el router A con el toppic router/testeo con el mensaje “Primer Test”.

Paso 4. Comprobar resultados.

Podemos realizar el paso 3 las veces que queramos. Comprobaremos que tanto en la terminal del router B como del router C aparecen los datos enviados de manera instantánea. También podemos en nuestros smartphones con android instalar un cliente de MQTT tal como MyMQTT.  Configurado con el servidor iot.eclipse.org y el topic router/testeo veremos desde cualquier lugar los envíos realizados.

Conclusión:

Como vemos, podemos enviar los datos de un sensor o la información que queramos de manera fácil que será recibida de manera automática por los clientes. Esta habilidad y fiabilidad de este protocolo MQTT ha hecho que por ejemplo Facebook lo utilice para su chat.

El servidor que hemos utilizado es un servidor público sólo para prototipos y testeo. Encontrarás una lista de otros servidores públicos en el siguiente enlace: https://github.com/mqtt/mqtt.github.io/wiki/public_brokers.

Otra lista http://moxd.io/2015/10/public-mqtt-brokers/ ,

Si quieres montar un servidor,  con el mismo mosquitto puedes hacerlo.

A mi se me ocurren un montón de usos: Desde el uso con cualquier sensor,  enviar órdenes a nuestros dispositivos y con lo que tengo ahora a mano hasta usar pistolas de códigos de barras. A lo mejor tú le encuentras otra utilidad utilizando la gran cantidad de herramientas existentes para este protocolo. Sólo necesitas tener imaginación.

 

3 comentarios en “Primeros pasos con MQTT

Los comentarios estan cerrados