Telemetría simple: cómo ser un tenant de Thingsboard usando una Raspberry Pi 500 y no morir en el intento

La siguiente es una guía básica para instalar ThingsBoard en una Raspberry Pi 500 (funciona en modelos como la Pi 4/5 o similares) y simular un sensor que envía datos mediante protocolo MQTT.
Partimos de la base que ya tenemos corriendo en su última versión, el Raspberry PI OS en nuestra flamante frambuesa blanca.
¿Qué es Thingsboard?
Es una plataforma de código abierto que permite recopilar, procesar, visualizar y administrar datos de dispositivos de IoT (Internet de las cosas).
1. Actualizar sistema y preparar Docker
# Actualizar paquetes
sudo apt update && sudo apt upgrade -y
# Instalar Docker (si no está instalado)
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $USER # Agregar usuario al grupo Docker
echo "Por favor, reiniciar la sesión para aplicar los cambios del grupo Docker."
2. Crear directorio para datos de PostgreSQL
# Crear carpeta y ajustar permisos
mkdir -p ~/.thingsboard/data
sudo chmod 777 ~/.thingsboard/data # Permisos temporales para evitar errores
3. Ejecutar ThingsBoard con Docker
docker run -it \
-p 9090:9090 \ # Puerto web
-p 1883:1883 \ # Puerto MQTT
-p 5683:5683/udp \ # Puerto CoAP
-v ~/.thingsboard/data:/data \ # Persistencia de datos
--name thingsboard \ # Nombre del contenedor
--restart always \ # Reinicio automático
thingsboard/tb-postgres # Imagen de ThingsBoard con PostgreSQL
4. Acceder a ThingsBoard
URL: (por ejemplo) http://192.168.1.100:9090
Credenciales por defecto:
Usuario: tenant@thingsboard.org
Contraseña: tenant
(Por favor, tener la precaución de cambiar las credenciales desde Perfil>Contraseña)
5. Crear un dispositivo y enviar datos
Ir a Devices > Add Device, se le otorga un nombre, perfil default y damos clic en agregar. Luego copiamos el Access Token para usarlo en el próximo paso.
En unos momentos el dispositivo pasará su estado a Activo, para poder operar.
6. Enviando datos via MQTT (ejemplo con mosquitto_pub):
MQTT (Message Queuing Telemetry Transport) es un protocolo de mensajería que permite la comunicación entre dispositivos a través de internet. Es el estándar de facto para la llamada Internet de las Cosas (IoT).
Instalar mosquitto-clients para poder usar mosquitto_pub:
sudo apt install mosquitto-clients
Luego, procedemos a publicar los datos
mosquitto_pub -h <IP-DE-TU-RASPBERRY> -t "v1/devices/me/telemetry" -m '{"temperature": 25, "humidity": 60}' -u "<ACCESS_TOKEN>"
¿Qué "brujería" hace MQTT? ¿Cómo funciona el comando completo?:
-Se conecta al servidor MQTT que está corriendo en tu Raspberry Pi (especificado con -h).
-Publica un mensaje en el tema v1/devices/me/telemetry (especificado con -t).
-El mensaje es un JSON que contiene datos de temperatura y humedad (especificado con -m).
-Se autentica usando el Access Token del dispositivo (especificado con -u).
¿Qué es JSON?
JSON (JavaScript Object Notation) es un formato de texto ligero y fácil de leer que se utiliza para intercambiar datos entre sistemas. Es ampliamente utilizado en aplicaciones web, APIs y, como en este caso, en IoT (Internet de las Cosas) para enviar y recibir datos estructurados.
JSON es ligero porque ocupa poco espacio, lo que lo hace ideal para transmitir datos en redes. Es legible porque tiene una estructura clara y fácil de entender para humanos.
Es independiente porque aunque su nombre proviene de JavaScript, JSON puede ser utilizado en casi cualquier lenguaje de programación (Python, Java, C#, etc.).
Un JSON está compuesto por pares de clave-valor, donde, para nuestro caso es:
{
"temperature": 25,
"humidity": 60
}
"temperature": 25:
Clave: "temperature" (indica que el valor es una medición de temperatura).
Valor: 25 (el valor de la temperatura, en este caso, 25 grados).
"humidity": 60:
Clave: "humidity" (indica que el valor es una medición de humedad).
Valor: 60 (el valor de la humedad, en este caso, 60%).
Opción: Usar MQTT Explorer (ejemplo con cliente gráfico)
Configuración:
Host: <IP-DE-TU-RASPBERRY>
Puerto: 1883
Username: <ACCESS_TOKEN>
Password: queda en blanco
Topic para enviar datos: v1/devices/me/telemetry
Value: {"temperature": 25, "humidity": 60}
Al pulsar Publish, se verán reflejados los valores. Para esto debemos ir al menú de Thingsboard, a la izquierda de la pantalla, entrar en Dispositivos, hacer clic en nuestro dispositivo creado, se abrirá una ventana, en la tercera solapa llamada Última telemetría, podremos ver los valores recibidos desde nuestro "dispositivo remoto" (cliente mqtt).
Solución de errores comunes
Permisos en /data/db:
sudo chown -R 799:799 ~/.thingsboard/data # Ajustar permisos para PostgreSQL
Docker no inicia:
sudo systemctl restart docker # Reiniciar servicio Docker
docker logs thingsboard # Verificar logs del contenedor
Conexión rechazada a PostgreSQL:
Asegurarse de que el contenedor está en ejecución: docker ps
Verificar que el puerto 5432 (PostgreSQL) no esté bloqueado.
Importante:
Persistencia de datos: Los datos se guardan en ~/.thingsboard/data, incluso si el contenedor se elimina.
Escalabilidad: Para proyectos grandes, migrar a una base de datos externa (ej: AWS RDS).
Documentación oficial: ThingsBoard Docs.
La TELEMETRÍA es una tecnología que permite recopilar, medir y transmitir datos a distancia. Se basa en sensores que recolectan información y la envían para su análisis.
TENANT hace referencia a la figura del administrador para gestionar aplicaciones servicios, datos, dispositivos y usuarios. La traducción literal es inquilino.
Un caso práctico es el de la estación meteorológica de esta página. El software que gestiona la los datos generados, entre distintos protocolos, maneja MQTT y es el que nos permite mostrarles a ustedes los diferentes paneles para cada uno de los parámetros meteorológicos.

Raspberry Pi 500