Saltar a contenido

Balena — Deployment Raspberry Pi

Vertivo utiliza Balena para gestionar el deployment del software del robot agronomo a los dispositivos Raspberry Pi en campo. Balena proporciona OTA (Over-The-Air) updates, fleet management y monitoreo remoto.

Arquitectura de Deployment

graph LR
    GIT[GitHub\nmonorepo] --> |push| BALENA[Balena Cloud\nCI/CD]
    BALENA --> |OTA update| RPI1[RPi #1\nCliente Maria]
    BALENA --> |OTA update| RPI2[RPi #2\nCliente Carlos]
    BALENA --> |OTA update| RPIN[RPi #N\nFleet]
    RPI1 --> EMQX[EMQX Broker\nMQTT]
    RPI2 --> EMQX
    RPIN --> EMQX

Estructura del Proyecto Balena

El directorio apps/raspberry/ contiene la configuracion de Balena:

apps/raspberry/
  Dockerfile.template    # Multi-arch build (armv7, aarch64)
  docker-compose.yml     # Servicio principal del orquestador
  balena.yml             # Metadata del proyecto Balena
  src/                   # Codigo fuente Python
  requirements.txt       # Dependencias Python

Fleet Management

Balena permite gestionar todos los dispositivos Raspberry Pi desde un solo dashboard:

Capacidad Descripcion
OTA Updates Push de nuevas versiones del orquestador sin acceso fisico
Device Variables Configuracion por dispositivo (modo, intervalo, MQTT broker URL)
Logs remotos Acceso a logs en tiempo real de cada dispositivo
SSH remoto Terminal remoto para debugging
Health checks Monitoreo de estado y reinicio automatico

Variables de Entorno

Variable Descripcion Default
ORCHESTRATOR_MODE Modo de orquestacion indoor
MQTT_BROKER_HOST Host del broker EMQX
MQTT_BROKER_PORT Puerto del broker 1883
MQTT_USER_ID UUID del usuario propietario
MQTT_GREENHOUSE_ID ID del greenhouse
READ_INTERVAL Segundos entre lecturas 30
SIMULATE Activar modo simulacion false

Bootstrap de un Nuevo Dispositivo

# 1. Flashear imagen Balena en SD card
balena os download raspberrypi4-64 -o vertivo-rpi.img
balena os configure vertivo-rpi.img --fleet vertivo/robot-agronomo

# 2. Insertar SD card en Raspberry Pi y encender
# El dispositivo se registra automaticamente en Balena Cloud

# 3. Configurar variables de entorno desde el dashboard o CLI
balena env add MQTT_BROKER_HOST mqtt.vertivo.com --device <uuid>
balena env add MQTT_USER_ID <user-uuid> --device <uuid>
balena env add MQTT_GREENHOUSE_ID <gh-uuid> --device <uuid>

Actualizaciones

Cada push a la rama main del monorepo que modifique apps/raspberry/ dispara un build automatico en Balena Cloud. Los dispositivos en campo reciben la nueva version automaticamente (rolling update con rollback en caso de falla).