Ecobee setAway

Continuing the discussion from Hub Update 1.1.7:

Yea! This is an excellent add! Now how about a setSleep (or setNight). That would complete my thermostat needs. Thanks.

UPDATE: setAway worked perfectly today. Thank you for adding this!

I had several rules that set the thermostat in an away mode and I had to set the heating and cooling setpoint temps is each rule, with one thermostat per rule. With the new setAway command, the 'climate' Away is established in the thermostat and I just have to set the program mode with the setAway command to all thermostats in a single rule. Much easier.

@bravenel @mike.maxwell Can we get a setSleep (or setNight or setAsleep) too? I have two thermostats (and two HVAC units) and each has it's own unique heating and cooling times and temps. It would be far easier to set those climate paramters in the thermostats themselves, then just issue the setSleep command to each thermostat at the same time in the same RM rule. I can get around it, but it requires redundant RM setups (with the unique heating/cooling setpoint temps) for each thermostat.

In my case I program the thermostat 'Sleep' mode to turn at a midnight in the thermostats. But, if anyone is home (HOME mode) AND it is between (10:00 PM and 5:30 AM) AND there is no motion detected for 15 minutes then RM will trigger the thermostat's Sleep/Night mode. Right now I have to do that once for the upstairs thermostat (where everyone sleeps and it is more comfortable) and once for the downstairs thermostat (where the temps have a broader variance range). A setSleep would allow me to keep my climate parameters in the thermostats and have a single RM issue a command to all thermostats when the program mode (Home/Away/Sleep) should change.

Thanks ... and keep up the great work. I appreciate it!

1 Like

I plan to check when I get home, but is there also a resume program command? If so, I think this would finally cover what I need with the Ecobee integration!

There is a resumeProgram() command available since the original Ecobee integration. In Rule Machine you need to set up Custom Commands for that and setAway(), but then they are available to use in rules.

Did you have to create a custom command in RM to leverage the setAway? I have done that but wanted to make sure I am not missing something else.

I did create a Custom Command for setAway in RM. Then I could select the thermostat and invoke that custom command. Works well for me.

1 Like

Thanks for the reply to me earlier. I can confirm this is working well for me!

How do you set "Home" mode? I need the ability to prevent away mode when someone ends up staying home on a day that is normally set to away in Ecobee.

You cannot set the program to 'Home', but you can resumeProgram(). resumeProgram() will return the program mode to whatever your schedule is set to in the Ecobee thermostat. For Example, my 'Home' is scheduled from 5:30 AM - 11:00 PM; and 'Night/Sleep' is scheduled from 11:00 PM - 5:30 AM. When everyone leaves (based on Life360 presence sensors) the setAway() sets the thermostats to 'Away' mode. When the first person to arrives (again, Life360 presence sensor) resumeProgram() will either set the thermostats to Home or Night depending on the time of that event.

The problem with this is that I would like the house to be at temp around the time the person gets home. If its trigger by Life360, then there would not be enough time for the heat/AC to catch up.

Our work schedules are basically the same for the most part. But sometimes one of us is sick or its a holiday, those are the times I would like the Ecobee to have Home mode on hold.

I guess I could just set up time triggers in HE to trigger a resume command instead of using presence.

If your schedules are regular then a time-based trigger should work well for you. Our schedules are not consistent so we use presence triggers and realize we will need to wait for the HVAC to kick-in and catch up after the first person arrives home.

I don't think that I understand the logic of only adding "setaway" and not adding the other 2 comfort settings...

For example, I have sleep comfort setting set to 11:30PM in Ecobee. I have a routine for "Good Night" and one of the actions is to set the thermostat to "asleep".
If I go to bed at 10:30PM, with a "setAsleep" command, I can set it to it and then at 11:30PM, the Ecobee will continue on with sleep schedule, going uninterrupted.
With a "resumeProgram", between 10:30PM and 11:30PM, I'm stuck with some other evening program for a whole hour. I would have to create another rule that mimics a perfectly good configured comfort setting already in place.
It just seems to be a waste of "resources" to have to create another rule and introduces another potential point of failure, when we could simply take advantage of Ecobee comfort settings and remote sensors used per comfort settings.

So, my question is why doing it for "setAway", but not for the other 2 settings?

Does these rules look correct?

So looking over my rules. It would appear every time the rule goes false its going to keep sending the resumeProgram() command.

Is there a better way of doing this??

I set my comfort setting (Home, Away, Sleep heating and cooling setpoints) in the thermostat app (NOT in Hubitat). I also have a schedule for Home and Sleep in the thermostat app, but I do not have any time scheduled for the Away comfort setting. I use Hubitat to detect when the last person leaves (presence) and Hubitat applies the setAway() command to my thermostats. When the first person arrives home (presence) it applies the resumeProgram() command to my thermostats. resumeProgram() will resume the program that is scheduled in the thermostat app so it will set the thermostats to the appropriate Home or Sleep setting based on when that person arrives.

Looking at this. It really makes no sense to use their away schedules.

I can’t rely on precense because I have people at my house all the time when we arnt home.

I do not use the Away schedule. 24 hours a day is scheduled for either Home or Sleep. Presence (or lack thereof) controls Away mode. Our use case assumes that if at least one of our five presence sensors is home, the thermostat should not be in Away mode. If none of our presence sensors are home the thermostat should be in Away mode. If your use case cannot rely on presence for Away mode ... then this will not work for you.

I can but I need to use motion sensors to trigger it or not.

Like my examples above.

So more modifying. I added a second rule and removed the false action. This stops the command resumeProgram() from happening every couple minutes.

So basically when away, it does the following.


  • Confirms no motion on all motion sensors
  • Checks if it's between the time 6:30am-9:55pm

Action on True

  • Delay for 45 minutes - Cancel on Truth
  • Sends a Custom Action setAway() to the Ecobee
  • Turns on a virtual switch called "ecobee-away"

The second rule does the following....


  • If any motion is active on any motion sensors
  • Time is between 6:30am-9:55pm
  • If virtual switch ecobee-away is on

Action on True

  • Sends the custom action "resumeProgram()" to Ecobee
  • Turns off the virtual switch "ecobee-away".

Found this thread a bit late but wanted to contribute nevertheless. I created a Hub variable and used that to ensure I don't trigger resume unnecessarily:

Screen Shot 2021-11-24 at 14.49.53

Download the Hubitat app