Out-of-band power alerting for a homelab
You almost certainly have a UPS, and this is not an argument against one. A UPS buys runtime and, wired to NUT, shuts things down cleanly. What it does not do is tell you — and the tools that would tell you are running on the hardware that just lost power.
The gap, stated precisely
Mains fails at 14:20 on a Tuesday. The UPS takes the load. Twelve minutes later the battery is low, NUT does its job, everything shuts down cleanly and the rack goes dark. Nothing is damaged and nothing is corrupt. You find out at 19:00 when you get home, because every part of that sequence was correct and none of it involved you.
The notification paths people assume cover this, and where each breaks:
- NUT / apcupsd mail: leaves over the network. If the ONT, modem or the switch in front of it is not also on battery — a very common layout — the mail never leaves the building.
- Uptime Kuma, Zabbix, Prometheus: excellent, and hosted on the thing that went down. A monitor inside the rack cannot report the rack.
- External uptime checks: these do fire. They say unreachable, which is the same alert you get for an ISP fault, a crashed hypervisor, a dead switch or somebody pulling the wrong cable. Useful, ambiguous, and the ambiguity is the expensive part.
- Smart plug on the rack: reports over the Wi-Fi that the blackout just took out.
The pattern is one thing: everything that could tell you depends on something the outage removed, or cannot say what actually happened.
What a phone adds
An Android phone on a charger in the closet is an out-of-band mains sensor with its own battery and, with a prepaid data SIM, its own transit. It watches the charger's power feed rather than the battery level, so it reports in seconds rather than when the phone eventually drains.
- An unambiguous signal. Not "the host is unreachable" but "mains power at that address has failed". That is the difference between refreshing a dashboard and deciding whether to drive.
- A path the outage cannot take. Cellular, independent of the ONT, the switch, and whether anyone remembered to put the modem on the UPS.
- Cover for the monitor itself. If the phone stops checking in — battery flat, no signal, somebody unplugged it — our servers treat that silence as the alert and tell your people anyway. It is the answer to who watches the watcher, and it costs no extra hardware.
- More than one person. Anyone you give a six-digit code to is woken on their own phone. Useful when the rack is at a second site, a parent's house, or a small office where somebody else is closer than you are.
Where it sits alongside what you run
| Question | Answered by |
|---|---|
| How long until the batteries go? | NUT / apcupsd. Not us — we read nothing from the UPS. |
| Shut the hosts down cleanly | NUT. We notify people; we do not act on machines. |
| Is the service up? | Uptime Kuma, or an external check. |
| Why is it down? | This — mains specifically, rather than "unreachable". |
| Tell me while I am out | This, over cellular, out of band. |
| Tell me if the monitor itself dies | This — silence is treated as the alert. |
A sensible setup
- Any Android 8.0+ handset — a drawer phone is ideal, since it does nothing else — on a charger plugged into a non-UPS socket. This matters: on battery it sees no failure until the UPS gives out, which reports the wrong event several minutes late.
- A prepaid data SIM. Without it, alerting falls back to the silence sweep: roughly seventeen minutes rather than three.
- Keep NUT exactly as it is for shutdown and battery telemetry. These do not overlap.
- If the rack is at a second site, hand a code to whoever is nearest it rather than only to yourself.
What it does not do
No SNMP, no USB, no UPS telemetry of any kind: it does not know your battery level, load or runtime estimate. No shutdown hooks and no API to script against. No SMS and no phone calls — alerts arrive as push notifications in the app, and by email to anyone else. No iPhone version. And it is not a certified life-safety system; if you are protecting something where that matters, this is not the product.
Questions
I already have a UPS. Why would I need this?
A UPS gives you runtime and, with NUT or apcupsd, a clean shutdown. Neither of those tells a person who is not in the building. If the outage lasts longer than the battery, the rack goes down gracefully and silently, and you find out when you next look. This is the notification half, and it is the half that runs on something the outage cannot take down.
Doesn't NUT or apcupsd already email me when mains fails?
It sends mail through the network. Whether that mail leaves the building depends on the modem or ONT and the switch between it and the server being on the UPS too, which is a common gap — people put the server and the NAS on battery and leave the ONT on a wall socket. When that is the layout, the notification dies with the link.
Can't Uptime Kuma or an external monitor tell me?
An external check tells you the service is unreachable, which is genuinely useful and genuinely ambiguous: an ISP fault, a crashed host, a failed switch and a blackout all look identical from outside. A phone on a charger reports that mains power specifically has failed, which turns an ambiguous alert into a decision about whether to drive home. Uptime Kuma running inside the rack cannot report the rack being down at all.
Does it talk to my UPS over SNMP or USB?
No. It reads nothing from the UPS and knows nothing about battery level, load, or estimated runtime. It watches whether the wall socket its own charger is plugged into is delivering power. If you want battery telemetry, NUT is the right tool and this does not replace it.
Can it trigger a graceful shutdown?
No. It notifies people; it does not act on machines. There is no API to hook into a shutdown script, and the phone is not on your network in any privileged way.
What about the far end — how do I know the alert got out?
Put a cheap prepaid data SIM in the monitoring phone and the report leaves over the cellular network, entirely out of band from anything in the rack. If the phone cannot reach us at all, our servers notice its check-ins stopped and alert your people anyway, which takes about seventeen minutes rather than three.