ThingsBoard y Raspberry PI (parte 1): obtener un panel de IoT profesional

Los dispositivos IoT pueden recopilar una gran cantidad de datos ambientales que debe administrar, reorganizar y mostrar. ThingsBoard en Raspberry PI le permite crear tableros asombrosos obteniendo datos de una gran cantidad de dispositivos

En este tutorial, le mostraré cómo instalar ThingsBoard en placas de computadora Raspberry PI.

Características de ThingsBoard

ThingsBoard es una plataforma de código abierto que le permite administrar fácilmente dispositivos IoT, recopilar datos y crear paneles sorprendentes para sus proyectos IoT. También puede configurar activadores con notificaciones conectadas o reacciones generales, para gestionar interrupciones o problemas en tiempo real.

La página oficial de ThingsBoard muestra como casos de uso común Medición de dispositivos, Gestión de energía, Agricultura inteligente y Seguimiento de flotas, pero tiene una estructura tan versátil que el único límite para sus campos de uso es su imaginación.

Finalmente, lo siguiente le brinda una breve lista de las funciones de ThingsBoard, pero puede consultar la página oficial de ThingsBoard para obtener más detalles:

  • Recopile y almacene datos de telemetría de manera confiable, sobreviviendo a fallas de red y hardware.
  • Admite instalaciones multiinquilino listas para usar
  • Proporciona más de 30 widgets configurables listos para usar y la capacidad de crear sus propios widgets usando el editor incorporado
  • La cantidad de dispositivos y solicitudes del lado del servidor admitidos aumenta linealmente a medida que se agregan nuevos servidores Thingsboard en modo de agrupación.
  • Procese datos de dispositivos entrantes con cadenas de reglas flexibles basadas en atributos de entidad o contenido de mensajes. Reenvíe datos a sistemas externos o active alarmas utilizando una lógica personalizada.
  • Permite monitorear los atributos del dispositivo del lado del cliente y del lado del servidor. Proporciona API para aplicaciones del lado del servidor para enviar comandos RPC a dispositivos y viceversa.
  • Admite el cifrado de transporte para los protocolos MQTT y HTTP(s).
  • Brinda la capacidad de registrar y administrar activos.
  • Amplíe la funcionalidad de la plataforma predeterminada utilizando cadenas de reglas personalizables, widgets e implementaciones de transporte.
  • ThingsBoard tiene licencia de Apache License 2.0, por lo que puede utilizarlo en sus productos comerciales de forma gratuita.
  • Ofrece una implementación en la nube con servicios administrados

El siguiente procedimiento comienza con la guía de instalación de ThingsBoard para Raspberry PI, pero agrega trucos específicos de RPI para que su configuración sea más eficiente. Para este tutorial, usaré una placa de computadora Raspberry PI 3 Model B+, pero esto también se aplica a todas las placas de computadora Raspberry PI más nuevas.

Lo que necesitamos

Como de costumbre, sugiero agregar desde ahora a su carrito de compras de comercio electrónico favorito todo el hardware necesario, para que al final pueda evaluar los costos generales y decidir si continúa con el proyecto o los elimina del carrito de compras. Entonces, el hardware será solo:

Consulta precios de hardware en los siguientes enlaces:

Procedimiento paso a paso

Preparar sistema operativo

Comience con una nueva instalación de Raspberry PI OS Lite para obtener un sistema operativo rápido.

Asegúrese de que su sistema operativo esté actualizado. Desde la terminal, utilice el siguiente comando:

sudo apt update -y && sudo apt upgrade -y

También necesitamos instalar Java. Desde terminales:

sudo apt install openjdk-11-jdk -y

La guía oficial también indica que se ejecute «sudo update-alternatives –config java», pero descubrí que el actual Raspberry PI OS Lite no lo requiere ya que no tiene ninguna otra alternativa de Java instalada:

pi@raspberrypi:~ € sudo update-alternatives --config java There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-11-openjdk-armhf/bin/java Nothing to configure. 

PruebaJava:

pi@raspberrypi:~ € java -version openjdk version "11.0.13" 2021-10-19 OpenJDK Runtime Environment (build 11.0.13+8-post-Raspbian-1deb11u1) OpenJDK Server VM (build 11.0.13+8-post-Raspbian-1deb11u1, mixed mode)

Antes de continuar con la instalación de Thingsboard, obtengamos algunas optimizaciones adicionales específicas para Raspberry PI.

La primera es aumentar la RAM disponible: como usamos una instalación Lite sin entorno de escritorio, podemos poner al valor mínimo (16 MB) la RAM de la GPU. Para esto, consulte mi tutorial Administrar división de memoria GPU de Raspberry PI.

La segunda optimización, todavía en RAM, aumentaremos la memoria SWAP para Raspberry PI para aprovechar el uso de RAM con espacio adicional de SD. Esto nos permitirá asignar más RAM al proceso Java sin arriesgarnos a que Thingsboard se bloquee. En este caso, consulte mi tutorial Establecer memoria de intercambio de Raspberry PI para configurar la memoria de intercambio en 1000.

Instalar ThingsBoard

Necesitamos descargar el archivo .deb del sitio web de ThingsBoard:

wget https://github.com/thingsboard/thingsboard/releases/download/v3.3.2/thingsboard-3.3.2.deb

Y ahora podemos instalarlo:

sudo dpkg -i thingsboard-3.3.2.deb

En este punto, ThingsBoard está instalado pero no activo. Tenemos que hacer algunas configuraciones más para que funcione.

