SNMP - Network Devices — act on a power cut, don’t just survive it.
A UPS keeps Homey alive through a cut. It never tells Homey a cut is happening — so nothing gets shut down cleanly, and you find out afterwards.
This app reads your UPS over the network and turns the moment mains power is lost into a Flow trigger, while the battery still holds. The non-essentials go off, the NAS shuts down properly, and you get told.
Nothing to install on the equipment. Everything is read over SNMP, which UPS network cards, NAS boxes and managed switches already speak.
Test version
Source code ![]()
The one that was missing: a UPS plugged into your NAS
Most home UPS units have no network card — that card costs about as much as the UPS itself. They sit on a USB cable behind a NAS, which is exactly where the existing Homey apps stop.
This app reads that UPS through the NAS. On a Synology: enable SNMP in DSM, have the UPS configured in Hardware & Power, and it appears. You install nothing, you configure no daemon, you run no NUT server.
If you have been following the APC thread stuck on “no new devices found” since 2018 — this is the case it never covered.
What it does
A UPS — charge, runtime in minutes, output load, voltages, temperature
Alarms for mains lost, low battery, overload, and a battery needing replacement
An alarm that names what is wrong, in the UPS’s own words. Four booleans can say something is wrong; only this says which thing — a failed fan, a dead charger, or a UPS running on bypass and no longer protecting anything
A NAS or server — CPU load, memory, storage per volume, uptime. Standard HOST-RESOURCES-MIB, so a Synology, a QNAP, a Linux box with snmpdor an ESXi all work the same way
Switch ports, one Homey device per port — link, negotiated speed, errors, PoE draw
It finds your equipment for you — a sweep of your network, and anything that answers is offered. You can still add one by address
Nothing is hard-coded per model
Everything read comes from the standard MIBs — RFC 1628 for a UPS, RFC 2790 for a host, RFC 2863 and RFC 3621 for a switch. One driver covers every brand: APC, Eaton, Riello, CyberPower, Socomec and the third-party network cards all answer the same questions.
Where a vendor speaks its own dialect, the app falls back to it rather than giving up — a Synology relaying NUT, an APC card answering PowerNet instead of the RFC.
Flow cards
Mains power is lost — the one the app exists for
Mains power returns
Contact is lost during an outage — see the honest limitation below
The battery gets low
Runtime drops below a number of minutes you choose
Overload, battery needing replacement, or any status change
The UPS is on battery (condition)
Runtime is above, or charge is above, a value (conditions)
Read the device now (action)
Every capability above also gets its own Flow card automatically.
Control, off by default ![]()
Switch ports can be switched off and PoE cycled — a stuck camera comes back without walking to the rack.
This is disabled until you enable it per device, and the setting says plainly why: the port you cut may be the one feeding your access point, your router or Homey itself, and getting it back then needs physical access.
The honest limitation ![]()
On the NAS path, the sensor is powered by the thing it watches. Your Synology runs on the UPS it reports on, and DSM shuts it down partway through a long outage.
So the app sees the beginning of a cut reliably — the part that matters, and it fires in about ten seconds — and loses contact before the end of a long one. It does not pretend the power came back: losing contact while the last known state was on battery is its own Flow trigger, and the state stays frozen rather than flipping to “unknown”.
A UPS with its own network card has none of this: the card is powered by the UPS and lives as long as it does.
Requirements
Homey Pro — Homey Cloud and Homey Bridge cannot reach devices on your network
SNMP enabled on the equipment — off by default on recent APC network cards, and off until enabled on a Synology. When the app finds nothing it tells you what to switch on rather than showing an empty list
A fixed address, or a device whose MAC prefix the app knows — a changed DHCP lease is the most common reason a working device goes quiet
Not supported, plainly
QNAP UPS relaying — the OIDs exist but are unconfirmed on real hardware
A Linux host running NUT — NUT has no SNMP agent, so a plain snmpdexposes nothing
SNMPv3 — v1 and v2c only for now
PDUs — no RFC covers outlet control, so it is a vendor dialect per brand
Languages ![]()
English, French, Dutch.
What has happened since ![]()
A real UPS has now answered this code. @SunBeech has a CyberPower VP700ELCD on USB behind a Synology, and cross-checked it against the NUT-based app: status, remaining runtime, output load, battery voltage and the switch to battery all read correctly.
That was the one thing this app shipped without. On the Synology path, it is no longer open.
The NAS and switch paths still have not met real hardware. The shots below are a real Homey reading a local SNMP simulator that serves the real MIBs over real UDP — which proves the wire, not the OIDs.
Everything is checked against the RFCs and the vendor MIBs, with a test suite of 569 that pins the parts which fail silently — unit conversions, and the difference between “the device did not say” and “zero”. A UPS reporting nothing must never look like a UPS reporting an empty battery.
If you have a UPS, a NAS or a managed switch, I would very much like to hear what it does. Good or bad.
What it looks like ![]()
A cut in progress — on battery, runtime falling, the alarm raised.
A NAS. RAM and virtual memory are not offered as volumes — only real filesystems are. There is no temperature tile because this host does not publish ENTITY-SENSOR-MIB: the app declares only what actually answers.
Picking ports on a switch. The names are the switch’s own port descriptions, and each PoE socket is matched to its port. Ports with no link are left unchecked.
One port, as its own device — link, PoE, negotiated speed, throughput and error counters. A port without PoE simply has no PoE tile.












