bclose

Instalando Broker MQTT en Raspberry PI

Objetivos

 

 
  • Conocer el servicio MQTT.
  • Instalar el Broker Mosquitto en Raspberry Pi
  • Configurar usuarios y comprotamiento.
 

 

Material requerido.

 

 Vista mayor  Una Raspberry Pi
personal computer  Un PC

 

Leyendo el SDS011 desde un PC

 

Los que disfrutamos jugando con Arduino y similares microcontroladores, solemos encontrarnos con que cuando leemos sensores nos gustaría enviarlos a algún sitio en la red que nos permitiera procesarlos mas adelante, especialmente ahora que la conexión WIFI o Ethernet (Entre otras) han caído sensiblemente de precio y la IOT empieza a vislumbrarse.

No es raro que te encuentres en un proyecto con unos pocos sensores captando información que te gustaría consolidar en un servidor para estudiar el asunto mas adelante. Y ya, si fuera posible, hacer gráficos de colorines que es algo que nos ponecantidad.

Pero si lo pensáis, resulta que este es uno de los problemas básicos que nos va a presentar la IOT a medida que las redes globales de comunicación se desplieguen y naturalmente hay gente mas lista que nosotros que ya se ha currado el asunto y propuesto una solución ligera al problema de ¿Cómo conecto yo múltiples sensores a una red troncal para consolidar datos, sin tener que empeñar un riñón?

Este problema viene de atrás y la solución pasa por los servidores o Broker de MQTT. Estas joidas siglas representan “Message Queing Transport Protocol” (Protocolo de transporte de colas de mensajes) y son el resultado de un problema muy similar al que comentamos más arriba, que tuvo gente de IBM a finales de los 90 y que ha devenido en un estándar abierto que podemos montar con cierta facilidad en nuestros PC Windows O Linux (Y seguro que también en Mac).

Esquema conceptual

MQTT es un estándard de encapsulado de mensajes, de forma que clientes como Arduino y similares puedan enviar información a un servidor central que gestiona esa información de forma organizada, de modo que hay usuarios que publican información y otros que suscriben información.

Normalmente los sensores publicarán la información que ellos leen de acuerdo a un cierto tópico como “Temp” o “Laboratorio/Temp” y si alguien suscribe ese tópico, recibirá una copia de la información correspondiente cada vez que un cliente publique cualquier cosa en ese tópico.

¿Complicado? No tanto. Solo es confuso al principio. Imagínate que tienes 10 Arduinos con sensores de temperatura, humedad o CO2 en tu empresa llamada ACME. Cada uno de tus Arduino puede conectarse a un servidor MQTT a través de WIFI y cada 10 minutos, o cada vez que la temperatura o humedad, o… cambia, publica un mensaje en el Broker en la categoría “Acme/Temp” o “Acme/Humedad” o “Acme/CO2”. El servidor va recibiendo esa información y comprueba en su lista de interesados (Aquellos que le dijeron que querían suscribir el tópico  “Acme/humedad” por ejemplo) una copia del valor recibido de forma automática sin necesidad de intervención manual

El sistema es de los más limpio. Si sabes que publican los clientes puedes suscribirte al tema y vas recibiendo la información a medida que se produce. Además, el bróker MQTT puede manejar cientos de publicaciones de cientos de empresas y encargarse de repartir el juego de forma sencilla para los clientes que publican y los clientes que suscriben solo lo que les interesa… y de paso cóbrate una tarifa mensual por almacenar tus datos y permitirte representarlos de algún modo gráfico para que queden monos.

Es importante entender que el bróker MQTT no puede almacenar información porque no es una base de datos (Lo que resulta bastante absurdo a estas alturas) pero es relativamente fácil configurar una BBDD asociada porque todos tenemos el mismo problema y lo mismo ocurre con el programa de explotación de los datos, el MQTT no lo incluye (¿A que esperan para montar un conjunto que podamos instalar del tirón?)

