Green Smart Hot Water Recirculator

I have just completed and shared a new SmartApp I call the Green Smart Hot Water Recirculator (GSHWR for short), which you can find here (and in the IDE):

This app allows you to define multiple events that will turn on your HW recirculation pump, and it supports multiple different ways for that pump to be controlled. It should be flexible enough to fit practically every use case for controlling a circulation pump (or any other switch, for that matter).

As with Smart Alarm, this app essentially centralizes your recirculation control point and eliminates the need to set individual demand events for each device. It also allows for interval timer-based demand, and disabling all demand when nobody is home (i.e., location.mode == “Away”).

Comments, feedback and enhancement requests appreciated.



This looks awesome! Can you use it to control a zwave outlet? For example, if I have a recirculator on a timer now, can I set the timer to always on and control the on/off by the outlet?

Was looking at something basic like this, and would like to have it turn on anytime the house is in “Home” mode (when I get up in the morning and switch from Night to Home or when I get home from work and switch from Away to Home).

It can control anything that reports to be a switch, so yes, you can do what you describe.

Just configure it as a regular (non-momentary) switch, and set the app to turn the switch ON only when the house is in “Home” mode - it will turn on and off as you expect…

Thank you! I will check out the app. I have a similar setup that also includes my water heater:

Having an app to control this is more elegant than my workaround.

Thank you!

I can’t get this install, not sure why. I paste it into a new smart app in the IDE and publish it to me but it never shows up. It looks nice so I hope I can figure it out.

Your documentation is excellent!

Just updated with some minor feature enhancements:

  1. You can set a minimum power level, below which the circulation demand will not be made. I use this with my dishwasher, which draws ~3watts while idle - I only turn on demand above 5watts
  2. Better support for non-momentary switches controlling the circulator - it can be set to turn off the switch immediately after turning it on (for use with the Redy-Temp)


I decided to try using your app instead of webCoRe in hopes of simplifying my setup. While the app does seem to turn the pump on and off successfully, I’m having a couple of issues. Specifically, it seems that the two triggers I’m using to operate the pump are conflicting with each other.

I have a virtual switch setup that turns on when my system is in the Home mode. If that switch is on, the pump should be on. When that switch turns off (when the system is in Night or Away mode), the pump should turn off. The only exception to this should be if the outside temp is 32 degrees or below. I have the app set up to monitor the outside temp via my Nest thermostat (via the Nest Manager SmartApp) and turn on when the temp is 32 or below and off when it hits 33.

It seems as though the two trigger methods are not taking each other into account. For example, if the pump is on because I’m home and the temp hits 33 degrees, then the pump will turn off. On the flipside, if the temp is below 33 degrees so the pump should stay on regardless of when I’m home, and the system goes into Night or Away mode, the pump will turn off.

Is this simply a limitation of the SmartApp in its current form? If so, I may have to go back to using webCoRe for the time being.

Yeah, my app wasn’t designed for your use case. You’re better off using WebCore, or creating a small SmartApp that does what you want.

Sorry about that…

I’m getting “an unexpected error occurred” any time I try to use the timed off feature. Is this deprecated? Or am I just not doing things right?

Sorry - I will try to look into this tomorrow for you.

I should clarify that I’m trying to use the timed on feature (I’d like it to run every 30 min while I’m in Home mode) for 3 min. So I have the timed on feature set for 30 min, but whatever I set the timed off to (3 min in this case), it gives me that error.

The problem is fixed in latest GitHuB, version 2018.03.06

Thank you for finding and reporting the issue…

Awesome! I just updated. Thanks a lot. No more errors. This is a really cool app!

1 Like

Thanks for this app! I am curious if anyone has any suggestions to configure the HW recirc pump so it only triggers once every, lets say, 30 minutes? This would be useful for me. My recirc pump is triggered based on motion, but I don’t need to cycle the pump if it has recirculated the hot water recently.

I use this in webcore

I just posted an update that allows you to configure the minimum number of minutes between activations of the pump switch. The default and minimum is 1 minute (which was silently being enforced by the code already), and you can specify up to 120 minutes (2 hours).

Thanks for the suggestion - it was simple because the logic was already in place.


v2018.11.28a released at 11:00am EDT

  • Fixes latent type conversion anomaly

Thank you for the quick response. I am not currently using WebCore so this solutionwill be a bit more complicated than I hoping but thank you for providing the suggestion.

You are awesome. Yeah, after I posted this I started looking more closely in the code and found the 1 minute restriction logic and updated it, but this is great to have it configurable in the app so I can easily play with the timing and hopefully helps others as well. Your responsiveness and willingness to help the community is appreciated.

1 Like