Show HN: Monitor your el-cheapo UPS via SNMP
github.comI made this to serve my own need (which it does), to allow my Synology NAS a clean shutdown in case of a power cut. My UPS is not recognized if plugged into the NAS via USB, so it is plugged into a different (SBC) computer instead, which runs this.
Speaking of prior art, I am only aware of this one: https://github.com/luizluca/nut-snmpagent I am not a fan of Ruby and I only trust software I wrote (a.k.a.: I prefer my own bugs in critical pieces of my infra), so here it is.
Posting in case someone else finds it useful, but will answer more general questions (should they come up) as well.
> I prefer my own bugs
In which case, you might wanna double check these return values https://github.com/tomszilagyi/upsc-snmp-agent/blob/8f35379d...
Not sure what problem you see with that, care to elaborate and/or open an issue?
It never returns 1, and returns 4 in two cases. This varies from the comment before the function, which I presume documents return values (though at first glance I thought the "name(number)" format was a function call example).
Oh, ok, I guess that might be a bit confusing. :)
The comment documents the interpretation (by the UPS MIB) of possible return values. The same is true for the surrounding few functions (upsAutoRestart, upsBeeperStatus and upsOutputSource) that are similar in form and purpose. Obviously, there is no requirement that all possible output values are generated (exactly once or at all).
The function upsBatteryStatus returns 4 in two cases, because in both of those cases the battery is deemed 'depleted'. And it does not return 1 because there is no input case from upsc (that I know of, at least) where it would make sense to report the battery status as 'unknown'.