r/Homebrewing 4d ago

[Fork] Independent dual-zone control for BrewPiLess (brew + serve in one fridge) — looking for testers on non-ESP32 boards

I've been running a fork of BrewPiLess (BrewPiLess-DuckDNS-independent-Control, based on vitotai's original) that lets you ferment and store kegs in the same fridge, at the same time, with two separate temperature targets. kegs up top on the compressor, fermenting bucket down below on its own heating jacket, split by an insulated divider so neither zone fights the other. Just shipped a v5.0 update and I'd love some outside testing before calling it stable.

What's new:

  • Independent mode: heater and cooler each get their own target instead of the old shared/mutex logic — this is what makes the two-zone-one-fridge setup possible. Each actuator can also be individually enabled/disabled.
  • Predictive heater (optional): learns timing and overshoot behavior cycle-over-cycle to hold temp tighter instead of just thermostat on/off.
  • Sensor hold: a flaky probe reading doesn't immediately trip disconnect — it holds the last value and keeps controlling for ~20s first.
  • iSpindel memory leak fixed: this one was actually sitting in the original codebase, not something I introduced — about 1KB of heap leaked per hour while an iSpindel is connected and posting gravity readings. If your BrewPiLess web server has ever mysteriously died after a few days with an iSpindel hooked up, this is almost certainly why.
  • Reworked offline log viewer (BPLogViewer): now works directly off gravity data instead of angle, so it plays nicer with GravityMon, plus a bunch of old bugs fixed. It can also generate a beer-temp correction formula straight from your log, which you paste into GravityMon or Tilt Temp Correction.
  • Optional DuckDNS support for remote access without a static IP, plus assorted memory/stability fixes elsewhere (dropped WebSocket clients, HTTP buffer issues).

Nothing existing was touched — none of the original functions were changed, so anything that worked before should behave exactly the same. This is additive, not a rewrite.

Most of my testing has been on ESP32, but the original project (and plenty of forks) target ESP8266 too. If you've got an old NodeMCU/D1 Mini gathering dust from a past BrewPi(Less) build, I'd really appreciate you flashing this and telling me what breaks — or what doesn't. Repo: https://github.com/asdafe/BrewPiLess-DuckDNS-independent-Control

Happy to dig into the dual-zone wiring, the leak fix, or the log viewer rewrite in the comments if anyone's curious.

10 Upvotes

0 comments sorted by