Diagrama de flujo
┌───────────────────────────────┐
│ SISTEMA ENCENDIDO │
│ (nut-driver + upsd + upsmon) │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ UPS EN ESTADO ONLINE │
│ ups.status = OL │
└───────────────┬───────────────┘
│
│ (corte eléctrico real
│ o test.battery.start)
▼
┌───────────────────────────────┐
│ UPS PASA A ONBATT │
│ ups.status = OB LB? │
└───────────────┬───────────────┘
│
│ NOTIFYFLAG ONBATT
│ SYSLOG + WALL + EXEC
▼
┌───────────────────────────────┐
│ upsmon ejecuta NOTIFYCMD │
│ → /usr/sbin/upssched │
└───────────────┬───────────────┘
│
│ upssched lanza timer
│ (check_battery)
▼
┌───────────────────────────────┐
│ /usr/bin/upssched-cmd │
│ Lee battery.charge vía upsc │
└───────────────┬───────────────┘
│
▼
┌─────────────────┐
│ battery.charge │
│ es numérico? │
└───────┬─────────┘
│ NO
▼
┌───────────────────────────────┐
│ Log y salida segura │
│ (no se apaga nada) │
└───────────────────────────────┘
│ SÍ
▼
┌─────────────────┐
│ battery.charge │
│ ≤ 30 % ? │
└───────┬─────────┘
NO │ │ SÍ
│ ▼
│ ┌──────────────────────────┐
│ │ shutdown -h now │
│ │ "Apagado por batería" │
│ └───────────┬──────────────┘
│ │
│ ▼
│ ┌──────────────────────────┐
│ │ Sistema apagándose │
│ │ POWERDOWNFLAG creado │
│ └──────────────────────────┘
│
▼
┌───────────────────────────────┐
│ Log: batería > 30 % │
│ Sistema sigue encendido │
└───────────────────────────────┘