12. Autoevaluacion - diegogopa/Challenge-IOT GitHub Wiki
12. Autoevaluación
12.1 Cumplimiento de requisitos del reto
| Requisito | Estado | Evidencia |
|---|---|---|
| Microcontrolador (no Raspberry Pi) | Cumplido | ESP32 DevKit V1 |
| Medición en hilo distinto al principal | Cumplido | Tarea FreeRTOS tareaSensado (sección 9.5) |
| Nivel de agua (mediana + EMA, compensado por T) | Cumplido | Secciones 8.3 y 11.2 |
| Temperatura y humedad | Cumplido | DHT22, sección 11.2 |
| Radiación UV (índice y categoría OMS) | Cumplido con limitaciones de calibración | GUVA-S12SD, sección 11.2 |
| Presión atmosférica | Cumplido | BMP180, secciones 8.11 y 11.2 |
| Evaporación potencial | Cumplido (índice relativo) | Sección 8.9 |
| Caudal | No implementado (el reto pide nivel y/o caudal) | Trabajo futuro, 14.3 |
| Lógica de fusión de múltiples señales | Cumplido (fusión por reglas) | Sección 8 |
| Alarma física y visualización in situ | Cumplido | Secciones 9.8 y 11.5 |
| Tablero en servidor web embebido, sin MQTT | Cumplido | Sección 7.9 |
| Valor actual e histórico en el tablero | Cumplido | /data, /historico |
| Notificaciones en el tablero | Cumplido | Recuadros de estado/falla, eventos, ⚠, vibración |
| Desactivar la alarma física desde el tablero | Cumplido | B4: silenciado en < 1.5 s |
| Acceso restringido a la WLAN y a dispositivos autorizados | Cumplido | B5: tiemeout y 401 |
| Detección de fallas y recuperación | Cumplido salvo desconexión del GUVA | B5 |
| Carcasa, alimentación y despliegue | Cumplido | Sección 17 |
| Banco de pruebas documentado | Cumplido (consumo estimado) | Secciones 10 y 11 |
12.2 Autoevaluación del protocolo de pruebas
| Banco | Fortalezas | Debilidades | Calificación del equipo (1–4) |
|---|---|---|---|
| B1 — Calibración | Nivel con 7 puntos × 10 lecturas, R² = 0.9998; humedad en 3 condiciones con referencia; presión con 4 momentos | Rango de nivel calibrado (5–20 cm) distinto del rango del firmware (4–9 cm); UV sin radiómetro y con solo 3 puntos; presión contra un celular; temperatura con solo 2 niveles estacionarios | 4 |
| B2 — Emulación acelerada | Todos los eventos críticos se provocaron en minutos, con tiempos esperados calculados a partir del diseño | Ventanas reducidas a 60 s: no se validó la detección de fuga con la ventana real de 5 min ni la regla de presión con 3 h | 4 |
| B3 — Lógica de fusión | Matriz de confusión con VP/FP/FN/VN, precisión, sensibilidad y evidencia de histéresis | Solo 5 repeticiones por escenario y 5 casos negativos; no se probó por separado la regla de presión | 4 |
| B4 — Notificaciones | 10 repeticiones con media, σ y máximo por canal | Latencia medida con cronómetro/video, resolución ≈ 0.5 s | 4 |
| B5 — Robustez | Cada componente desconectado individualmente; pérdida y reconexión de WiFi; timeout y 401 verificados | En el BMP180 y la OLED se desconectó SDA, que es compartido, por lo que no se aisló un solo dispositivo; la falla del GUVA no se detecta | 4 |
| B6 — Repetibilidad y energía | σ reportada para distancia, T, HR y tiempos de detección | Consumo y autonomía estimados con hojas de datos, no medidos | 4 |
Qué haríamos distinto:
- Calibrar el nivel en el mismo rango y montaje que usa el firmware.
- Medir la corriente con un multímetro en serie (reposo, WiFi, alarma) y calcular la autonomía.
- Aumentar a ≥ 10 repeticiones por escenario y ≥ 10 casos negativos (incluido un descenso solo por evaporación).
- Ejecutar al menos una prueba de fuga con la ventana real de 5 min.
- Probar la desconexión del BMP180 y la OLED retirando su alimentación, no la línea SDA.
12.3 Limitaciones del prototipo
- El HC-SR04 puede verse afectado por espuma, turbulencia, inclinación o condensación; el filtrado reduce, pero no elimina, este efecto.
- El GUVA-S12SD no tiene calibración contra un radiómetro, y su desconexión no se detecta de forma confiable porque la entrada queda en un valor bajo indistinguible de "sin UV".
- El índice de evaporación es una heurística relativa (0–100), no una tasa física en mm/día.
- La detección de FUGA presentó 1 FP y 1 FN en 10 casos con la ventana acelerada; los umbrales deben ajustarse con más datos.
- Las constantes de calibración (
CAL_*) no están aplicadas en el firmware entregado. - El histórico (60 muestras) y los eventos (10) se guardan en RAM y se pierden al reiniciar.
- La autenticación HTTP Basic viaja sin cifrar (no hay HTTPS); su seguridad depende de que la WLAN esté protegida con WPA2/WPA3. La contraseña por defecto del código debe cambiarse antes de instalar.
- El tablero solo es accesible dentro de la WLAN (decisión de diseño exigida por el reto).
- No se mide caudal.
- Durante los primeros segundos de arranque, mientras se conecta el WiFi (hasta 15 s), el buzzer y la OLED aún no reflejan alarmas porque
loop()no ha comenzado.
12.4 Evaluación general
El prototipo cumple los requisitos mínimos del reto: mide nivel, temperatura, humedad, UV y presión en un hilo independiente; fusiona estas señales para clasificar cinco estados con histéresis; alerta in situ sin depender de la red; y ofrece un tablero de control embebido, restringido a la WLAN, con valor actual, histórico, eventos y desactivación de la alarma. Además, va más allá de lo mínimo con la detección y recuperación automática de fallas por componente, la compensación térmica del ultrasónico y la distinción entre fuga y evaporación.