Nest / EcoBee3 or just leverage Zwave Thermostat and ST logic

I don’t have the money but invested on 2 CT100’s (heating) and Ecobee3(AC) to save on some money… I had nearly 20 yrs (as per HVAC guys) old thermostats in the house we bought last year and was costing us too much as they were too too off and obsolete. Hoping to see slightly lower bill this year.

CT100’s because I thought I couldn’t run a C and didn’t realize I could use a 24vac to power it.

Ecobee3 because it is the best and luckily had a C wire to run (as such it has a pek to run if you don’t have one).

1 Like

Like others have said - it depends on your usage of the thermostat. We have a Nest that we use with ST - I let the Nest do all the basic scheduling, but use ST to tell the Nest when we are home or not. Also, Nest has ‘smart’ features like Airwave that are designed to make more efficient use of your HVAC system (

In addition to comments by @Anseld1986 and @yvesracine, some of the intelligent thermostats will “learn” how long it takes your system to bring a room to temperature (when switching from sleep to wakeup mode, for example) and they will start the heating/cooling such that the desired temp is hit pretty close to the target time.

While not impossible with ST’s smart apps and dumb thermostats, it is a complicated bit of logic to cobble together…


I just noticed my dumb non wireless Honeywell thermostat does this, and I thought to myself… hmm… I don’t know that I feel like programming this…

1 Like

Well based on @yvesracine 's post and other posts in various other ecobee threads, I got sold on the ecobee and picked up a ecobee3 today! Thanks @yvesracine for your contributions in this arena. So after the quick install, I’m kind back on the same hangups that prompted this thread and I have a couple questions:

  1. I used the custom device type for the ecobee as well as the ecobee init smartapp, when you said earlier:

“So, I personally rely on ecobee’s schedules and only use ST to let ecobee know when my family is present or away from home, so that there is no overlap between the 2 systems;”

how did you accomplish this? Did you disable the presence detection features of the ecobee itself and just use one of your custom smart apps (maybe the one to change the mode based on hello home phrases, which would also potentially conflict with the ecobee3 configured schedule? or the monitor and set-climate smart app?)

Any other tips and tricks in regards to scheduling? I’d be curious to know what your away, home and sleep temp variations are etc…

Hi @drshaw,

As I said earlier, I don’t own an ecobee3 myself, but I’ve coded some smartapps for it.

Here are some tips for you based on the smartapps that I’ve developed.

Refer to

Most of my smartapps have been developed with this principle in mind: ecobee is responsible for the basic scheduling and ST is responsible for managing exceptions to the schedules that you define.

So, here are the suggested steps for setting up ecobee and ST, so that they work together for
your comfort.

(1) Create your schedules (climates or programs) at the ecobee portal

Go to, register, and set your climates based on your regular schedules (ex. 7h-8h am ‘Awake’, 8ham-5hpm ‘Away’ for work, 5h00-10h30 pm ‘Home’,10h30hpm-7h am ‘Sleep’ on weekdays, define also your schedules for the weekends).

With ecobee, you can not only set up your heating/cooling setpoints, but also your fan settings in your climates (fan set to ‘On’, ‘Auto’, and ‘Circulate’ with the fanMinOnTime settings which allows you to
set a minimum fan time in minutes per hour).

As your preferences may be very different from mine, I won’t recommend here any specific cooling/heating settings. It really depends if you put more emphasis on your comfort or your savings…It’s a delicate balance between the 2 dimensions that your may need to fine tune for you and your other family members (if any).

(2) Set up My Ecobee Device type in SmartThings

You seem to have already done this step. If not, refer to the readme file at github

(3) Set up the holdType input parameter for My Ecobee Device (refer to step 7 in the readme file)

To avoid overlaps between ST and ecobee, I use the holdType input parameter to define the type of ‘hold’ (exception to the basic scheduling). By default, the holdType is indefinite. I prefer to use the ‘nextTransition’ holdType myself, so that a ‘hold’ stays only active till the next transition (schedule).

For more detail on holdType, please refer to

(4) Choose one of the following smartapps for your requirements

I’ve listed them in a progressive order of complexity. The most complex smartapps are only needed
if your requirements are high.

a) Use the ecobeeChangeMode smartapp for setting your thermostat to ‘Away’ or ‘Home’

This smartapp sets the ecobee thermostat to ‘Away’/‘Home’ mode according to the corresponding ST hello mode changes.

