*** No longer supported *** [RELEASE] Resilient My Ecobee Devices and ecosystem V6- migrated to custom capabilities & automation (presence, comfort settings, and more)!

Hi, see previous post here

Reauthorizating the app worked like a charm. Thanks Yves!

I’m still on version 3.3.2 and the integration seems to have stopped working for me. My automations don’t work anymore and the temperatures never get updated. I stopped getting emails for new updates a while ago that’s why I haven’t been keeping up. how do I go about updating to the latest version? Thanks in advance.

Hi, I’ve already responded to your email.
Please follow the procedure that I sent to you more than 2 years ago.

P. S. I don’t send any email updates anymore, you’d need to use the sellfy (e-commerce server) download link or your sellfy account to get minor updates.

Thank you for the fast response. Sorry I must’ve missed the last email you sent. Got it updated and back up and running again. The fact that it’s been working great for me for the past 2 years without an update shows how stable your DTH is. Great work and thanks again!

1 Like


Just want to inform my contributors and all ecobee users that new version of MyEcobeeDevice(v5.9.9z) & MyEcobeeInit (v4.1c) can be downloaded at my e-commerce solution provider (sellfy) using the original download link.

The new minor version corrects some icon issues following some security changes in the iOS/Android ST classic mobile app.



You basically just need to install the DTHs once, and forget about it. The code will recover and resend any failed thermostat or switch command in the next hour window after an ST or ecobee outage. No other ecobee implementation (and especially the ST stock device) can match this level of resilience and reliability.

If you’re are a contributor to one of my support packages (and I have access to your ST account), the upgrade has already been done for you. You don’t need to do anything, everything has been taken care of.

On top of it, there are many complimentary smartapps designed for My ecobee DTH and are located at my github. All ecobee smartapps are explained at the ST community wiki (all ecobee* smartapps):


You can also refer to the 1st post of this thread for all the use cases supported.

My Ecobee DTHs are available at my store:



Does anyone know if there is a way to change the Ecobee mode based on a switch (only)? The SmartThings presence (via cell phone) doesn’t really work reliably (for both me and my wife), so the ecobeeAwayFromHome app doesn’t activate most of the time.

I didn’t see anything like this in the My Ecobee wiki, but maybe I missed it?

What I’d like to do is set up a virtual switch that I can then activate via my Amazon Echo (with something like “goodbye” and “I’m home” routines that turn this virtual “away mode” switch on/off). When the switch is turned on, I want the Ecobee to switch to Away mode and when it gets turned off (on our return), it would do the ecobeeResumeProg function.

Unfortunately, I can’t use the ST “hello” modes as I already have them set up for time of day functions (nighttime, daytime, bedtime) and would have to duplicate them all (and reprogram all my smartapps) to add in presence (e.g., “nighttime home” vs “nighttime away”, etc.)

If nothing like this exists, I’ll look at making a modified version of ecobeeChangeMode/ecobeeResumeProg that just works off a switch.


Hi, you just need to create some virtual switches which trigger the right routine (Away or Home) using the option “Automatically perform the routine” when something turn on/off using the said virtual switch(es)

That way you can reuse your existing routines and the same ecobee smartapps (ecobeeResumeProg and ecobeeChangeMode).

That’s what most of my contributors do for this use case.



That sounds good, but I’m not sure how to do it.

I have a virtual switch for “Away” and I want to run ecobeeChangeMode to switch the thermostat’s mode to Away when that switch is turned “on”. But ecobeeChangeMode won’t work off a switch and the ST Routines won’t let me run the ecobeeChangeMode. Routines will let me set the temperature of the thermostats but not the Away mode (presumably generic functionality and not yours).

I see that I can automatically run the routine when the virtual “Away” switch is turned on, but I don’t get how to change the thermostat’s mode via the routine.


Hi @phlepper,

Please refer to the ST community wiki.Everything is documented at the wiki under the ecobeeChangeMode wiki entry.

