Intelligent Hot Water Circulation Pump Controller for Vortex BWO Pumps

Hi everyone!

I’d like to share my ESPome Vortex project - a smart controller that replaces the original PCB in Vortex BWO 155 hot water circulation pumps, transforming them into intelligent, self-learning devices fully integrated with Home Assistant.

What It Does

The Vortex controller learns your hot water usage patterns over time and automatically runs the pump just before you need hot water - no more waiting for hot water at the tap, and no more wasting energy running the pump 24/7!

Fully integrated with Home Assistant through the native ESPHome API - all sensors, controls, and learning data are automatically exposed as entities you can use in automations, dashboards, and scripts.

Key Features

Machine Learning - Builds a weekly usage pattern (7 days × 48 half-hourly slots) that adapts to your household’s schedule

Smart Water Draw Detection - Monitors outlet/return temperature differentials to detect actual water usage and trigger the pump

Disinfection Cycle Detection - Automatically recognizes when your boiler runs its legionella prevention cycle and keeps the pump running appropriately

Vacation Mode - Automatically enters low-power mode after 24h without water usage

Anti-Stagnation Protection - Runs the pump briefly every 48 hours to prevent mechanical seizure

Energy Monitoring - Tracks energy consumption per cycle (kWh) based on flow rate and temperature differential

Web Dashboard - Beautiful heatmap visualization showing learned usage patterns with multiple themes

Hardware

  • ESP32-C6 microcontroller
  • Dallas DS18B20 temperature sensors for outlet/return pipes
  • Logic control for the pump motor (simple digital on/off signal)
  • USB-C Power Delivery 3.0 power supply for the controller & pump
  • Dual LEDs for status indication (learning enabled, pump running/manual mode, WiFi connection status)
  • Hardware button for manual control and learning matrix reset

The PCB fits perfectly on the original Vortex BWO 155 pump carrier, making installation a drop-in replacement.

Home Assistant Integration

Once connected to your network, the device automatically appears in Home Assistant with all entities ready to use:

  • Temperature sensors (outlet/return pipes)
  • Pump control switch with state feedback
  • Energy monitoring (last cycle kWh and duration)
  • Learning status indicators
  • Vacation mode detection
  • Pump trigger type (manual, scheduled, water draw, etc.)
  • Configuration controls (enable/disable learning, pump operation)

Create powerful automations like:

  • Notify when pump runs unexpectedly (potential leak detection)
  • Disable automatic operation when away from home
  • Track energy usage trends over time
  • Integrate with other home automation scenarios

Screenshots

Hardware

[Include 2-3 of your hardware photos here:

Web Dashboard

Home Assistant Integration

Current Status & Looking for Collaborators!

The project is fully functional and has been running reliably in my home. All core features are implemented including:

  • Learning matrix persistence in flash memory
  • Web UI with real-time heatmap visualization
  • Configurable thresholds via YAML
  • Home Assistant integration via ESPHome API

I’m looking for people who want to participate in this project! If you have a Vortex BWO 155 pump and want to upgrade it to a smart, learning system, I’m willing to sell PCBs to interested community members. This is a great opportunity to:

  • Get involved in an active ESPHome hardware project
  • Help test and improve the system in different environments
  • Contribute to documentation and feature development
  • Join a community of smart home enthusiasts working on practical solutions

If you’re interested in purchasing a PCB or collaborating on the project, please reach out!

Repository & Documentation

The complete project (ESPHome component code, web UI) will be published on GitHub soon.

Technical Details

For those interested in the implementation:

  • Custom ESPHome component written in C++
  • Uses ESP-IDF framework for optimal performance
  • Learning matrix stored in flash with checksum validation
  • Intelligent pump control with multiple trigger modes (manual, scheduled, water draw, etc.)

Questions? Want to Join?

Happy to answer any questions about the hardware design, software architecture, or installation process.

Interested in getting a PCB? Send me a message! I’m looking to build a small community of testers and contributors who can help refine the project and share their experiences with different installation scenarios.

The more people testing in different households, the better we can optimize the learning algorithms and features!

I set up a GitHub repository. It now covers three different versions. Some of these versions do not require specialised hardware to work.

Esphome hot Water circulation Controller

Hi there!

I was just looking on how to mod/convert my Vortex Pump to be available in Home Assistant. Ideally with ESPhome.

I have the "timer/clock" variant of the pump and I really hate this thing. Not only it's really unprecise, it also does not sync, not summer/winter time setting and the worst of all, if there's a power outage, the pump/timer defaults to OFF. So I always have to remember to check after an outage...

What I would like you to ask is where I could get one of your PCBs. I thought the KiCAD files would also be available on your github, but it doesn't look like it.

Would be cool if you could sell me one or provide the CAD files. I would like to design a 3d printable housing then for it, so I don't have to modify/cut the existing clock I have.

Would be nice to hear from you. I'm from BW-Germany.

BR,
Fred

Which version do you want to use?

  • PCB that can be plugged into the pump
  • Rond knob display in combination with an ESPHome smart plug
  • m5stack with an ESPHome smart plug

I have bare PCBs for the first two versions. You need to populate by yourself.

Dirk

Best one that I would be most after would be the first one. Red PCB that can be plugged into the pump.
Are you willing to share the KiCAD project? Some kind of BOM would be needed anyway.

Fred

I updated the GitHub repository. Everything needed to build the board is now included.
Send me your postal address and I'll send you a board for free.

Dirk

Project update: a busy week on the UEDX4646 variant

Hi everyone,

a lot has happened with the self-learning circulation pump this week, almost all of it on the UEDX4646 variant with the round 466×466 display.

GUI rebuilt on LVGL

Moved away from the old lambda renderer to LVGL and split the config into modules (hardware in esphome-hotcirc_uedx4646.yaml, the interface in esphome-hotcirc_gui.yaml via packages: !include). The new design is Nest-thermostat inspired: black background, a colored arc ring for the ECO level, big central temperature, subtle status lines. Also added a second page with a heatmap of the 7×48 learning matrix, a 3-frame pump animation for the running state, encoder jitter debounce, and switched the whole UI to English.

Smart plug control fixed

The Tuya plug wouldn't switch. Cause: ESPHome web_server v3 needs POST instead of GET for switch actions — the GETs were silently ignored. Switched to http_request.post with an empty body and it works.

The big bug: water draw detection dead on UEDX4646

The red board worked fine, but the UEDX4646 detected no draws at all. After a long elimination process, the culprit was check_anti_stagnation_() initializing last_anti_stagnation_run_ to boot time, triggering a 30-minute lockout after every boot that silently suppressed detection. Fix: backdate the init by one hour (now - 3600), and move detection from loop() polling to a state callback so it's independent of loop timing.

Polish

Heatmap grid fitted inside the circle, weekday/time axis labels corrected, contrast raised, and the outlet temperature now turns yellow when a draw is detected. Also generated pixel-accurate renderings of all eight display states for documentation.

this is absolutely amazing.
I got here searching for a way to make my vortex smart (trying to figure out why I waste so much energy on hot water). I would be happy to help you test. I would start with variant 1 or 2.
As I don't have an m5 stack, I will try to get it working on a c6 or c3 when I find the time.
I'm from Germany (BW).

I'd recommend to use the Version with the OLED Display.

Check out the Emulator Page:

Regards,

Dirk

it is very nice but i should have all the parts for variant 2 here and with the new customs charges for non-eu stuff I rather not order from China right now.