Repository navigation
Diagramas UML
Carvaa-7 edited this page Oct 3, 2026
·
1 revision
classDiagram
class SensorData {
+float temperatura
+float humedad
+float presion
+float lux
+float nivel_cm
+float nivel_pct
+float peso_g
+bool bme_ok
+bool bh1750_ok
+bool hcsr04_ok
+bool hx711_ok
+unsigned long timestamp_ms
}
class ResultadoFusion {
+float riesgo_nivel
+float riesgo_peso
+float riesgo_base
+bool discrepancia_sensores
+float IEE
+bool escalado
+float riesgo_final
+EstadoRiesgo estado
}
class EstadoRiesgo {
<<enumeration>>
RIESGO_NORMAL
RIESGO_PREVENTIVO
RIESGO_ALTO
RIESGO_CRITICO
}
class ResultadoEvaporacion {
+float ET0_mm_dia
+float evap_calc_ml
+float evap_medida_ml
+float error_pct
+bool disponible
}
class VentanaEvaporacion {
+float t_min
+float t_max
+float t_suma
+unsigned long muestras
+float nivel_inicio_cm
+unsigned long inicio_ms
+bool bomba_activada_en_ventana
}
ResultadoFusion --> EstadoRiesgo
VentanaEvaporacion --> ResultadoEvaporacion : procesarVentanaCompleta()
SensorData --> ResultadoFusion : calcularFusion()
sequenceDiagram
participant T as Tarea Sensores (core 0)
participant M as Mutex/SensorData
participant L as Loop principal (core 1)
participant F as calcularFusion()
participant A as actualizarAlarma()
participant W as Servidor Web
participant U as Usuario (tablero web)
T->>M: Escribe lectura (cada 1s)
L->>M: Toma copia protegida (cada 2s)
L->>F: calcularFusion(copia)
F-->>L: ResultadoFusion (riesgo, estado)
L->>A: actualizarAlarma(estado)
A->>A: Actualiza LEDs + patrón de buzzer
L->>W: Expone estado en /api/data
U->>W: GET /api/data (polling cada 3s)
W-->>U: JSON con riesgo, estado, sensores, bomba
U->>W: POST /api/silenciar
W->>A: silenciado = true (10 min)
U->>W: POST /api/bomba?accion=on
W->>T: digitalWrite(PIN_BOMBA, HIGH)
stateDiagram-v2
[*] --> Normal
Normal --> Preventivo: riesgo_final >= 25%
Preventivo --> Alto: riesgo_final >= 50%
Alto --> Critico: riesgo_final >= 75%
Critico --> Alto: riesgo_final < 75%
Alto --> Preventivo: riesgo_final < 50%
Preventivo --> Normal: riesgo_final < 25%
note right of Preventivo
Escalado climático: si IEE > 0.7
y riesgo_base >= 25%, se suman
+25 puntos al riesgo_final
end note
flowchart LR
subgraph Core0["Core 0"]
TS["tareaSensores()<br/>periodo 1s<br/>xTaskCreatePinnedToCore"]
end
subgraph Core1["Core 1"]
LP["loop()<br/>server.handleClient()<br/>gestionarWiFi()<br/>fusión cada 2s<br/>histórico cada 5s<br/>LCD cada 3s<br/>ventana evap. cada 1h"]
end
MTX[("mutexDatos<br/>SemaphoreHandle_t")]
TS --> MTX
LP --> MTX
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