Cómo conectar Raspberry Pi a Mainflux

Configurar MQTT en Raspberry Pi sin cabeza y conectarlo a la plataforma Mainflux en la gota DigitalOcean

En este tutorial haremos lo siguiente:

  • Instale Raspbian Strech Lite en Raspberry Pi 3 sin cabeza Modelo B
  • Configurar WiFi en Raspberry Pi
  • Instalar Mosquitto (servidor MQTT) en Raspberry Pi
  • Configure Mainflux (plataforma IoT) en la gota Digital Ocean
  • Conecte Raspberry Pi con Mainflux

Para seguir este tutorial, necesitará una computadora (lo estoy haciendo con una computadora portátil con Windows 7), Raspberry Pi (tengo el Modelo B de RPi 3), una tarjeta microSD y conexión WiFi

Instalar Raspbian

Si es la primera vez que usa Raspberry Pi, debemos instalar el sistema operativo en él. Como usaremos Raspberry Pi sin cabeza (sin monitor), será suficiente una versión mínima de Raspbian. Descarga Raspbian Strech Lite y descarga Etcher. Coloque la tarjeta microSD en su PC y ejecute Etcher.

Elija la imagen Raspbian (no necesita desempaquetarla), elija la unidad donde está su tarjeta microSD y haga clic en Flash.

Conectando Raspberry Pi

Debemos conectar la PC a Raspberry Pi y conectar Pi a WiFi. Para esta tarea, tanto nuestra PC como Raspberry Pi deben conectarse en la misma red WiFi. Mientras su tarjeta microSD está en su PC, cree dos archivos en su raíz: wpa_supplicant.conf yssh.

En wpa_supplicant.conf ingrese este texto y edite sus datos: código de país, nombre y contraseña de WiFi:

país = EE. UU.
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev
update_config = 1
red = {
 ssid = "WiFiNetworkName"
 psk = "WiFiPassword"
 key_mgmt = WPA-PSK
}

El archivo con namessh debe permanecer vacío y sin ninguna extensión.

Expulse la tarjeta microSD de su computadora e insértela en su Raspberry Pi. Encienda su Pi y después de unos momentos su Pi debería estar encendida y conectada a WiFi. Pero no lo veremos hasta que nos conectemos desde la PC a Raspberry Pi. Para eso, debemos encontrar la dirección IP local de Raspberry Pi. Una forma de encontrar eso es iniciar sesión en su enrutador y buscar dispositivos conectados. Otra forma es averiguar primero la dirección IP local de su PC. Si usa Windows, ejecute el símbolo del sistema (presione Win + R y escriba cmd) y escriba ipconfig

Dirección IP local de la PC

Luego, escanearemos la subred de clase C de esa dirección IP con Advanced IP Scanner (escriba la dirección de su PC y haga clic en el botón "C" en Advanced IP Scanner). Debería ver todos los dispositivos conectados a su WiFi y reconocer su Raspberry Pi.

Buscando la dirección IP local de Rasberry Pi

En su computadora, abra PuTTY y conéctese a la dirección IP de Pi

Inicie sesión como pi con una contraseña de frambuesa, y finalmente estamos conectados a nuestra Raspberry Pi y podemos instalar mosquitos en ella.

Instalación de MQTT en Raspberry Pi

MQTT es un protocolo de mensajería de máquina a máquina, diseñado para proporcionar comunicación ligera de publicación / suscripción a dispositivos de "Internet de las cosas".

Instalaremos Mosquitto, el popular servidor / corredor MQTT, en Raspbery Pi con este comando:

sudo apt-get install mosquitto mosquitto-clients

Probémoslo con dos conexiones SSH a Pi.

En una ventana, nos suscribiremos a los mensajes en el canal "prueba / tema":

mosquitto_sub -v -t "prueba / tema"

En otra ventana publicaremos mensajes en el mismo chanell:

mosquitto_pub -t "prueba / tema" -m "¡Hola, mundo!"

Suscripción y publicación de mensajes MQTT en localhost

Los mensajes que estamos publicando en una ventana de terminal aparecerán en otra.

Estos mensajes se intercambian en el host local de Raspberry Pi, y nuestro objetivo es enviarlos a la plataforma Mainflux en la nube.

