Una introducción al transporte de telemetría de cola de mensajes (MQTT)

El Internet de las cosas (IoT), ¡esas palabras te llenarán de esperanza o te dejarán con miedo! Pero el IoT está aquí y muchos dispositivos ahora comunican su información utilizando una gran variedad de protocolos. Algunos de estos protocolos son propietarios, de código cerrado o «pesados», pero ¿qué pasaría si necesitáramos un protocolo liviano para enviar mensajes a través de una red de bajo ancho de banda? ¡Bueno, MQTT es el protocolo que necesitas!

El transporte de telemetría de cola de mensajes (MQTT) es un protocolo diseñado para ancho de banda limitado, conexiones remotas donde los dispositivos sensores se pueden dejar en el campo, recopilando datos e informando esos datos a otro dispositivo a través de una red.

MQTT funciona como un modelo de editor > corredor > suscriptor. El editor es el dispositivo sensor, en algún lugar del mundo que recopila datos, estos datos luego se publican utilizando un «tema» a través de un corredor que maneja las conexiones realizadas en la red. El suscriptor está escuchando el mismo tema que el editor y verá cualquier dato publicado usando ese tema. Una analogía clásica es YouTube: el contenido produce contenido publicado, al que los suscriptores eligen suscribirse. YouTube simplemente actúa como un intermediario que permite al editor enviar contenido a los suscriptores.

¿Para qué se puede utilizar MQTT?

MQTT es un protocolo flexible, desde el envío de datos del sensor hasta la activación de dispositivos remotos para que cobren vida desde un modo de suspensión de bajo consumo. MQTT es un protocolo fácil de usar que se puede usar con muchos dispositivos. Los usos comunes son para sensores remotos que envían datos a la base para su posterior análisis. Sistemas domóticos que controlan y regulan la temperatura, la iluminación y la seguridad de nuestro hogar. MQTT es una navaja suiza en IoT, ya que funciona con muchas plataformas diferentes utilizando un protocolo común.

¿Con qué plataformas se puede utilizar?

MQTT está en casa en muchas plataformas, pero para dispositivos como Raspberry Pi, hay paquetes de software disponibles en los repositorios para Linux y Python (estos también funcionan con máquinas Linux).

MQTT es incluso parte de la aplicación Node-RED, lo que permite programar proyectos con mayor facilidad utilizando nodos conectados.

MQTT también se puede usar con dispositivos como Onion Omega, un pequeño dispositivo Linux delgado que es un cruce entre Raspberry Pi y Arduino. Usamos un Onion Omega 2 como corredor MQTT para un proyecto de prueba y se enfrentó a una cantidad significativa de tráfico. Incluso hay clientes MQTT para Arduino, por supuesto, necesitará un escudo Ethernet / WiFi para usarlos a menos que esté usando una placa ESP8266.

¿Cómo puedo usar MQTT?

Hay clientes MQTT para la mayoría de las plataformas y aquí hay algunas sugerencias.

linux

La herramienta más básica se llama Mosquitto, y es una aplicación de terminal que se puede usar para publicar, suscribirse y crear un intermediario en cualquier máquina Linux.

Para instalar, abra la terminal y, utilizando su administrador de paquetes, busque

mosquitto mosquitto-clients

Para crear un corredor en una máquina, simplemente necesitamos iniciar el servicio Mosquitto y se ejecutará en segundo plano.

Luego, en una máquina desde la que deseamos suscribirnos

mosquitto_sub -t Data -h BROKER IP ADDRESS

Y luego podemos publicar un mensaje sobre el mismo tema que el suscriptor.

mosquitto_pub  -t Data -m "HELLO WORLD" -h BROKER IP ADDRESS

Luego, el mensaje se envía al intermediario y el suscriptor recibe el mensaje menos de un segundo después.

Androide

Dos clientes MQTT para Android son el cliente MQTT (https://play.google.com/store/apps/details?id=in.dc297.mqttclpro)

y MQTT Dash (https://play.google.com/store/apps/details?id=net.routix.mqttdash)

Ambos clientes se pueden usar para suscribirse a temas y publicar en la red MQTT.

Pitón

Hay una biblioteca de Python para MQTT llamada paho-mqtt y para instalar usando el administrador de paquetes pip3, abra una terminal y escriba.

€ sudo pip3 install paho-mqtt

Para ver un ejemplo de cómo usar un dispositivo sensor para publicar datos a través de una red MQTT, eche un vistazo a esta demostración (https://github.com/lesp/HIVE-MQTT-Demo) que se creó para que los escolares publiquen la temperatura datos a través de una red de una Raspberry Pi a otra.

Otras plataformas

Para otras plataformas, como Windows y Mac, consulte https://www.hivemq.com/blog/seven-best-mqtt-client-tools, que es un gran recurso para proyectos MQTT.

¿MQTT es seguro?

De forma predeterminada, MQTT no es seguro y los mensajes se envían sin autenticación, pero puede configurar un nombre de usuario y una contraseña para asegurarse de que solo los usuarios autorizados puedan publicar y suscribirse a su red MQTT.

Conclusión

MQTT es una gran plataforma para IoT, ya que proporciona una base simple pero poderosa a partir de la cual podemos crear proyectos. Cruza diferentes lenguajes de programación, sistemas operativos y se puede usar con muchas redes diferentes. La inclusión de una biblioteca de Python permite a los fabricantes que usan Raspberry Pi usar MQTT en sus compilaciones y crear proyectos que se activan y reaccionan a la entrada de sensores, motores de control y otros métodos de entrada/salida creativa. MQTT podría ser la forma ideal en la que los proyectos de ciencia ciudadana se comunican y comparten datos en todo el mundo.

Electropartitura:

Ventajas:

  • Multiplataforma/Multilenguaje
  • Fácil de usar
  • Muchas opciones de configuración

Contras:

  • El modelo de editor/corredor/suscriptor requiere un tiempo para acostumbrarse
  • La biblioteca de Python, si bien es fácil de usar, requiere un nivel decente de conocimiento de Python
  • MQTT es inseguro de forma predeterminada, por lo que necesitará la configuración del usuario para que sea seguro

Enlace: http://mqtt.org/