Por eso en esta nueva serie de tutoriales, vamos a ver que es bastante sencillo instalar un bróker MQTT en Windows y en Raspberry pi o Linux (Lo siento no tengo Mac) e iremos viendo como instalar todo lo necesario para tener nuestra propio servidor MQTT. Me he dado unos cuantos cabezazos hasta resolver todo, porque como siempre la información tiende a ser un tanto dispersa por ahí, así intentaremos montar una guía ordenada de todo lo que tienes que hacer para poner tu propio server tanto en Raspberry Linux como en Windows.

 

Instalando Mosquitto en Raspberry PI

 

Es bastante sencillo ya que como siempre podemos instala paquetes ya organizados. Pero es importante empezar poniendo al día tu instalación con:

Sudo apt-get update
Sudo apt-get upgrade
Consola BASH en raspberry

A mi me dice que no instalará nada, porque soy muy ordenadito y acabo de actualizar mi Raspy a la última, pero tu tienes que actualizar si o si.

Ahora tendremos que configurar algunas cosas mas, pero de momento ya tendrás el problema de que necesitas teclado y ratón para tu Raspberry y lo mismo para tu PC de sobremesa o andar cambiando conectores, pero yo soy demasiado vago para eso asi que te recomiendo configurar tu Raspberry para que acepte control externo. Vamos a configurar el acceso vía SSH por si queremos entrar por un terminal serie a la Raspi y a través del VNC server para entrar en el modo gráfico.

Para ello entra en Raspbian en modo gráfico y ve al menú principal:

\\menú\Preferencias\Configuracion de Raspberry Pi

Te aparecerá una ventana como esta:

Menu raspberry Pi

Pincha en SSH y VNC activo para que podamos entrar en remoto y así no tendremos que andar cambiando de teclado o de pantallas para configurar tu Raspi. Ahora tienes configurado el acceso SSH a través de un puerto de texto y puedes usar por ejemplo Putty para conectarte (Copiate las opciones de configuración):

Propiedades de conexion remota

Y te pedirá el login como una consola normal de Linux con todas sus atribuciones:

Consola BASH de raspberry

Pero si necesitas un acceso a la pantalla grafica y ciertamente vas a necesitarla, tienes que instalar el VNC viewer desde aquí  e instalarlo sin tardanza. Si lo arrancas llegaras a una pantalla donde puedes definir varias conexiones. Dále a nueva conexión

Configuracion VNC viewer

Te aparecerá esto:

Opciones de conexion

En el VNC server pon la dirección IP de tu Rasppi y en nombre algo como Raspberry por ejemplo y pulsa intro. Te abrirá la conexión remota con Raspi en modo gráfico.

 

Instalando el MQTT Mosquitto

 

Esta es la parte fácil. Ve a una consola de Linux y escribe

sudo apt-get install mosquitto mosquitto-clients

Tras un ratito de descargar cosas de internet terminaras con el Mosquitto instalado (Que por cierto es el nombre cariñoso del típico bróker MQTT en Linux / Raspebrry) y ahora podemos convertirlo en un servicio que arranque con Linux (Y no tengas que hacerlo tu, cada vez que enciendes la Raspi) con el comando:

sudo systemctl enable mosquitto.service

Podemos probar que el sistema funciona, abriendo un par de ventanas y usando los comandos mosquitto_sub y mosquitto_pub, que permite suscribir o publicar algo en el server MQTT. Abre dos ventanas de comandos y en una escribe:

mosquitto_sub -d -h localhost -p 1883 -t "Prometec/temp"

y en la otra

mosquitto_pub -d -h localhost -p 1883 -t "Prometec/temp"-m "99.99"

Veras que en la ventana en la que suscribiste el tópico «Prometec/temp»-m » aparece el valor que publica la otra venta de 99.99

Ejemplo de prueba del mqtt

En la próxima sesión veremos como configurar la seguridad de las conexiones y cómo crear usuarios y configuración primera del servidor o bróker MQTT con la Raspberry.

 

IMAGEN DE MARCA