An Open-Source ESP32-S3 Board Puts a USB UPS on Your Network, With NUT and Tailscale

User Avatar Aswinth Raj
Author
Share
ESP32-S3 Board Monitoring USB UPS System

Network cards for big UPS units are expensive, and running a full Raspberry Pi just to watch one UPS can feel like overkill. Reddit user Smooth_Ganache897 hit both problems: a garage UPS keeping a camera alive had a dead battery when it was needed, and a rack-mount APC unit needed a costly network card. The answer is ups-to-esp32, an open-source ESP32-S3 board that plugs into a UPS's USB port and speaks NUT (Network UPS Tools) over Wi-Fi, so the UPS appears on the network like one with a proper management card. It was shared on r/esp32 on 2 November.

What it does

The board reads every value it can get from the UPS using NUT's own HID tables, shows them in a web UI, and can run a battery self-test on a schedule. Because it speaks NUT, it works with the Home Assistant NUT integration, Synology, TrueNAS, unRAID, Proxmox, upsmon/upsc and Prometheus. It can also join a Tailscale network for remote access.

The hardware lessons

  • USB host needed: the classic ESP32, C3 and C6 have no USB host port, so the board uses an ESP32-S3.
  • Tailscale needs RAM: it needs about 100 KB, so the first S3 chips without PSRAM could not run it. Even on the N16R8 module, Wi-Fi, TLS and task stacks had to move into PSRAM.
  • UPSes go silent: some units stop answering over USB while the old numbers stay on screen. The board has a switch on the USB power to the UPS, so it can power-cycle the link and force the UPS to reconnect.
  • USB-C power is tricky: getting both USB PD chargers and plain USB-C chargers to work cost a few burned boards.

Key details

  • MCU: ESP32-S3 (N16R8 module, 16 MB flash, 8 MB PSRAM)
  • Protocol: NUT server over Wi-Fi, web UI, scheduled battery tests, Tailscale
  • Expansion: header with 4 spare GPIOs plus 3.3 V, 5 V and GND, and an OLED header
  • Openness: schematics, Gerbers and code under GPL-3.0, with a list of tested UPS models; no fuses blown, so it can be reflashed
  • Also: an ESP32-P4 version with PoE is running
  • Note: the maker says AI helped with parts of the software, and he may turn the board into a product

Our take

This is a neat small-job replacement for a single-board computer. The USB power switch is the clever bit: it fixes a real failure mode where a hung UPS controller makes everything look fine while the battery quietly dies. If you only need to monitor one UPS, a dedicated ESP32-S3 is cheaper, uses less power and has no SD card to wear out.

Image credit: aronreid / ups-to-esp32 project (GitHub), photo of the Rev A board, cropped and resized.

About the author: Aswinth Raj is an electronics engineer and the editor of CircuitDigest, where he has published more than 150 hands-on projects and tutorials across Arduino, PIC, ESP32, Raspberry Pi and EV battery systems. He selects the stories on this page for what engineers and makers can actually learn or build from. Connect on LinkedIn

Add a comment

No account needed. Your comment appears once a moderator has reviewed it.

Never shown publicly.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.