Instalar y configurar PostgreSQL

La base de datos compatible con ThingsBoard es PostgreSQL. Instálelo con el siguiente comando:

sudo apt install postgresql

Como la instalación predeterminada viene con una contraseña vacía y necesitaremos una contraseña para las propiedades de la aplicación ThingsBoard, tenemos que cambiarla. La siguiente secuencia de comandos ayudará a configurar uno nuevo para el usuario de postgres:

sudo su - postgres psql password q

A continuación, me referiré a esta contraseña como «My_PostgreSQL_Password». Una vez que haya terminado, escriba «salir» para volver al shell «pi».

Ahora, vamos a crear la base de datos vacía de ThingsBoard. Utilice los siguientes comandos, fila por fila:

psql -U postgres -d postgres -h 127.0.0.1 -W CREATE DATABASE thingsboard q

Finalmente, podemos salir del shell de postgres:

exit

Configurar las propiedades de ThingsBoard

Ahora, debemos configurar el archivo de configuración de ThingsBoard para mantener la referencia de la base de datos y limitar la asignación de memoria de Java (para evitar fallas en la RAM). Desde terminales:

sudo nano /etc/thingsboard/conf/thingsboard.conf

Agregue las siguientes líneas al archivo de configuración. Recuerde cambiar la contraseña a continuación (en rojo) con la que configuró para PostgreSQL en el paso anterior:

# DB Configuration  export DATABASE_TS_TYPE=sql export SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect export SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard export SPRING_DATASOURCE_USERNAME=postgres export SPRING_DATASOURCE_PASSWORD=My_PostgreSQL_Password export SPRING_DATASOURCE_MAXIMUM_POOL_SIZE=5 # Specify partitioning size for timestamp key-value storage. Allowed values: DAYS, MONTHS, YEARS, INDEFINITE. export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS  # Update ThingsBoard memory usage and restrict it to 512MB export JAVA_OPTS="€JAVA_OPTS -Xms512M -Xmx512M"

Pasar una contraseña a través de un archivo de configuración simple nunca es una buena idea, y esto debería ser un campo de mejora para ThingsBoard. Por esta razón, una forma de mejorar la seguridad es restringir el acceso a nuestra instalación de TB solo a dispositivos conocidos y limitado a los puertos necesarios.

En comparación con el procedimiento oficial, agregamos más RAM ya que estamos aprovechando los bloqueos de memoria con Swap.

Ahora podemos ejecutar el script de instalación. Tenga en cuenta que al agregar una opción final «–loadDemo» al siguiente comando, cargaremos datos de demostración: usuarios, dispositivos, activos, reglas, widgets.

sudo /usr/share/thingsboard/bin/install/install.sh

Durará unos minutos, con el siguiente resultado:

pi@raspberrypi:~ € sudo /usr/share/thingsboard/bin/install/install.sh   ______    __      _                              ____                               __  /_  __/   / /_    (_)   ____    ____ _   _____   / __ )  ____   ____ _   _____  ____/ /   / /     / __   / /   / __   / __ `/  / ___/  / __  | / __  / __ `/  / ___/ / __  /  / /     / / / / / /   / / / / / /_/ /  (__  )  / /_/ / / /_/ // /_/ /  / /    / /_/ / /_/     /_/ /_/ /_/   /_/ /_/  __, /  /____/  /_____/  ____/ __,_/  /_/     __,_/                               /____/   ===================================================  :: ThingsBoard ::       (v3.3.2)  ===================================================  Starting ThingsBoard Installation... Installing DataBase schema for entities... Installing SQL DataBase schema part: schema-entities.sql Installing SQL DataBase schema indexes part: schema-entities-idx.sql Installing SQL DataBase schema PostgreSQL specific indexes part: schema-entities-idx-psql-addon.sql Installing DataBase schema for timeseries... Installing SQL DataBase schema part: schema-ts-psql.sql Successfully executed query: CREATE TABLE IF NOT EXISTS ts_kv_indefinite PARTITION OF ts_kv DEFAULT; Loading system data... Installation finished successfully! ThingsBoard installed successfully!

Empezar ThingsBoard:

sudo systemctl start thingsboard

Con el comando “systemctl status”, comprueba que ThingsBoard se ha cargado por completo:

sudo systemctl status thingsboard

Espere más tiempo, especialmente en RPI3, para que la GUI web esté disponible. Puedes monitorearlo con el siguiente comando:

watch tail /var/log/thingsboard/thingsboard.log

Obtendrá la interfaz gráfica de usuario lista cuando aparezca la siguiente fila del seguimiento del registro:

INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''

En este punto, ThingsBoard estará disponible desde un navegador web utilizando su dirección de Raspberry PI como URL y agregando el puerto «8080». En mi caso, mi dirección local RPI es 192.168.1.238 y la URL será “http://192.168.1.238:8080/login”. Recibirá la página de inicio de sesión de Thingsboard:

La siguiente credencial predeterminada estará disponible para el primer acceso como administrador del sistema:

Nombre de usuario (correo electrónico): sysadmin@thingsboard.org

Contraseña: administrador del sistema

Iniciará sesión en la página de inicio del administrador del sistema:

En mi próximo tutorial, mostraré cómo crear su primer usuario arrendatario y cómo agregar las primeras medidas desde Raspberry PI. encuentre esto en el siguiente enlace: ThingsBoard y Raspberry PI (parte 2): Agregar telemetría de dispositivo por MTTQ y Python.