Look under configuration for an example for the Away mode:



Yeah, I had looked at that already, but I didn’t want to use the ST Hello Modes. I have them currently set up based on time of day (Daytime, Nighttime, Sleeping) and adding in “Away” as an ST Hello Mode would require a lot of changes and since everything else in the house is working fine and it’s just the ST presence detection that isn’t, I was hoping to use a virtual switch that would be “on” when no one is home and “off” when anyone returns.

That part I can do, but I don’t know how to have EcobeeChangeMode work off the switch change (versus an ST hello mode change).

I may have to bite the bullet and create something like a two-phase hello mode, changing my 3 modes into 6 modes: Home-Daytime, Away-Daytime, Home-Nighttime, Away-Nighttime, etc.

As an aside, I’ve been looking online at how people use the hello modes with just an “Away” mode (e.g., Daytime, Nighttime, Sleeping, Away), but can’t figure out how they set the house to the correct mode when they return. I can’t figure how to set the house to, for instance, Daytime versus Nighttime depending on the current time. A lot of folks are using Webcore (I’m not) so maybe that has more capabilities to set the mode. Anyway, that’s not an Ecobee question, but is the reason I’m thinking I’ll have to change my 3 modes to 6 modes versus just 4 (adding an Away mode).


At my github, the new version of ecobeeChangeMode (v2.0) can use a virtual/physical switch to change the ecobee’s comfort settings.


Awesome response, thanks!

In setting up the new ChangeMode, it appears there is an error in the input for the switch:

Looks like:

input "aSwitch", type:"capability.switch", required: false, description: "Optional"

should be:

input "aSwitch", "capability.switch", required: false, description: "Optional"

I’m not entirely sure, but the original just asked for free text to be filled in and the latter lists switches.

With that change, I was able to test it out and it works as expected.

Any chance I could get a similar change made to the ResumeProgram (to use a virtual switch instead of presence?)

Thanks a ton!

Yes, there is a version 2.2 at the github for that use case.


Thanks for the quick response (again)!

Ultimately what I wanted was to use one switch, so the ResumeProgram should be triggered by the switch turning off, not on. I modified it on my end to use “off”:

in preferences:

section("Or the following virtual/physical switch is turned off)[optional]") {

in initialize:

if (aSwitch) {
    subscribe(aSwitch, "switch.off", offHandler, [filterEvents: false])

and changed onHandler to offHandler:

def offHandler(evt) {
    log.debug "$evt.name: $evt.value"
    def message = "EcobeeResumeProg>switch $aSwitch turned off, about to resume program"

This works perfectly for my needs. You may want to make it more generic to allow both the ChangeMode and ResumeProgram to use either on or off, but I just wanted to use the one switch, so I only need the one case (on in ChangeMode and off in ResumeProgram).

Thanks for helping me with this!



It looks like there is an error in the ChangeMode code when no modes are specified (as in my case). It seems like it is changing to Away mode whenever the mode in the house changes (to any mode).

I’m not great at Groovy code, but it looks like this

if ((newMode != null) && (!foundMode)) {
	log.debug "changeMode>location.mode= $location.mode, newMode=${newMode},foundMode=${foundMode}, not doing anything"

is the culprit. I’m assuming since I don’t set any modes (just the switch), that “newMode” is null and so the “skip” isn’t fired and it drops down to the next section which performs the “takeAction” code.

Seems like maybe the if statement should be something like this?

if ((newMode == null) || ((newMode != null) && (!foundMode)))

or maybe the initialize function doesn’t subscribe to mode if newMode is null?

if (!manualFlag) {
    if (newMode) {
        subscribe(location, "mode", changeMode)
    if (aSwitch) {
        subscribe(aSwitch, "switch.on", onHandler, [filterEvents: false])
} else {


Yes, the initialize function should not subscribe to the ST mode change if null.

It’s been corrected in the new version.



Thanks for the changes. I’ve got it all set up now and tested and it seems to be working correctly.

I have one additional issue now and I’m wondering how folks handle it:

  1. I have one use of the ChangeMode smartapp that is executed when I go to bed that puts the thermostat in “Sleep” mode.

  2. I (now) have another use of ChangeMode that is executed via the switch and puts the thermostat into “Away” mode.

For the first case, I had previously set the preferences for the Ecobees’ “holdType” to “nextTransition” so that the normally scheduled “morning” routine on the Ecobee disables the “Sleep” mode change from the night before.

For the second case, having that same preference setting means the thermostat is in “Away” mode until the next transition, which isn’t really what I want (in that case, I want the holdType to be “Indefinite”)

Is there some way to change the holdType based on an instance of the ChangeMode app? So that the one that changes to Sleep could be “nextTransition” but the one for Away could be “indefinite”?

Not a huge deal since I only have two transitions per day (early morning, late night) and my “Away” in intended for day trips, but if we’re “away” for multiple days, I’d like it to not switching back to the normal schedule at the next transition, if possible.


Hi @phlepper ,

To apply some custom logic, you may want to use Webcore and call different methods exposed by MyEcobee device.

Refer to the ST community wiki for more details about the holdType options:


  1. For example, you can use the setHoldWithHoldType() method.

Here is the signature and some examples below.

void setHoldWithHoldType(thermostatId, coolingSetPoint, heatingSetPoint, fanMode, holdType, holdHours=null, startDate=null, startTime=null, endDate=null, endTime=null)

// example1: device.setHoldWithHoldType(’’,27.5,17.5,null,‘indefinite’) // to set an indefinite hold with coolingSetpoint=27.5, heatingSetpoint=17.5 on current thermostat
// example2: device.setHoldWithHoldType(’’,27.5,17.5,null,‘holdHours’,2) // to set an holdHours of 2 hours with coolingSetpoint=27.5, heatingSetpoint=17.5 on current thermostat
// example3: device.setHoldWithHoldType(’’,28.5,16.5,null,‘dateTime’, null,‘2018-07-11’,‘16:28:00’) // to set a “dateTime” holdType with coolingSetpoint=28.5, heatingSetpoint=16.5 starting on 2018-07-28 at 16:28 and ending in 2035-01-01

  1. You can also use the setClimateWithHoldType() method to set a given comfort settings with a different holdType of your choice.

Here is the signature and some examples below:

void setClimateWithHoldType(thermostatId, climateName, holdType, holdHours=null, startDate=null, startTime=null, endDate=null, endTime=null)

// example1: device.setClimateWithHoldType(’’,‘Away’,‘indefinite’) // to set an indefinite Away hold on current thermostat
// example2: device.setClimateWithHoldType(’’,‘Away’,‘holdHours’,2) // to set an Away holdHours of 2 hours on current thermostat
// example3: device.setClimateWithHoldType(’’,‘Away’,‘dateTime’, null,‘2018-07-11’,‘16:28:00’) // to set a “dateTime” Away holdType starting on 2018-07-28 at 16:28 and ending in 2035-01-01

By using a custom rule engine like Webcore, the possibilities are endless.

There are more than 90 methods exposed in MyEcobee device for custom logic.

Here is the list of methods, capabilities and attributes:



I have been using My Ecobee Device for a couple years now and it has been great. I have it change the Ecobee to Home/Away/Sleep mode based on my SmartThings mode. Ex. When ST changes to “Home” so does Ecobee, and same for sleep and away. However in the last 2 days it has stopped working. There are no changes to the Ecobee mode even though ST says it has made the change. I had not made any changes at all to my ST setup before this issue arose. This morning I downloaded the purchased ZIP file again to get the most recent versions of everything. However this did not solve the problem. I re-ran the Ecobee initialize app and still nothing.

What further information can I provide to help me locate the issue? Hoping to get this resolved as quickly as can be.