Hacking a Grundfos Comfort AutoAdapt recirculating hot water pump for ESPHome

I’ve seen a few other posts on here about integrating hot water recirculating pumps with HA, so I thought I’d share my solution.

Some time ago, my original pump broke and I replaced it with a Grundfos Comfort AutoAdapt pump. Supposedly, this pump learns when you use hot water over a 2 week period and then automatically runs the pump when it thinks you’re going to need it. This has never worked very well for me, and I wanted to get it under HA control so I could do things like set it to come on early on days when I’m getting up early. Plan A was to put it in “always on” mode and use a Shelly relay to control it, but this was scuppered by the fact that the pump defaults back to “Auto Adapt” mode every time it it turns on.

So, I decided to take it apart and see if I could force it to be in “always on” mode. After a bit of reverse engineering, I realised that simply removing the control PCB would do exactly that, but by that point I had a better idea: replace the control board with a custom PCB with an ESP32 on it. The advantage of this over an external relay is that it can get access to the internal temperature sensor of the pump, and also the external temperature sensor that measures the water flow temperature.

The pump is actually a pretty nice design: it has three PCBs - a power supply board, a driver board for the brushless motor, and this control board. This makes it quite easy to create a drop-in replacement for the control board, re-using the existing PSU and motor controller.

On the right is the original PCB. This has a PIC microcontroller on the other side.

On the left is my custom PCB running an ESP32C3. The pump runs at 14V, and the stock control board uses 5V from a regulator on the pump board, but I was concerned that the ESP32 would be drawing too much current from this (from what I could tell, it was rated at 100mA) so I put in a separate switching 3.3V supply.

Status LEDs upgraded from orange to blue :slight_smile:

I’ve set it up so that it can be turned on and off by HA, and when it’s on, it runs the pump until the return temperature is within 10°C of the flow temperature, and then stops until the difference is more than 15°C. The button on the front activates a 30 minute boost that overrides the normal control.

If anyone is interested in doing something similar, or wants more details, I’m very happy to share the PCB design and ESPhome config.