Smart Hot Water Recirculation Solution

These forums have been so helpful to me. I’d like to pay back my debt by sharing my experiences with smart hot water recirculation. As far as I can tell, I did things a little differently than others.

Long runs of pipe between where water is heated and the hot water is actually used results in long wait times and much water loss before hot water is available.

Predictive (Dumb) Solution:
Deploy a Hot Water Recirculating System such as


This involves installing a pump (1) on the hot water line leaving your water heater. The pump is active according to a schedule that predicts hot water need. The schedule is manually programmed on the pump (like what is done with some dumb christmas/landscape light timers). In addition to the pump, a heat sensitive valve (with 1 or another as 2) is placed at a sink at/near the end of each hot water pipe run. The valve opens and allows flow between the hot and cold water supplies under the sink when the temperature of the water drops below a fixed temperature (~95 degrees Fahrenheit). If the pump is on while a valve is open then the cold/tepid water in the hot water line will be pumped through it and will be returned to the hot water heater. A valve will close when the temperature of the water meets its mark (~95 degrees). If all valves are closed, the pump has no effect (waste!).

Event Driven (Smart) Solution:
Set the pump’s schedule to “always on” but turn it on and off by controlling a smart outlet.

The vendor has confirmed that this is supported behavior for the WATTS pump.

The smarts is provided by a SmartApp that controls the valve pump using temperature sensors at the sink valves.

Alternately, a KSD9700 temperature switch might be used instead of a DS18B20 temperature sensor. The problem I had with the switch were their discrete on/off temperature settings. I found that my water never got hot enough to toggle a KSD9700 35c (95f) sensor and seldom got cold enough to toggle a 30c (86f) sensor.

If using the DS18B20 temperature sensor, be sure to wire it to the Fibaro device before including it in your SmartThings network in order for the “with Temperature” variant of the Device Type Handler to be used.

I also found that it was much better to mount these sensors to my copper pipe than to the plastic valves. I bent the 3 pins of the TO-92 package to mate with a 3-pin fan cable that is wired to the Fibaro device. This way the device can be placed in a more accessible location for battery maintenance.

The temperature switch/sensor is used to tell when turning on the pump will have any value (the temperature is cold enough for an open valve). This temperature threshold will depend on where the sensor is mounted and how hot the water is when fully heated (when the valve closes while pumping). My sensors measured over 91f when the valves close so, for me, a threshold of 90f works well.

Rather than always pumping hot water when it is cold, I decided to add more smarts in the way of a “proximity sensor”. That is, I only want the pump to work if that work will benefit me (I need hot water now). I did this by monitoring the state of smart lights/switches at the sinks.

The actual SmartApp is just a CoRE “piston” that says if the temperature is below threshold (valve is open) and any of the proximity lights are on, turn on the pump. Another CoRE piston negates this logic to turn it off. So that the pump does not turn on and off quickly around this threshold and to avoid unnecessary battery drain on the Fibaro device, I have configured the Fibaro device to poll for temperature changes once every four minutes. They are also configured to only report change in 0.5c degree increments.

The SmartThings Z-Wave Tweaker was used for all of this configuration.

I actually have two pipe runs, each with a valve/sensor at the end and each with its own proximity lights associated with them. If there is a need at either the pump runs. If there is a need for neither, the pump stops. Need is evaluated when temperature is polled and lights are switched.

I hope this helps someone!


What a clever idea and an excellent implementation of off the shelf items to do far more than they are intended to do. Would you mind sending or posting some pictures of the sensor array? I installed a similar pump system and would consider emulating your setup.


thanks for the details of your setup.

be aware the thermostatic valves have a short life/high rate of failure in which they tend to convectively leak hot side to cold. My experience is they are junky performance after 1-2 years, maybe due to fouling (1 out of 2 so far)… So it’s not a safety issue but it increases energy losses compared to no-valve, and a new valve works better than an old valve, but they are a little pricey like $50. Even failing, it still gets you hot water faster.

I have thought about replacing it with a motorized or solenoid valve driven by home automation. Imagine the wrong type of solenoid snapping shut or open, I might crap my pants.

I did not know about problems with these valves. I’ll have to keep an eye on that.

I don’t know of an alternative thermostatic valve solution. Apparently, Grundfos owns patents on this hot water recirculation solution and manufactures the valve WATTS sells. They also sell their own but I don’t suspect there is a difference.

