# Despliegue y validación en Raspberry Pi ## Prueba sin hardware En una computadora de desarrollo: ```bash npm ci npm test ``` Para ejecutar el sistema completo en demo, use dos terminales: ```bash EZO_MODE=demo npm run acquire EZO_MODE=demo npm start ``` Abra `http://localhost:3000/frontend/index.html`. El recolector genera JSON y CSV de prueba; la consola y el panel de calibración muestran transporte DEMO. ## Preparación del bus I2C En Raspberry Pi OS: ```bash sudo raspi-config sudo reboot ls -l /dev/i2c-1 sudo apt install i2c-tools i2cdetect -y 1 ``` El mapa esperado es: | Circuito | Dirección | |---|---| | EZO-DO | `0x61` | | EZO-pH | `0x63` | | EZO-EC | `0x64` | | EZO-RTD | `0x66` | No continúe con calibraciones si falta una dirección, aparece una dirección inesperada o el barrido del bus es inestable. ## Instalación Desde el repositorio clonado: ```bash chmod +x scripts/install-raspberry-pi.sh sudo ./scripts/install-raspberry-pi.sh ``` El instalador copia la aplicación a `/opt/photobioreactor`, instala dependencias, compila `EZO_COMMAND` y `EZO_ACQUIRE`, crea el usuario de servicio, activa los dos servicios systemd y configura Nginx en el puerto 80. Validación: ```bash systemctl status photobioreactor-api systemctl status photobioreactor-acquisition journalctl -u photobioreactor-acquisition -f curl http://127.0.0.1:3000/api/system/ezo ``` La respuesta de producción debe informar `hardware` tanto para comandos como para adquisición. `EZO_MODE=hardware` evita que una instalación incompleta caiga silenciosamente a valores simulados. La API escucha únicamente en `127.0.0.1` y se publica mediante Nginx. El dashboard todavía no implementa autenticación; despliegue esta versión solo en una red local confiable y no exponga el puerto 80 directamente a Internet. ## Validación previa a calibración Desde la consola web, pruebe individualmente: ```text i Status R Cal,? ``` Compruebe que cada lectura coincide con el medio físico y que los archivos de `data/` cambian. El helper agrupado envía `R` a los cuatro circuitos, espera una sola ventana de conversión y recoge las respuestas bajo el mismo bloqueo usado por la consola. ## Calibración Realice cada procedimiento con soluciones de referencia vigentes y espere la estabilización de la sonda. El panel consulta `Cal,?` automáticamente después de cada comando de calibración exitoso. - RTD: `Cal,`. - pH: `Cal,mid,7.00`, `Cal,low,4.00`, `Cal,high,10.00`. - DO de dos puntos: `Cal,0` y después `Cal`; configure antes las compensaciones. - EC: configure `K`, ejecute `Cal,dry` y después uno o dos puntos húmedos. Consulte `docs/EZO_COMMANDS.md` para restricciones y comandos de diagnóstico. ## Prueba integral 1. Confirme lecturas, históricos, exportaciones y alarmas. 2. Desconecte un sensor: debe aparecer `DESCONECTADO` mientras los demás siguen. 3. Detenga el recolector: las lecturas deben pasar a `DESCONECTADO` al superar la tolerancia calculada desde la frecuencia configurada. 4. Reinicie la Raspberry y confirme el arranque automático. 5. Mantenga el sistema varias horas y revise `journalctl`, tamaño de CSV, estabilidad de valores y recuperación después de comandos de consola. Las pruebas físicas y la exactitud metrológica no pueden certificarse fuera de la Raspberry Pi con las sondas y soluciones reales conectadas.