So, you can define two instances of the same smartapp: one for the ‘home’ ST Hello mode that will set your ecobee thermostat to ‘Home’ when you’re back from work for example, and another one for ‘Away’ for the ‘Away’ ST hello mode when you leave your home (you’d need to rename the smartapp at the last screen).

You can also use the same smartapp for your custom ST hello modes & custom ecobee climates if any.

b) Use both AwayFromHome and ecobeeResumeProg for more complex use cases

If you want more accuracy/granularity when setting your thermostat to ‘Away’ , you may want to use
the ‘AwayFromHome’ smartapp. This smartapp allows you to more precisely define the presence and motion sensors required to set your ecobee thermostat to ‘Away’.

I initially created this smartapp because the ST hello mode changes were not always reliable (now it’s much better) and I wanted to trigger more specialized actions when leaving my home than what ST can offer: turning off the lights, locking my doors, arming my alarm system (it needs to be connected to ST), arming my cameras, etc.

On the opposite side, ecobeeResumeProg resumes the ecobee’s climate (or program) when one of the predefined presence sensors is back home or when one of the motion sensors specified in the smartapp detects movement in your home.

© Use MonitorAndSetEcobeeTemp if you want even more control over your ecobee thermostat

I initially created this smartapp because I live in Montreal (Canada) and the outdoor temperatures
can vary a lot throughout the year (+30°Celsius in the Summer to -30°Celcius in the Winter), and sometimes, but to a lesser extent, during a single day!

So, the smartapp allows you to set up some ‘more heat’ and ‘more cool’ thresholds for increasing/decreasing the heating/cooling setpoints based on an outdoor temp sensor (could also be a virtual weather station).and a user-provided adjustment setting (ex. +/- 5°F) during the day.

I also added the average temp calculation algorithm that you have built-in with the ecobee3 and its proprietary remote sensors, but you can now use any of your ST-connected indoor temp and motion sensors. This way, you can enable more heating/cooling when your house temperature varies from one room to another.

In fact, with this smartapp, you can also use any types of ecobee thermostats (not only ecobee3) such as the ecobee Smart-Si, EMS, or stat-02 (which is the older version) to have basically the same behavior as the ecobee3 and its remote sensors.

In brief, this smartapp combines all the previous smartapps in a) & b) in one single package because
it monitors your home based on outdoor/indoor sensors and can set your ecobee thermostat to ‘Away’ or ‘Home’ according to a time threshold (in minutes) that you define.

Again, this smartapp makes automatic adjustments to your existing ecobee schedules, so you also
need to define your basic scheduling within ecobee first.

d) If you plan to have smart vents later, look at the ScheduleTstatZones smartapp (beta code) or

I’m currently working on a smartapp that will control any smart thermostats (not only ecobee but also Nest and any z-wave thermostats) and ST-connected vents (such as Keen Home vents or ecovents) to reach the ultimate comfort in the preconfigured ‘zones’ of your home. The smartapp’s logic is also based on indoor temp/motion sensors, an outdoor temp sensor, and smart vents (optional).

You’ll then be able to configure your own schedules (ex. weekends, evenings, mornings, weekdays). The smartapp will then set/adjust your main thermostat & your smart vents (and some optional room thermostats for baseboards or fireplaces) every 5 minutes based on the average temp algorithm calculated from the rooms’ temp sensors that are part of the zone that you’ve configured.

As this smartapp works with any smart thermostat, it will not depend on any basic scheduling done
at the ecobee or at the Nest portal.

See this thread for more detail:

I have also a similar smartapp just for ecobee thermostats (ecobeeSetZoneWithScedule). It actually controls the vents (virtual or physical ones) based on the climate settings based on ecobee’s own scheduling (Home, Away, Awake, Sleep, etc). It has the same features as scheduleTstatZones, but it’s really dedicated to ecobee users out there.

5) f you want to expose your ecobee3’s remote sensors to SmartThings as individual ST motion/temp sensors (optional)

I’ve created a smartapp for that, see ecobee3RemoteSensorInit.readme file at my github and this
thread for more detail:

However, please note that the 3.6 firmware is required for occupancy updates.


In summary, you have many options available for your new ecobee3 thermostat. I’d recommend
to start with the simpler smartapps and evolve from there to the others if needed.