Replacing these valves with smart solenoids would actually be an improvement on what I have done. My temperature thresholds are tuned to match the behavior of my (sensors and) valves (close at ~95f) so that I won’t bother pumping when the valve is closed. If I had simple solenoid valves instead, I could set whatever threshold I want and always open/close the valves when I turn on/off the pump.

Here is an illustration of the device & temperature sensor wiring

Rather than connecting the sensor directly to my device, I used a 3-wire motherboard fan cable (example referenced above). The pin spacing of the cable’s female connector is close enough to the pin spacing of the DS18B20 TO-92 temperature sensor package that, with a slight splay/bend of the leads, one can just plug it in. I performed surgery on the (other) male conductor to remove its shroud - leaving nice solid pins on each wire which are connected to the screw terminals of the device.

I used thermal adhesive to bond the flat side of the DS18B20 temperature sensor to a copper pipe near the valve’s inlet. I can now plug and unplug the sensor from the device and locate the sensor in a comfortable location.

1 Like

I can confirm the short lifespan of the valves. Mine lasted less than an year and after replacing them about 4 times I have since removed them and quit using the pump.

At some point they fail and your cold water faucet is turned into a hot water faucet and you have the opposite problem of having too much hot water in your cold water faucet and needing to run it for a bit to have it cooled off.

I have also thought about a solenoid approach but my sink does not have an outlet under the counter to run it. That would be a much better solution if you can pull it off

Also the Watts brand looks like a repacked Grundfos kit. Grundfos makes the pump and the valves and the pump is of very high quality the valves are not.

It seems like one of these connected to a smart AC outlet could be used instead of a thermostatic valve.

Smarts would open/close the valve by turning on/off its AC outlet coincident with turning on/off the pump’s AC outlet. This could be done at any threshold temperature(s) you want using a temperature sensor.

While this would work under my kitchen sink where I have AC, I would need a battery powered solution under my bathroom sink where I do not have AC. Either that or I would have to add AC.

solenoid valve is probably the wrong way to go. Usually they open like a gunshot, and they probably close with water hammer. Slow-action “solenoid” valves are $200+.

A motorized / floating valve will be a tiny hum, with manual override if you pick the right one. such as “Zooz Z-Wave Plus Valve Control ZAC03” if you can find it.

It is not realistic to look for a battery-operated valve.

Nice job Ross Tyler. I’ve been considering the same thing. While researching I stumbled onto this.

Thanks so much! I’ve got very little copper to tie into because the shutoff valves are right up against the drywall and I’d rather not extend them just for this. You alluded that stainless steel supply hoses aren’t optimal for temperature sensing – did you try that?

Realize that the sensor is just used to answer the question “Is the valve open?”. Ideally, the valve itself would answer this question but, alas, it can’t. I believe that the valve is designed to close when the water temperature in the valve is > ~95f. Therefore, as close as possible, we want to measure the water temperature in the valve when it closes.

When the valve is open and the pump is on, the water temperature will rise until the valve closes. I found that when I mounted the sensor on the copper pipe close to the valve inlet, this measured temperature was higher and was reached quicker than when I mounted the sensor on the valve inlet itself. This makes sense because the thermal conductivity of copper is relatively high - empirically higher than this plastic valve. You should get a quicker, more accurate sense of the water temperature by measuring the temperature of the copper pipe.

Even though the sensor on copper is better, you can still put it on the valve. All you really want to know is what the peak temperature is. This temperature will reflect when the valve closes. A sensor on the valve will still show a peak temperature but because of lower thermal conductivity this will lag the temperature inside the valve and might be lower than on copper. In my scenario, this lag time is really not that important because, at most, I am measuring the temperature every four minutes. The lag time is far less than that.

On one of my sinks I was able to mount the sensor on copper pipe. On the other I have a problem similar to yours where the copper pipe is not exposed. There I mounted it on the compression nut on the copper pipe that connects to my shutoff valve. Empirically, a sensor mounted here measures temperature rise quicker and higher than one on the plastic thermostatic valve.

Regardless of where the sensor is mounted, you still need to answer the question “Is the valve open?”. To do this, you should turn on the pump when the water is cold and measure how hot it gets. I changed my device configuration temporarily to report temperature often to evaluate this quickly. Once you determine this temperature, you should back off a bit to set your threshold in order to answer the question more reliably. That is, if you measure (as I did) a maximum temperature of over 91f, set your threshold to, say, 90f. I can say, at 90f, surely my valve is open.

