Ecobee3 again

I think this will work for me now. Can you please let me know which virtual switch are you using. @yvesracine, I have looked at your device handler and looks very interesting and feature rich, for now I am only getting my feet wet and as I get more deep into it, will definitely look to buy this.


I’m just using the standard Simulated Switch. Off/on capability. I call mine Ecobee Away. On for away, and off for home.

Thanks. I setup the switch and it is working to trigger IFTTT recipe upon power on or off. However it seems twice today the IFTTT script was not triggered even though the virtual switch was switched on or off. SO will need to watch and if it is unreliable, I might need to go the paid solution.

The nice thing about a virtual switch is that you can test it manually. Just turn the switch on and off. I can tell you from experience, there is no need to go with the paid version. I’ve had mine running with IFTTT with a success rate of 9/10 or better. In my case the issue is generally related to presence sensors not updating correctly.

With IFTTT, there will likely be a delay, though I rarely experience more than a 1m delay. Since IFTTT polls for changes, it can take 15 minutes or more at times.

I would definitely look at @StrykerSKS Ecobee app if IFTTT doesn’t work as well as you’d like or if you’d like to remove an intermediate service.

1 Like

Thanks, StrykerSKS and carmp3fan. @carmp3fan, yes I did try the virtual switch on and off manually and once there as well the IFTTT script did not trigger. But will see. definitely virtualswitch is great if you want to turn off AC, even if you are home and working outside etc and you can use the switch.

@StrykerSKS, let me try the free version, I wasn’t aware that the free version had the capability to do home/away based on presence sensors.


A good implementation starts with a good design.

No other ecobee implementation can expose so many ecobee API features, as their design limits the features they can expose. In fact, the stock ST device is very limited because of its design,

My design is unique (and has been validated by the SmartThings architects)…There is
no back and forth between a parent smartapp (which causes performance issues) and the device handler for each feature: the device handler is as independent as possible and can even work without the parent smartapp. The DTH can run without the service manager if needed (can be useful when the ST platform has severe performance and backend issues like back in December). No other ecobee implementation can do that, as their design is too tightly coupled.

I’ve created many automations and divided them into many smartapps as I want to create as many independent & dedicated services as possible.

This way, each “micro service” can be modified & tested independently from each other: this design approach allows faster changes and less ST related platform issues (instead of creating a big smartapp that does everything and requires more maintenance). This “micro service” approach limits the impact on the end users as well when a change is needed.

The end users can also pick and choose the automations that they really need to meet their own use cases.

As a reminder to the rich capabilties of MyEcobee device, here are some use cases (and the related smartapps):

1) Setting your thermostat to Away or Home based on ST hello modes

See the ecobeeChangeMode smartapp.

2) Resuming your program/climate when you’re back home

See the ecobeeResumeProg smartapp.

3) Setting your thermostat to vacation mode

See the ecobeeManageVacation smartapp.

4) Creating/updating your ecobee climates/schedules

See the ecobeeManageClimate smartapp.

5) Setting your ecobee climate/program at a given time

See the ecobeeSetClimate smartapp.

6) Monitoring and setting your indoor humidity level using your humidifer/dehumidifer/HRV/ERV (when connected to ecobee)

It also allows you to use the ecobee’s free cooling feature…

See the MonitorAndSetEcobeeHumidity smartapp and this thread for more details:

7) Monitoring and setting your setpoints based on any ST connected indoor temp/motion sensors (similar to ecobee3’s follow me feature) & outdoor temperature

See the MonitorAndSetEcobeeTemp smartapp., and this thread for more details:

8) Exposing your ecobee3’s remote sensors to SmartThings for HA scenarios

See the ecobee3RemoteSensorInit smartapp.

9) Controlling your smart vents based on your indoor temp/motion sensors in conjunction with your thermostat’s programs & setpoints

See the ecobeeSetZoneWithSchedule smartapp

10) Controlling your minimum fan time per hour during a climate/schedule run

See the ecobeeSetFanMinOnTime smartapp

11) Generating some ecobee HVAC stats on a daily basis and sending them to groveStreams for data analytics

You can then use groveStreams to map your stats on a graph like this one:

So, when you get serious about the ST-Ecobee Integration, My Ecobee device is there
for you. And, it keeps getting better because of its well-built design that can grow with you.

For any further questions about MyEcobee device, send me an email to

My Smartapps are getting recognized also not only by Ecobee, but by other partners as well: Keen Home Smart Vents just recognized my work recently.

The smart vents integration means that you can schedule your ecobee’s setpoints in conjunction with controlling your smart vents.

No other implementation out there allows such smart integration for better comfort and energy savings.

Why settle for less when you can get everything and much more??

See this thread for more details:


_P.S. My design is also better suited for the next generation of ecobee thermostats.
In fact, My ecobee device’s design is so versatile that it can run for any ecobee thermostat models: ecobee3, Smart-SI, Smart, EMS, and any upcoming models.

Mine is dumb, but I still managed to connect it to ST. With a link chain. I will definitely know when the bike is not home.

OK, sorry to interrupt the snark, but i have a question and i will accept ridicule. Please be gentle. I’ve tried to copy/paste @StrykerSKS code into a new smart app. I get this error. I did paste all 774 lines showing. What did i do wrong?

No signature of method: script1467117130657352888491.metadata() is applicable for argument types: (script1467117130657352888491$_run_closure1) values: [script1467117130657352888491$_run_closure1@3bea83b3] Possible solutions: getMetadata(), getState(), setState(java.lang.Object), metaClass(groovy.lang.Closure)

1 Like

Did you copy the raw version? Are there any weird characters at the very top of the file (delete them)?

This error is when you are saving the SmartApp, right? Could be encoding (UTF-8) related. Try and do the copy paste again.

I tried again from the RAW. Here’s the top of the code. Is there something i need to delete?


  • Copyright 2015 SmartThings
  • Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except
  • in compliance with the License. You may obtain a copy of the License at:
  • Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
  • on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
  • for the specific language governing permissions and limitations under the License.
  • Ecobee Thermostat
  • Author: SmartThings
  • Date: 2013-06-13
    metadata {
    definition (name: “Ecobee Thermostat”, namespace: “smartthings”, author: “SmartThings”) {
    capability “Actuator”

No, not unless there are weird looking characters. Let me get to a conputer and will look at it.

1 Like

The code you are pasting is not a SmartApp. It’s a Device Type Handler. Go to the My Device Handlers tab and add a new Device Type Handler from code. Not sure if there’s a SmartApp to accompany the DTH, but I assume you can install the standard Ecobee integration from ST and then, once you created the DTHs and published them, go to the Ecobee device in My Devices, edit the ecobee thermostat, and choose the newly imported DTH instead of the standard one. Not sure if this is the way, but it seems the most logical at this point.

As ady624 mentions, what you posted was the Device Handler. There is the SmartApps (Connect, Ecobee Routines). And two Device Handlers (Thermostat, Sensor). The instructions guide you through each step, so please follow them line by line.

I don’t think that will work. While my SmartApp shares a lot of similarity to the stock app, I have a lot of extras not in the standard, so just swapping out the DTH will not work. You need to start the install from the Ecobee (Connect) SmartApp from my code for it to work.

Actually, looking at that code I see that isn’t even my code.

You need to go here to get the code and read the directions:

Thank you all for the help today. I will read through the documentation. @ady624 you’re killin me.

1 Like

I am not sure I should feel good or bad about starting this religious war :slight_smile: but I would say one thing that program quality can never be judged by whether it is open source or commercial/closed source. There are innumerable examples of excellent open source software out there both in enterprise and consumer market.

That said, @nathanendress, I did install StrykerSKS open source DTH and smartapp following the instructions (with github integration) and it worked like a charm. Great job and thanks @StrykerSKS. Now what I have setup is a virtual switch “AC” which automatically turns on or off when everyone leaves or anyone arrives. The switch in turn ties to the routine to put the ecobee to Home or Away mode using the ecobee routines smartapp. You could also manually toggle the switch to get the same effect, so the switch always shows the status of thermostat.

@StrykerSKS, one thing though I would like to be able to do is that if I change the modes on the ecobee thermostat directly, to be able to sync that status to the virtual switch as well. Is that possible?


A couple of options here.

Using CoRE as suggested in one way to accomplish this. Should be possible without making any changes to the Ecobee code.

Or, would it be useful if perhaps I had an SmartApp (or maybe in option in the Routines SmartApp?) that would trigger a Routine when the Program on the Ecobee changes?

For example, if the Program changed to Away on the Ecobee, this could be used to run the Away Routine in SmartThings. You’d just have to be careful that you don’t create any loops between Routines changing Ecobee and then Ecobee triggering Routines.

I think having an option in Routines Smartapp will be great. I think what I am trying to do will definitely cause a loop but not an infinite loop I would think. I change mode to away on ecobee directly, that triggers a routine to turn switch off, turning switch off causes a routine to put ecobee in away mode but since ecobee is alreay in away mode, the rule engine should not catch this as state transition and hence loop should stop here, but definitely, I would be putting ecobee in away mode twice.

Ideally what you need is a status light which can only be controlled programmatically which is driven by routine triggered from state transition on ecobee and a momentary switch that is used to toggle the state. Not sure if this is doable in smartthings (i.e. a status light exists).