I don’t personally think that you need to disable any settings at your ecobee3 thermostat as
my smartapps will probably be more responsive that the default ecobee3 settings (so, there
should not be any conflicting issues).

From what I understand, ecobee3’s current settings will set your thermostat to ‘Away’ only after
a minimum 30-minute threshold, which is quite high (the average time is more likely to be 1 hour and a half).

With the above smartapps, this threshold can be cut to few minutes (again according to your requirements) for more savings.

There are other smartapps available in my github, but I don’t think that they are relevant to
this discussion now.

Let me know if you have any further questions.


@yvesracine thanks again for your detailed and thorough post. That answers my question and I decided to keep it basic for now and just use your ChangeMode SmartApp. This morning, around 5:00 am I noticed that the ecobee3 was in “Home” mode and not “sleep”. The schedule was supposed to take it from home mode at 7:00 am so I’m not sure what it was Home mode at 5. The only thing I can figure is that it was trying to do the SmartRecovery feature to get my temp back up by 7:00 am. This may be because the first night, I had it wired wrong and had the furnace as only a 1-stage heater, and I woke up the in the morning to cold air coming out of the vents and a alert on the ecobee saying that it’s blower has been running for over 180 minutes. I corrected the problem in the morning but maybe the “learning” mode thinks it takes several hours to get it to the right temp and over time, that will normalize back down. Is there a log or event viewer for ecobee so I can see what/why it’s doing some of the things it’s doing?

Edit Nevermind, I found it and yes, it was the SmartRecovery feature that kicked in. I feel like I’ll need 50 hours of training before I understand all of these reporting features and graphs, but I can say yes the Smart Recovery feature kicked it out of sleep mode a good 2 hours before the schedule change. I assume that will work itself out over time.

Hi @drshaw, you can see what’s going at the ecobee portal via the HomeIQ data.

I’m glad that you figured it out. SmartRecovery should not take hours to kick in though unless the gap between your heating setpoints is really big between your sleep and home modes.

Bye for now.

Yeah, I think that will normalize. I’ve got a new issue though. This first time this happened, I chalked it up to just a fluke and didn’t think too much about it but it’s happened again just an hour later. Basically, I lose my connection between STand ecobee. Your custom device type “thing” stops updating or being able to pull the current data from ecobee, the activity log is riddled with errors “Verbose Trace is Refresh_Tokens > Auth Error”, “Verbose Trace is Dorequest> General or Malformed Request Body Error Null” and that is all repeated 10 times or so whenever I try to update something. I’ve created 3 instances of your ChangeMode smart app, one to change the ecobee to away when home is away, sleep when home is night, and home when the mode is home. I notice the problem is happening when I call a new Hello Home phrase and the ecobee doesn’t get the update to change its’ mode.

I “fixed” it last time by going into your ecobee-init SmartApp, and even though it said “ecobee is connected”, I re-did the authorization by logging in to ecobee and connecting ST to Ecobee. I clicked Done and Done then the “Thing” started updating correctly, the ChangeMode app started reacting to hello home mode changes, and everything seemed hunky dory but now an hour later, the connection between the two seems broken again.

So I logged into Ecobee, removed the authorization for SmartThings under “MyApps”, went back into your Ecobee-Init program and re-authorized the connection. Everything worked well from there, mode changes were good. Checked back now an hour later after my wife came home and the ecobee didn’t go back to “Home” mode, and the connection is off again. The device won’t refresh, I can’t “resumeprog” or adjust temps inside the “thing” itself within smartthings, and the activity log has the same errors I mentioned in the last post.

I may just remove everything and start over from scratch unless you know of any potential causes?

Edit So that’s what I did, I removed everything and started over the ecobee integration from scratch. So far so good.

1 Like

@drshaw, do you have any internet connection issues?

The behavior that you’re describing above is quite strange…

My Custom Ecobee device at my home never loses its connection…

FYI. the My ecobee Init smartapp usually polls the device every 20 minutes to make
sure that the connection between ST and ecobee stays alive…

Let me know of any further issues.

Wow, thanks for the detailed post @yvesracine. For some reason I originally totally missed the outstanding ability to select indefinite / next transition mode changes. What’s the possibility of bringing this feature down to the app level? I’d love it if in ecobbe change mode you could choose what sort of hold is being applied per app instance. This would be huge for my vacation settings.

Hello @swamplynx, if you want to code your own smartapp and set the holdType parameter according to your own requirements, you can do it by calling the following method:

void setHoldExtraParams(thermostatId, coolingSetPoint, heatingSetPoint, fanMode,
tstatSettings = [], extraHoldParams=[])

The input parameter extraHoldParams is a Map of different setHold parameters that you can set as follows:

setHoldExtraParams(thermostatId, coolingSetPoint, heatingSetPoint, fanMode,
tstatSettings, [holdType: ‘nextTransition’])

extraHoldParams may be any other setHold or events properties

Refer to


Got it. I’m sure I am missing something really basic here, apologize in advance. Doing a basic modification of your code, adding the last line to set the hold type: message
message = "Setting HVAC to $givenClimate till next transition."

thermostats?.setHoldExtraParams(thermostatId, coolingSetPoint, heatingSetPoint, fanMode, tstatSettings, [holdType: 'nextTransition'])

I get a java error when I run it, and not the desired hold type. I’ve tried setting the unnecessary values to null as well, but can’t seem to figure this out. Sorry, I’m sure this is groovy for dummies 101.

@swamplynx, just to make sure, did you set any values for thermostatId, coolingSetpoint, heatingSetpoint, fanMode, etc.

BTW, you can do the following to simplify the call:

thermsotats?.setHoldExtraParams("", 72, 75, ‘auto’, null, [holdType: ‘nextTransition’])

If you specify a null or empty value for thermostatId, it will default to the current thermostat.


Got it. I forgot to specify one of the values, hence the java error… Though I got that resolved, I still can’t get it to produce the intended behavior. Whatever hold type is specified in the device preferences always seems to take priority. For example. The holdType preference in my thermostat is currently blank, defaulting to an indefinite hold. When I execute the modified change mode app with code:

message = "Setting HVAC to $givenClimate for now."

thermsotats?.setHoldExtraParams("", '74', '69', 'auto', null, [holdType: 'nextTransition'])

$giveClimate for this app instance is ‘away,’ and being the middle of the day, I would expect the ecobee to report “Away till 6pm” when the schedule change occurs… But all I get is “Away and Holding.” If I change the device preference that is what is always followed, regardless of the input parameter in the app. Thanks for the hand holding @yvesracine

Hi @swamplynx, could you set the trace to true in the device input parameters and send me the relevant
log entries which contain the json payload sent to ecobee?

The holdType set as extra parameters should supersede any holdType specified earlier, but I may be wrong.

You can PM me the log entries.


@yvesracine, sadly it does not appear the ecobee3 will work out for me. I have a whole house fan and live in a area that requires a switch which shuts off power to the entire HVAC system before allowing the whole house fan to run (I think this is to prevent backdrafting). I did buy the ecobee but found that when I have to turn on the whole house fan, my smart thermostat becomes completely dumb since it’s powered only by the c wire and losses power when the HVAC is shut off.

Now thinking about getting the ct100 which has batteries for backup when there’s no c wire power. Unfortunately there’s no one as passionate as you on the ct100 side. The two things I’ll miss are the smart recovery function and the ability to run the fan for x minutes an hour. Any thoughts on how to get some of this functionality back?

Also, is this enough for me to go against local building code and just remove the switch that automatically forces me to turn off the HVAC?

I don’t really have a big house and don’t have any humidifiers or ventilation devices so I’m not sure the ecobee 3 really offers that much more value.

The only other concern I have about a zwave thermostat is that it’s completely reliant on SmartThings. If the hub goes down, I really have no way to program the device and it again becomes dumber than my original thermostat.


Hi @WTLimitless,

I haven’t heard of such building code anywhere… Just curious where you live. Anyway, I’m afraid I don’t have a solution for you about the CT100. To reproduce ecobee3’s behavior with the CT100 (such as smart recovery and minimum fan time) would be difficult to do.

Even if you would be able to reproduce this behavior in ST (after some extensive coding), I doubt that it would be as reliable b/c of all the ST scheduling issues going on right now.

At the moment, I’ve to reschedule at least 1-2 smartapps/day as the ST scheduler does not reschedule those jobs as specified.

My 2 cents.

I live in Davis,Ca. Very Draconian. Do you think you’d be able to help me set up a smart app which turns off the HVAC on ecobee when I turn on a specific switch (I.e. turn on the whole house fan). That could somewhat circumvent my problem. Ideally, if I put a window sensor on a window, I could have the thermostat turn off and whole house fan turn on when I open a specific window.