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.
Problem:
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
1.
https://www.amazon.com/gp/product/B000E78XHG
2.
https://www.amazon.com/gp/product/B01C7S0P2K
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.
https://www.amazon.com/gp/product/B073GV2PQY
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.
https://www.amazon.com/gp/product/B01GTX7IVK
https://www.amazon.com/gp/product/B071ZRQN2K
https://www.amazon.com/gp/product/B0087X7262
https://www.amazon.com/dp/B01EHGWU64
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.
https://community.smartthings.com/t/beta-z-wave-tweaker
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!