Instalación de Mainflux en DigitalOcean

Mainflux es una plataforma de nube de Internet de las cosas moderna, escalable, segura, de código abierto y sin patentes. Acepta conexiones a través de múltiples protocolos de red (es decir, HTTP, MQTT, WebSocket), creando así un puente continuo entre ellos.

Le mostraremos paso a paso cómo instalarlo en la gota de DigitalOcean.

Cree gotitas Ubuntu 16.04.4 x64, los recursos más bajos serán suficientes para esta prueba (1GB RAM, 1vCPU, 25GB SSD).

Cree un usuario no root con privilegios de sudo y cambie a ese usuario:

adduser ivan
usermod -aG sudo ivan
su ivan

A continuación, instale Docker desde el repositorio oficial de Docker. Solo necesitamos ejecutar estos cuatro comandos, si desea explorar detalles puede consultar aquí.

Para evitar escribir sudo cada vez que ejecute el comando docker, agregue su nombre de usuario al grupo de docker.

sudo usermod -aG docker ivan

Para aplicar la nueva membresía de grupo, debe cerrar sesión y volver a iniciarla.

A continuación, instalaremos Docker Compose.

Primero, compruebe aquí cuál es la última versión y edite el siguiente comando:

Y finalmente establecer permisos:
sudo chmod + x / usr / local / bin / docker-compose

Ahora, estamos listos para configurar Mainflux. Conéctese a su gotita (inicie PuTTY o consola en el panel de control de DigitalOcean).

Instalar e iniciar la plataforma Mainflux con servicios adicionales implica solo estos tres pasos:

Eso es todo, hemos instalado e iniciado la plataforma Mainflux con servicios adicionales (esos servicios son la base de datos InfluxDB, el servicio de escritura InfluxDB y la herramienta Grafana).

Ahora puede abrir el panel de control en su navegador en su dirección IP de gota, no olvide https: // e ignore la advertencia de seguridad.

Puede crear usuarios, canales y cosas en Dasboard o puede hacerlo con comandos curl en el servidor como se describe en la documentación. Nos registraremos sobre el tablero, crearemos dos cosas (llamadas MyThing1 y MyThing2) y las conectaremos al canal (llamado MyChann).

Agrega cosas y conéctalas al canal

Cree un token de autorización para la cuenta que acaba de registrar al enviar una solicitud HTTP POST desde su computadora. Puede usar Postman para eso, envía una solicitud a la dirección IP de su gotita y no se olvide de desactivar la verificación de certificación SSL (en Postman: Configuración -> General). Para obtener el token de autorización POST a / tokens, correo electrónico y contraseña de su cuenta de Mainflux

Obtención de una clave de autorización en Cartero

Consigamos esas cosas que creamos en el tablero. Cambie al método GET y en el encabezado haga la clave de autorización con el valor del token de la respuesta anterior. OBTENER de / cosas

Obtener identificadores y claves de cosas en Postman

Usaremos esas teclas más tarde cuando conectemos Raspberry Pi como estas cosas. Con el servicio mosquitto instalado en Raspberry Pi, enviaremos mensajes SenML y Mainflux almacenará esos datos en su base de datos InfluxDB. Entonces, antes de conectar y enviar mensajes, configuremos Grafana, herramienta que usaremos para mostrar los datos almacenados en la base de datos.

Navegue a la dirección IP de su servidor en el puerto 3001. Debería ver la página de inicio de sesión de Grafana:

Página de inicio de sesión de Grafana. Nombre de usuario: admin, contraseña: admin

Vamos a utilizar las credenciales de administrador predeterminadas para Grafana: admin / admin

Haga clic para agregar una fuente de datos y debería ver el formulario para agregar una nueva fuente de datos.

Elija el nombre que desee, utilizaremos Mainflux. A continuación, elija InfluxDB del menú desplegable como tipo de base de datos.

La URL de la base de datos es http: // mainflux-influxdb: 8086.

Si no mencionamos algunos de los campos, eso significa que esos campos se dejan en sus valores predeterminados. Finalmente, configure los detalles de InfluxDB. La base de datos, el usuario y la contraseña tienen el mismo valor: mainflux.

