You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.9 KiB

Estado del Proyecto

Resumen

El proyecto implementa un dashboard web para monitoreo de fotobiorreactor con Raspberry Pi y circuitos Atlas Scientific EZO. La aplicacion puede trabajar en modo demo para desarrollo sin hardware y en modo hardware usando /dev/i2c-1.

Estado Actual

Implementado:

  • Dashboard responsive.
  • Lecturas en vivo desde data/*.json.
  • Adquisicion automatica con api/acquisition.js.
  • Helper C EZO_ACQUIRE para lecturas agrupadas.
  • Helper C EZO_COMMAND para comandos y calibracion.
  • Sintaxis, tiempos y secuencias de calibracion auditados contra datasheets Atlas.
  • Historial CSV por sensor.
  • Graficas con Chart.js.
  • Exportacion CSV y Excel con SheetJS.
  • Alarmas configurables.
  • Bitacora de alarmas en logs/alarms.csv.
  • Notificaciones por webhook y Telegram.
  • Configuracion de sensores habilitados.
  • Retencion historica configurable.
  • Servicios systemd para API y adquisicion.
  • Configuracion Nginx.
  • Instalador para Raspberry Pi.

Componentes Principales

Componente Responsabilidad
frontend/ Dashboard, graficas, controles, exportaciones y consola EZO
api/server.js API HTTP, configuracion, historicos, comandos y seguridad
api/acquisition.js Proceso continuo de adquisicion
api/acquisition-service.js Lectura, escritura atomica, alarmas y retencion
api/notification-service.js Webhook y Telegram
sensors/EZOCommand/EZO_ACQUIRE Lectura agrupada de sensores EZO
sensors/EZOCommand/EZO_COMMAND Comandos individuales EZO
config/*.json Configuracion operativa
deployment/ Servicios systemd, Nginx y variables de entorno
scripts/install-raspberry-pi.sh Instalacion automatizada en Raspberry Pi

Sensores

Sensor Direccion esperada Estado en software
EZO-RTD 0x66 Implementado
EZO-pH 0x63 Implementado
EZO-DO 0x61 Implementado
EZO-EC 0x64 Implementado

El sistema tambien puede detectar otros EZO en el bus, por ejemplo ORP, pero el dashboard actual solo modela RTD, pH, DO y EC.

Modos De Operacion

Modo Uso
EZO_MODE=demo Desarrollo sin Raspberry ni sensores
EZO_MODE=auto Usa hardware si esta disponible; si no, demo
EZO_MODE=hardware Produccion estricta; no simula datos

En Raspberry Pi de produccion se usa EZO_MODE=hardware.

Datos

Lecturas actuales:

  • data/EZORTD.json
  • data/EZOPH.json
  • data/EZODO.json
  • data/EZOEC.json

Historicos:

  • logs/temperature.csv
  • logs/ph.csv
  • logs/do.csv
  • logs/ec.csv

Formato:

timestamp,value
2026-07-07T17:26:13.459Z,25.132

Las graficas muestran el dia actual. Los CSV conservan el periodo configurado por historyRetentionDays.

Alarmas

Los umbrales viven en:

config/alarms.json

Estados:

  • NORMAL
  • WARNING
  • CRITICAL
  • OFFLINE
  • DISABLED

Los eventos se guardan en:

logs/alarms.csv

Los sensores deshabilitados no generan alarma ni riesgo global.

Notificaciones

Configuracion:

config/notifications.json

En produccion:

/etc/photobioreactor/notifications.json

Canales:

  • Webhook HTTP.
  • Telegram Bot API.

El backend redacta secretos cuando envia configuracion al navegador.

Seguridad

Implementado:

  • API_AUTH_TOKEN para endpoints criticos.
  • Header X-API-Token.
  • Comparacion de token en tiempo constante.
  • Rate limit para acciones criticas.
  • Headers HTTP defensivos basicos.
  • API escuchando en 127.0.0.1 detras de Nginx.

Pendiente si se expone fuera de LAN:

  • HTTPS.
  • Autenticacion de usuario completa.
  • Politica de acceso por VPN o red privada.

Validacion

Validado en desarrollo:

  • Pruebas automatizadas Node.
  • Modo demo.
  • Dashboard por HTTP local.
  • Chart.js y SheetJS locales.
  • Comandos EZO simulados.
  • Pruebas de sintaxis oficial por sensor y tiempos de procesamiento.
  • Preservacion de bloques hexadecimales para exportar/importar calibracion.
  • Configuracion de alarmas y notificaciones.

Validacion en Raspberry:

  • I2C mediante /dev/i2c-1.
  • Servicios systemd.
  • Lecturas reales parciales cuando los sensores estan conectados.

La calibracion metrologica y la estabilidad final deben verificarse siempre con sondas reales, soluciones de referencia y operacion continua.

Trabajo Pendiente Recomendado

  • Prueba continua de 8 a 24 horas en Raspberry.
  • Validacion con los cuatro sensores conectados.
  • Calibracion real documentada con fecha y soluciones usadas.
  • Confirmar notificaciones Telegram en la red final.
  • Evaluar integracion futura de ORP si se decide usar ese sensor.
  • Mejorar exportaciones para seleccionar rango: dia actual, ultimas 24 horas o todo el historico.

Documentos Relacionados

  • README.md
  • docs/README.md
  • docs/QUICK_START.md
  • docs/RASPBERRY_PI_DEPLOYMENT.md
  • docs/EZO_COMMANDS.md
  • docs/TROUBLESHOOTING.md
  • docs/STORAGE_ESTIMATE.md
  • docs/TELEGRAM_BOT_SETUP.md
  • ARCHITECTURE.md