# Estado del Proyecto ## Estado actual El dashboard integra monitoreo en vivo, alarmas configurables, tendencias historicas, exportacion de datos y una consola Atlas Scientific EZO capaz de usar I2C real en Raspberry Pi o modo demo en desarrollo. ## Funciones operativas - Lectura de `data/EZORTD.json`, `data/EZOPH.json`, `data/EZODO.json` y `data/EZOEC.json` cada segundo. - Evaluacion de alarmas mediante `config/alarms.json`. - Graficas Chart.js alimentadas por los CSV de `logs/`. - Intervalo configurable para actualizar graficas. - Exportacion CSV y Excel usando datos historicos simulados de la API. - Borrado real de los cuatro CSV mediante `POST /api/history/clear`, conservando sus encabezados. - API Express con validacion basica para sensores, comandos y frecuencia de registro simulada. - Pruebas automaticas de los endpoints principales con `node --test`. ## Arquitectura de datos | Funcion | Fuente actual | |---|---| | Lecturas en vivo | Archivos JSON en `data/` | | Alarmas | `config/alarms.json` | | Graficas | Archivos CSV en `logs/` | | Exportaciones | API Express con datos simulados | | Comandos y calibracion | API Express + `EZO_COMMAND` en hardware; demo fuera de Raspberry Pi | Nginx sirve los archivos estaticos y redirige `/api/*` al proceso Express en el puerto 3000. Para desarrollo local, Express tambien sirve exclusivamente `frontend/`, `data/`, `logs/` y `config/`. El dashboard puede abrirse directamente en `http://localhost:3000/frontend/index.html` sin configurar Nginx. ## Hardware - `EZO-RTD`, `EZO-pH`, `EZO-DO` y `EZO-EC` tienen ejecutables C de lectura unica. - Los Makefiles usan los objetos correspondientes a cada modulo. - El daemon continuo existente corresponde solamente a EZO-RTD. - La conexion de comandos web con el bus I2C real usa `sensors/EZOCommand/EZO_COMMAND`. - La frecuencia seleccionada en la interfaz afecta solamente al backend simulado; no reconfigura los procesos C. ## Dependencias externas - Express y CORS mediante npm. - Chart.js mediante CDN. - SheetJS mediante CDN. Para operar sin internet en la Raspberry Pi se recomienda almacenar Chart.js y SheetJS localmente dentro de `frontend/vendor/`. ## Verificacion Ejecutar: ```bash npm test npm start ``` La compilacion de los controladores C debe verificarse en Raspberry Pi OS, porque depende de `/dev/i2c-1` y de los encabezados Linux I2C. ## Trabajo pendiente 1. Crear daemons continuos para EZO-pH, EZO-DO y EZO-EC. 2. Verificar la capa I2C y cada rutina de calibracion con las sondas fisicas. 3. Hacer que la frecuencia de registro configure los daemons. 4. Servir Chart.js y SheetJS localmente para despliegues sin internet. 5. Agregar pruebas de navegador para el dashboard completo.