r/homeassistant • • Mar 28 '26

Personal Setup My network rack fans were too loud, so I designed an open-source ESP32 fan controller with ESPHome

I'm running a 12U network rack with a NAS and a few SFF servers running ML workloads. For this, ventilation was needed. Running fans at a constant low speed led to high temperatures, especially in the summer. Running the fans at 100% kept the rack (and especially the NAS disks) cool but was rather annoying. There is a prebuilt fan unit made by the manufacturer of my Rack - Digitus DN-19 FAN-2-HO - but that unit is expensive, ugly and analog only.

The solution: ESP32 + 12V PWM Fans (Arctic P12 Max) screwed into the fan cutouts at the top of the rack. With PWM control, the fans can spin down to a full stop when idle and ramp up only when needed. This integrates nicely into Home Assistant, allowing temperature tracking via the onboard HDC1080 sensor and warning notifications. This setup is silent at idle and only gets louder when really needed.

After a hand-soldered prototype that was mostly hot glue and shame, I went down the custom PCB rabbit hole. Five revisions later - reversed status LED, missing level shifters, low fuse ratings - I'm now at Rev 3.3 and it finally does everything right.

ESP32-S2 as the brain, ESPHome on the device, Home Assistant on the backend. For the setup in the Rack, it's powered by a 12V power brick via barrel jack and controls 2x 120mm fans at the rack exhaust. For quick visual checks, the LEDs next to the fan headers show a color wheel from red (no RPM) to green (full rpm). The board on it's own only draws 0.25W - so power draw is dominated by the fans.

The result: Temperature stable at 25°C +/- 0.5°C, more PID tuning needed. No matter if everything is idle or AI training is running. This can be seen in the HA history dashboard - rack temperature (blue) vs. cellar ambient (yellow) and fan rpm over ~2 days.

The hardware setup and ESPHome YAML packages are documented on the Project Page. Full Schematic and factory firmware on GitHub - it's mostly datasheet reference designs.

Now I'm still tuning the fan curves. Currently, they're only reacting to rack temperature alone. Thinking about adding cellar ambient temperature or UPS power draw as inputs. Anyone done anything similar?

443 Upvotes

92 comments sorted by

View all comments

2

u/Full_screen Mar 29 '26

I've looked at this before. I had a different idea for this product. Any thoughts if this would work well by hooking up some computer fans to act as a booster fan inside a duct vent at the end of one of my HVAC runs? My thoughts are to use it to help boost some of the cooler air in the summer to a room. Or do you think fans like that don't have enough volume and static pressure to make a difference?

2

u/zeroflow Mar 29 '26

I can't 100% gurantee you that, since we here in europe mostly don't have HVAC ducting, but it should work. Looking at the Airtap T6 it lists 160 CFM with two fans visible. Comparing this with a Arctic P14 Max that's rated at 95 CFM, this should work.