Water Recirculation Pump Switch

Posted 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.

Switch with the temperature sensor cable
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.

Screen shot of the web interface
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