Repository navigation
Servidor Web Embebido
sofypr edited this page Oct 3, 2026
·
1 revision
En el Challenge #1 se identificó como debilidad que la visualización dependía de un único medio (la pantalla LCD). El Challenge #2 exige un medio adicional/redundante de visualización — el servidor web embebido en el propio ESP32 cumple ese requisito, y además habilita control remoto de la bomba y del silencio de la alarma.
- El ESP32 opera en modo WiFi Station, conectándose a la WLAN local (no crea su propio punto de acceso), para que el tablero sea accesible desde cualquier dispositivo en la misma red.
- Se usa la librería
WebServer.hdel core de ESP32, corriendo en el core 1, en paralelo con la lógica de fusión — nunca se bloquea elloop()condelay(), así el tablero siempre responde con baja latencia. -
Autenticación HTTP básica (
server.authenticate/requestAuthentication) protege todos los endpoints — el navegador solicita usuario/clave antes de mostrar cualquier dato. - Reconexión automática de WiFi no bloqueante: si la WLAN se cae, el sistema reintenta conectar cada 10s sin detener el resto de funciones (sensores, alarma, LCD siguen operando localmente).
| Endpoint | Método | Función |
|---|---|---|
/ |
GET | Página principal del tablero (HTML/CSS/JS embebido, servido desde PROGMEM) |
/api/data |
GET | Estado actual en JSON: riesgo, estado, todas las variables de sensores, resultado de evapotranspiración, estado de la bomba, salud de cada sensor |
/api/historico |
GET | Últimas ~60 muestras (buffer circular, ~5 min de historia) en JSON, para graficar tendencia |
/api/silenciar |
POST | Silencia la alarma sonora por 10 minutos (los LEDs siguen indicando el estado real) |
/api/bomba |
POST |
?accion=on|off — controla el módulo relé de la bomba de recirculación |
{
"ts": "17:44:52",
"riesgo": 100.0,
"estado": "CRITICO",
"escalado": false,
"nivel": 0.0,
"peso": 0.0,
"temp": 22.90,
"hum": 47.10,
"presion": 748.76,
"lux": 133.0,
"et0": 0.000,
"evap_calc_ml": 0.0,
"evap_medida_ml": 0.0,
"bomba": false,
"bme_ok": true,
"bh1750_ok": true,
"hcsr04_ok": true,
"hx711_ok": true
}- Tarjeta principal con el porcentaje de riesgo y el estado, coloreado según severidad (verde/amarillo/naranja/rojo).
- Cuadrícula con nivel, peso, temperatura, humedad, luz y ET0.
- Botón "Silenciar alarma (10 min)".
- Estado de la bomba de recirculación + botones "Encender bomba" / "Apagar bomba".
- Actualización automática cada 3 segundos vía
fetch()(JavaScript), sin recargar la página.
- Comportamiento ante caída y reconexión de la WLAN (ver Banco de Pruebas).
- El sistema sigue operando localmente (LEDs, buzzer, LCD) aunque el tablero web quede temporalmente inaccesible — el servidor web es un medio adicional, no una dependencia crítica del sistema de alarma.
- Acceso restringido: solo usuarios con credenciales válidas pueden ver datos o accionar la bomba/silencio.
HydroSentry — Challenge #2
- Home
- Contexto y Problema
- Requisitos y Restricciones
- Arquitectura de la Solución
- Diseño de Hardware
- Diagramas UML
- Variables Ambientales y Lógica de Fusión
- Servidor Web Embebido
- Implementación Física y Carcasa
- Banco de Pruebas
- Autoevaluación del Protocolo
- Mejoras respecto al Challenge 1
- Uso de Inteligencia Artificial
- Resultados y Análisis
- Conclusiones, Retos y Trabajo Futuro
- Roles del Equipo
- Referencias
- Anexos