That is interesting. That solution seems to combine the valve and pump into one unit under the sink. The pump requires AC. The pump would be heard. A pump would be required on each pipe run. A wired switch or their remote is used to turn on the pump and a temperature sensor is used to automatically turn it off. To a large extent, it does the same thing that my solution does. I can’t really speak to the reliability of either but the Watts/Grundfos solution seems (?) more popular. We differ in the way the need for hot water is expressed. They have their own dedicated switch or remote. I use my existing (smart) light switches at the sinks (which, I think is more natural). I suppose, however, these kinds of smarts might be added to their solution.

A plus for them is that the level of expertise for installing it is less than the Watt/Grundfos system. If you can plumb your sink you can add this. The Watt/Grundfos system is hard-piped into my system at the water heater. I paid a plumber for this. I probably wouldn’t pay a plumber to install theirs.

Thanks very much again. Super helpful. You did a GREAT job with this novel work

Hey Ross, quick question. Amazon reviews say that the Fibaro FGK-101 ZW5 Z-Wave Plus Door/Window Sensor that you linked to is not SmartThings compatible. Apparently the latest firmware is z-wave plus and isn’t seen by SmartThings at least as of August?

Can you confirm this is the part you used? Anybody have any substitutes?

Also any thoughts on attaching the temp sensor to pex? I’m not yet sure what’s up under my furthest fixture. There might be a copper stub out or it might be pex all the way. I can probably work something up without too much difficulty. Worst case glue the sensor to a brass fitting. The temp doesn’t need to be perfectly accurate, just consistently relative. In my case I’m going to run a dedicate 1/2" pex return so I won’t need the valve.

I have the same hot water circulator and don’t really like the hot water in the cold-side pipes. Even before I got my ST hub and considered automating the pump with a button instead of the built-in timer, I considered running a dedicated water return line back to the cold side of the tank and including a check valve. Even though our master bath is on the second floor, I have access to the plumbing chase and it would be simple to run Pex back down to the basement for this purpose. Depending on the flow rate of the pump, I might even be able to use refrigerator ice maker water supply line, but I’m guessing it’s probably too small. Running a return line would eliminate the warm water in the cold pipes. Then it’s just a matter of making sure the hot water is there when you need it, be it button, motion sensors, or timer activated. … Or all three. :grinning:

It is definitely compatible.

Mine are paired securely.

Be aware that there are two Device Type Handlers for this.
In order for the “Fibaro Door/Window Sensor ZW5 with Temperature” DTH to be automatically chosen, be sure to have the DS18B20 temperature sensor wired in when you pair it with your hub. Otherwise, you can use the IDE to change it.

The temp doesn’t need to be perfectly accurate, just consistently relative

Yes. I am not sure what my valve is made out of but it isn’t metal. I tried my sensor there and it would have worked - it just would have measured a relatively lower temperature at a relatively slower time than the copper.

1 Like

Thanks for the confirmation. At the very least I think I have a brass fitting that I can glue the DS18B20 to, or I suppose I can splice in a section of copper just for the sensor.Where do you have yours? At the farthest spot from the water heater?

Also Ross, how are you controlling the pump? Are you using a smartapp or a webcore piston? I’m pretty deep into webcore so I’ll probably just make a piston for it…

I have two main branches off my water heater. At the manufacturer’s suggestion, I have a valve at the end of each branch. Pumping while the valves are closed is a waste of time so I measure the temperature close to each valve and have evaluated each so that a measured temperature under a characterized threshold infers the valve is open. One sensor is mounted on the copper supply pipe under a sink, the other is mounted on the metal compression nut on a sink supply hose. I tried other places but these worked best for me.

In order to express the need for hot water at any location on these branches, I monitor nearby smart lights. If any nearby light on either branch is on and the valve is open on that branch (the measured temperature is below the characterized threshold so the pump will be effective), I turn on the pump. Otherwise, I turn off the pump. The pump is controlled by a smart outlet.

I use a simple webCoRE piston for the smart app

1 Like

Oh I see. My setup would be a bit different because I plan on installing a dedicated return. I also plan on using existing motion sensors to trigger the pump. Basically:

If motion kitchen OR bath OR Laundry & AND pipe temp < 90F run pump.

This should keep the pump from running on every motion event if, say, I go into the laundry room and then the kitchen a minute later.

Hey Ross I’ve got a fibaro sensor on order from Amazon but its not here yet How’s the battery life? What’s the update interval like? Seems like if its providing continuous temp updates the battery life would suffer. Is the update interval configurable in the DH?