Automating a Water Recirculation Pump System (Home Assistant + Smart Plugs)

To improve the hot water consumption in a daily routine, water recirculation pumps are very well used across the country. Water recirculation pumps are responsible for circulating cold water from plumbing lines back to the central heating boiler, opening space for new fresh and hot water.

This process is very sensitive if not handled smartly, and it can cause higher energy consumption, water waster or even not attend the family expectations.

Previously, I had a 15 Amp 7-Day indoor plug-in digital timer connected to my water recirculation pump. I can’t say it was a perfect solution. My biggest concerns with this solution were:

  • It only supports 7 ON/OFF programmable events: with my investigations I noticed that only 7 programmable events are not enough for this task.
  • It’s an offline solution: I can’t control this solution from my phone, tablet or voice assistant. Every configuration change requires me to access the digital timer physically.
  • Poor on-demand experience: the digital timer is very good with scheduled events, but I can’t turn on the water recirculation pump on demand if I need it

My current solution is using a Raspberry Pi 4 with Home Assistant Operating System and a Philips Smart Plug connected to a Philips Hue Bridge.

First things first: YOU DON’T NEED TO HAVE ALL THESE SPECIFIC DEVICES TO MAKE YOUR SOLUTION WORK. A simple smart plug connected to an app with good a scheduling tool is enough.

My solution is using all these specific devices because I did set up my house around Phillips Hue and Home Assistant. Here are some of my reasons to use these specific devices:

  • Philips Hue is a very strong platform. I like their solution, robustness and user experience. The Philips Hue Bridge controls my set of lights and as I don’t want to have another app/platform, I decided using a Philips smart plug.
  • Home Assistant is an open source home automation system. It allows me to control from Apple Home Kit devices that originally were not supported on it.  Home Assistant also is a platform that allows me to center all my automations in a single place, as I don’t want to use multiple apps to control my automations.

After registering my Philips Smart Plug in the Philips Hue Bridge, the smart plug became available in Home Assistant due their integration. I gave it the name “Water Recirculation Pump” (as shown in the following picture).

In Home Assistant I created my initial automations using the existing wizard. It’s very straightforward to be done.

Home Assistant – “How do you want to create your new automation?” Start a new one from the scratch. 😎

In total I created four automations: three automations to control the water flow during morning, afternoon and evening/night, and a fourth automation to shutdown the water recirculation pump if running for more than 15 minutes (this is a secure shutdown system to turn off the water flow if something goes wrong, or if my family leaves the recirculation pump on after an on-demand request).

List of four automations created in Home Assistant.

In every automation, I created a time pattern trigger which is executed every 30 minutes, during a specific time window (morning, afternoon, evening/night), which leaves the recirculation pump running for 4 minutes and 30 seconds, and then turns it off. The next 30 minutes window starts in 25 minutes and 30 seconds, where the warm/cold water will be replaced by hot water.

The following image demonstrate the logic

Sequence of cycles of 30 minutes.

Why 4 minutes and 30 seconds every 30 minutes?

I noticed that 4 minutes and 30 seconds is time enough to circulate the water from the boiler to the shower in the highest floor. I live in a three level house plan with three bathrooms. If you live in a higher or bigger house, probably it can take longer to recirculate the water.

I also noticed that, water can stay hot/warm for the next 25 minutes and 30 seconds between every 30 minutes window. This is a period of time which works fine for my family, but maybe giving your wall insulations, weather conditions and  family expectations, these 30 minutes windows can be too much, probably a 20 or 25 minutes window work better. Try to understand what it’s the ideal scenario for your house/family.

Giving my learnings and impressions, another important recommendation is: avoid leaving the recirculation pump running for very long. If the water recirculation runs for a very long period of time, it’ll mix too much cold water with the hot water in the boiler, and the boiler will not have enough time to warm up the water (because the recirculation pump is still running). In this situation, your boiler will fall in a condition where water is flowing all the time through the pipes and not getting hot enough as you expect. Think about it.

My current configuration is:

 StartEndCycles of 30 minutes
Morning Automation06:00 AM08:50AM6
Afternoon Automation12:00 PM01:50PM4
Evening/Night Automation04:30 PM11:50PM15

The Automation in Home Assistant

As mentioned, there are three automations controlling the water recirculation pump during beginning of morning, beginning of afternoon and evening/night. I don’t keep the automation running all they day, just during the periods when our family really needs hot water for showers and cooking.

The following pictures shows the existing automation for the period of evening/night.

The secure shutdown is important to avoid leaving the water pump running for very long and wasting heat, water and energy. My current automation handling it is the following:

This is still a work in progress.

Suggestions are always welcome.

// by Fernando Henrique Inocêncio Borba Ferreira


Arduino e Microsoft .NET Framework – Integrando os dois mundos

Arduino é uma plataforma eletrônica de hardware livre. Baseada em um microcontrolador Atmel AVR com suporte de entrada/saída embutido. O principal objetivo da plataforma é criar ferramentas acessíveis, de baixo custo e fáceis de serem utilizadas.

Neste post, será apresentado um modo de comunicação entre uma aplicação Microsoft .NET e um hardware Arduino.


Leia mais »