An over engineered alternative to NUT Server on an UPS APC
I got 3 APC UPS a while ago, and I've looked for alternatives to monitor them for a while. recently found out about NUT servers and installed one of them on my home lab and joined it to Home Assistant trough the NUT integration, and it works great. Then with the two remaining far away from my server I thought about a couple of alternatives that included using a Pi to install NUT or GL.iNET travel router I have seating there unused. great little devices with OpenWRT, NUT can be installed quickly and painless.
Then I thought about it and finally decided to use an ESP32 S3 dev board, those cheap clones sold in Ali Express for around ~$3, to create a firmware that basically would use the OTG capabilities of the S3 to extract the HID report from the UPS, parse it on the fly and send it to an MQTT broker with Home Assistant Discovery configs. And that was exactly how I got to connect my other two UPS.
Then i decided to take it a step further and capture the messages from the MQTT queue in a script and store the data from the 3 devices (the original NUT server and my other two esp32 devices) and in a Postgres DB, and trained a Random Forrest ML model on my data. after that i was able to run inference every hour to get insigtful information about the UPS and predictability that later i send as well to Home Assistant using MQTT.
I built since a little dashboard, I can select for every device and get the native data and ML analysis.
Posted Feb 15, 2026, 3:18 AM UTC