Water Recirculation Pump Switch

Posted by Fred C (W6BSD) on Oct 06 2021

When we re-did our house plumbing, we asked our contractor to install a water recirculation pump. A water re-circulating pump is used to circulate hot water so that any faucet or shower will provide hot water instantly upon demand.

What is a recirculation pump?

A typical home can hold between 2.5 and 3.5 gallons of water. Every time the faucet is opened and we wait for the hot water to arrive, these 2 to 3 gallons of water are wasted. California is in constant drought, and we often have water restrictions, but in general, saving water is always a good idea no matter where you live. These few gallons of water saved every day become a significant saving at the end of the year. It is hard to calculate the total savings because of many factors, but a U.S. government study estimates water savings of up to 12,000 gallons for a house with four faucets. It is also very pleasant to have hot water immediately when we open the faucet.

Re-circulation pump schematic
Re-circulation pump schematic

The downside of maintaining hot water 24/7 in the pipes is more energy consumption. Even with good insulation, re-circulating water causes heat loss in the water heater. To avoid too much heat loss, it is a good idea to run the re-circulating pump just before you are likely to need hot water. For example, there is no need to run the re-circulating pump in the middle of the night when everyone in the house is sleeping.

Pump Controller

We mainly use hot water in the morning. This is why I run the pump for a couple of minutes until the water reaches a particular temperature every 30 minutes from 7 AM to 8:30. I do the same at lunchtime and dinnertime. I also wanted to have a "button" to force the pump to run if needed hot water outside of the regular operating hours.

ESP8266 installation
ESP8266 installation

To manage the pump, I decided to modify an old broken Belkin switch. Two boards are inside this model of Belkin switch. One board is the power board; this board carries the 120V, it has the relay and a switching power supply to power the second board. The second board is the microcontroller. I have replaced the microcontroller board with an ESP8266 Mini D1.

The ESP82661 integrates, among other things, a 32-bit processor, 4Mb of memory, 9 GPIO, I2C or SPI, UART, and a WiFi radio.

Belkin Switch
Switch with the temperature sensor cable

I use a one-wire temperature sensor, the DS1820, to monitor the temperature. I drilled a hole on the side for the sensor's wire. For convenience, I am using a 3.5mm jack to connect or disconnect the sensor. Using plumber tape, I have installed the DS1820 right after the pump against the pipe, under the insulation.

Then I wrote a MicroPython program for the ESP8266. The program reads the file times.dat, which contains times of day the pump should be on and off. A web interface allows me to see the status of the pump. Using that same web interface, I can force the pump on or off. If I turn on the pump, it will stay on until the water in the pipe reaches a specific temperature defined as a constant in the program.

Belkin Switch
Screen shot of the web interface

The program, written in python, can be found on my GitHub account at the following address 0x9900/blkin


  1. The ESP8266 is like an Arduino, but on steroids 


 Arduino    DIY    ESP    Python