Después de completar estos campos, su formulario debería verse así:

Configuración de fuente de datos InfluxDB en Grafana

Haga clic en guardar y probar. Enviemos algunos datos a Mainflux para que podamos rastrearlos en Grafana.

Conecte Raspberry Pi a Mainflux

Ya hemos utilizado los comandos mosquitto_pub y mosquitto_sub en Raspbery Pi para publicar mensajes simples y recibirlos suscribiéndose a temas. Los mensajes fueron enviados y recibidos en el servidor MQTT local. Pero ahora publiquemos mensajes de Raspbery Pi a la plataforma Mainflux que está instalada en el servidor de la nube. Entonces, mosquitto_sub y mosquitto_pub tendrán más opciones, porque debemos establecer el nombre de host (-h) de nuestro servidor, nombre de usuario (-u) y contraseña (-P) de lo que Raspbery Pi representará.

Primero nos suscribiremos como MyThing1 a los canales de tema / 1 / mensajes
El formato del canal es canales / / mensajes ya que solo creamos un canal (MyChann) su ID es 1. Si creó más canales, puede obtener sus ID con Postman con la solicitud GET de / canales

El nombre de usuario (-u) y la contraseña (-P) son el ID y la clave de la cosa de la que ya obtuvimos / cosas con Postman en el capítulo anterior. El nombre de host (-h) es la dirección IP de la gotita donde instalamos Mainflux.

Finalmente, publiquemos algo sobre el mismo tema, abra una nueva ventana de terminal en Raspbbery Pi y ahora lo representaremos como MyThing2

Deberíamos ver los mensajes que estamos publicando en el terminal donde estamos suscritos a los temas.

Para la última prueba, en lugar de publicar cadenas, publicaremos mensajes en formato SenML. SenML significa Sensor Markup Language y representa el tipo de medio para representar mediciones simples del sensor y parámetros del dispositivo.

Entonces, en lugar de -m "¡Hola, mundo!" En el último comando enviar:

-m '[{"bn": "nombre", "bu": "A", "n": "voltaje", "u": "V", "v": 120.1}, {"n": " current "," t ": -2," v ": 1.5}, {" n ":" current "," t ": -1," v ": 1.6}, {" n ":" current "," t ": 0," v ": 1.7}] '

Estamos simulando un dispositivo que mide el voltaje y la temperatura. Siga enviando mensajes como ese y cambie algunos valores de voltaje, por ejemplo.

Asegurémonos de que estos valores estén escritos en la base de datos en Mainflux. Crea un nuevo tablero en Grafana:

Crear nuevo tablero en Grafana

Agregar nuevo gráfico

Luego haga clic en el título del Panel y elija editar el panel:

Debería poder configurar varias configuraciones. En primer lugar, configure la fuente de datos como la fuente que acaba de agregar (en nuestro caso, la llamamos Mainflux). Puede ejecutar cualquier consulta que desee sobre los mensajes almacenados en InfluxDB. Por ejemplo, usaremos simple select:

Y ahora podemos ver el gráfico de los valores de voltaje que estamos enviando.

En Grafana puede ejecutar múltiples consultas, por ejemplo, puede configurar otra consulta para que sean los valores de corriente eléctrica que también enviamos desde Raspbbery Pi.

En este tutorial, quería explicar cómo configurar Raspberry Pi y Mainflux desde cero en el alojamiento en la nube y enviar mensajes entre ellos. Intenté no omitir ningún paso, por lo que si sigues este tutorial también puedes tener esta conexión. He publicado enlaces en el artículo donde puedes explorar más sobre las herramientas y tecnologías que estaba usando y enlaces a otros tutoriales que me ayudaron.

Hasta la proxima vez,
Ivan Milošević

Sobre la compañía Mainfluix:
Mainflux es una compañía de tecnología que ofrece una plataforma IoT de código abierto y libre de patentes, reconocida por Linux Foundation y O’Reilly Media con servicios de consultoría de software y hardware basados ​​en una amplia experiencia laboral en compañías de Fortune 500.

Sitio web de Mainflux: https://www.mainflux.com
Mainflux Github: https://github.com/Mainflux/mainflux