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.

78 lines
2.7 KiB
Markdown

# 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.