Raspberry Pi + MQTT

Como parte de mi participación en la movida IoT (Internet of Things), me propuse investigar sobre la forma de administrar e interconectar dispositivos remotos usando como base o controlador una Raspberry Pi y un modulo ESP8266.

Analizando alternativas, lo que más se adecua a lo que quiero hacer es usar esta configuración de hardware y la interconección de los componentes es a través de MQTT (Message Queue Telemetry Transport), que es un protocolo usado para la comunicación machine-to-machine (M2M). Este protocolo está orientado a la comunicación de sensores, debido a que consume muy poco ancho de banda y puede ser utilizado en la mayoría de los dispositivos con pocos recursos (CPU, RAM).

La arquitectura de MQTT sigue una topología de estrella, con un nodo central que hace de servidor o “Broker” con una capacidad de miles clientes, dependiendo de la infraestructura (red y el hardware donde corre el Broker). El Broker es el encargado de gestionar la red y de transmitir los mensajes, para mantener activo el canal, los clientes mandan periódicamente un paquete (PINGREQ) y esperan la respuesta del broker (PINGRESP). La comunicación puede ser cifrada entre otras muchas opciones como persistencia, QoS, etc.

Créditos de la imágen: https://spindance.com/smart-consumption-smart-products-understanding-mqtt/

Lo primero es instalar Mosquitto en mi Raspberry Pi, que será el Broker. Para esto solo es necesario ejecutar:

$ sudo apt-get update
$ sudo apt-get install mosquitto

 

Con esto ya tenemos lo necesario para hacer funcionar la comunicación entre los clientes (dispositivos WiFi del tipo ESP8266) y el Broker (Raspberry Pi). Antes de poder controlar algo, vamos a comprobar la conexión.

Si todavía no tenes un ESP8266 (u otro dispositivo conectado), la prueba se puede hacer usando un cliente que corre en Chrome que se llama MQTT Lens. También existe este otro para Windows: MQTTBox

Ambos dispositivos (cliente y Broker) tienen que estar conectados a la misma red. Luego, en el cliente, nos suscribimos al topic “test” (ya deberíamos tener configurada la conexión al Broker). En este caso uso como ejemplo mi Raspberry, donde esta instalado el Broker. Tenemos que ejecutar:

$ mosquitto_pub -h 192.168.1.150 -t "test" -m "Estoy usando MQTT"

Donde:

-h: indica el broker (host)
-t: indica el topic

Con esto podemos comprobar que la comunicación entre ambos es correcta. Es decir, publicamos en el topic “test” (desde el Broker) y recibimos ese mensaje en el cliente:

Con esto dejamos establecida la base para lo que vendrá que es la instalación de Node-RED y como hacer que todo funcione en conjunto. Espero que les haya servido.