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:

  1. Calibrar el nivel en el mismo rango y montaje que usa el firmware.
  2. Medir la corriente con un multímetro en serie (reposo, WiFi, alarma) y calcular la autonomía.
  3. Aumentar a ≥ 10 repeticiones por escenario y ≥ 10 casos negativos (incluido un descenso solo por evaporación).
  4. Ejecutar al menos una prueba de fuga con la ventana real de 5 min.
  5. 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.