[RELEASE] Initial Setup for Ecobee3 & 4, Smart-SI, EMS, Smart-02 thermostats - My Ecobee Device


This thread is about My Ecobee device only, and it’s dedicated to the several hundred of ecobee users (550 contributors and counting) who have been using it for their day to day HA interaction through SmartThings for more than 2 years now.

I’ve developed more than 15k lines of code for the ecobee thermostats under SmartThings. It’s the most comprehensive ecobee implementation. There is no other thermostat device that offers this kind of capabilities under SmartThings (compared to Nest, Honeywell Lyric or any other smart thermostats).

If you want to unlock all ecobee’s rich APIs features, this is the device for you!

The code works with all ecobee models: Ecobee Lite, Ecobee3, Smart-SI, Smart-02, and even EMS thermostats.

BTW, for those who are interested in purchasing an ecobee, here is a referral link you can use:


My ecobee Device is now available for download at my store:


For the new v5.0 version with tips and running graph features, please refer to the following thread:

As the ecobee thermostats are becoming more popular (especially with the advent of the ecobee3), I decided to create a specific thread on how to do their initial setup within ST. This thread actually is a collection of previous posts that I’ve done in many other threads…

My custom Ecobee device was created in order to expose all functionalities of the rich ecobee APIs. The Stock ST device under the SmartThings labs exposes only the basic functionalities (i.e., not more than a regular z-wave thermostat except maybe for the resumeProgram). As I own a SMART-02 thermostat, I decided to code my own device handler to get access to all functionalities that I need.

With My Ecobee device and my smartapps, you can do the following:

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

See the following smartapps: ecobeeGenerateStats & groveStreams smartapps

12) Turning off your thermostat(s) when Window or Door contacts are open and restoring your thermostat mode when they are closed

See the WindowOrDoorOpen! smartapp.

13) And many more features, you may want to consult the wiki for more details



The ST setup for My custom Ecobee device should not take you more than 5-10 minutes depending on how you’re familiar with the IDE.

If you’re new to ST, prior to do any setup step described in this thread, please refer to this excellent guide created by @JDRoberts, a fellow community member

1) After the download, please follow the readme file’s step by step instructions under (setup time = around 5 min)

2) If you have the ecobee3, you may want to expose also its remote sensors to ST as individual
temp and motion sensors (setup time = 2-5 min.)

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.

3) In order to be able to better control your ecobee thermostat(s) under ST, I also created a bunch of smartapps. (setup time = around 2 to 5 min. per smartapp)

Here are some explanations on how to maximize your ecobee thermostats’ use under ST.

Refer to

Most of my smartapps have been developed with this principle in mind: ecobee is responsible for the basic scheduling (as it’s more reliable and also accessible from the physical thermostat anytime) and ST is responsible for managing exceptions to the schedules that you define (i.e., ‘Away’ or ‘Home’ mode switch as an example).

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

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

Go to www.ecobee.com, 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).

(3b) 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 personally prefer to use the ‘nextTransition’ holdType, so that a ‘hold’ stays only active till the next transition on the schedule.

For more detail on holdType, please refer to

(3c) 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.

+) 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.

++) 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 there is a ST Hello Mode change, 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 temperature
can vary a lot throughout the year (+32°Celsius/90°Farenheits in the Summer to -30°Celcius/-22°Farenheits in the Winter), and sometimes, but to a lesser extent, during a single day!

So, the smartapp allows you to set up some ‘more or less heat’ and ‘more or less 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 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.

++++) If you plan to have smart vents later or want to average out your inside temp sensors (similar logic to ecobee3 with its remote sensors), look at the ScheduleTstatZones smartapp or ecobeeSetZoneWithSchedule

In summary, you have many options available for your new ecobee smart thermostat (the smarter thermostat on the market!). I’d recommend to start with the simpler smartapps and evolve from there to the others if needed.

Let me know if you have any further questions.



FYI, I’ve been in talks with Ecobee, and my code is now “Ecobee recommended” as discussed
with Mu Saleem, Sr. Manager, Content & Advocacy at Ecobee.

This is good news as I’d like to become a certified partner of Ecobee in a near future.

For those of you who are afraid to use My Ecobee Device for support reasons, this news could alleviate some of your concerns.


1 Like

I’m looking at getting an Ecobee3 and wanted to integrate window sensors into the HVAC automation system. Specifically shutdown the HVAC system if a window or door is open for X minutes and alerting us that the system has been shutdown. I also want it to turn back on when all doors and windows are closed for X minutes. My devices would be Ecobee3, SmartThings Hub, and a couple SmartSense Open/Close Sensors or SmartSense Multi Sensors.

Would your ecobee smartapp allow for this type of control with the devices I have chosen? Is there a better recommended way of doing this?

EDIT: I just found the WindowOrDoorOpen! module in your smartapps, so I think this with the main program should get me started.

Hi @David_Eckhardt, yes the WindowOrDoorOpen smartapp should be a good foundation for your use cases.

I use it every day (almost) at my home with my ecobee thermostat and some door/window contact sensors.


Hey yvesracine,

I’m having issues trying to get me ecobee3remotesensors working. I keep getting a “Failed to save page: Notifications” Here’s the error log in smartthings:

    686e7039-9fba-4910-b042-2b165d95787a 6:25:01 PM: error groovy.lang.MissingMethodException: No signature of method: java.lang.String.div() is applicable for argument types: (java.math.BigDecimal) values: [1.8]
Possible solutions: is(java.lang.Object), wait(), trim(), any(), dump(), size() @ line 516

I followed your instructions have installed the generic motion and temperature sensor but still doesn’t work

@akoziol99, grab the latest release (v1.1.2) at github, save and publish in the IDE.

This should fix it.

that did the trick thanks!!

Hey @yvesracine - Have loved using your Ecobee device the past few weeks! Full access to all information (Humidity, etc.) is a huge step-up from the ST Labs device type for Ecobee. I just noticed my tstats are having issues updating status (Temp on apps is not updating or status). I see the some errors in my activity log.

I just noticed you updated the device code but I am having trouble saving/publishing as I get the following error:

groovy.lang.MissingMethodException: No signature of method:
script14349988276822119154494.metadata() is applicable for argument
types: (script14349988276822119154494$_run_closure2) values:
Possible solutions: getMetadata(), getState(), setState(java.lang.Object), metaClass(groovy.lang.Closure) @ line 21

Hi @jotto,

Did you update the device type or the smartapp recently without doing save & publish?

Your environment may be in a bad transition state.

Could you make sure that you have the latest version of the device type (v2.0.13), my Ecobee init (v.1.9.4) and, if you have ecobee3 remote sensors, the ecobee3RemoteSensorsInit smartapp (v1.1.3), and save & publish:

If you still have issues, please PM your detailed log (before this exception)…

I just did a “copy and paste” of my device type code, and it’s working fine in my ST environment.

P.S. Like I posted on another thread, here is my answer about temps not updating:

Since ST did your cloud optimization (and introduce rate limiting), many devices now need to be polled in order to get the latest values.

A good example of this is the weather station, see this thread below for more info. As you can see in the last posts of this thread, even stock ST devices now need to be polled in order to get the latest values, and it’s not as reliable as it used to be.

In any case, my code will not generate sendEvent commands if the temp values have not changed, so if your indoor temperature is stable, you may not see any temp updates for many hours.


Thanks for the quick reply! I uninstalled/ reinstalled both the device type and smartapp and all is working again!! :smile:

Following the steps again, I realized in my previous install I never enabled OAuth in Smartapp (not sure if that was the cause of the issues I experienced). Thanks again.

@jotto, if OAuth was not enabled in MyEcobeeInit smartapp, then sure, you’d have trouble using my Ecobee device type.


1 Like

I was trying to get the remote sensors to work with ST and got this error in the logs.

8:53:44 PM: error java.lang.ArrayIndexOutOfBoundsException: 1 @ line 90
8:53:44 PM: debug selectMotionSensors>ecobeeSensors= [null]
8:53:44 PM: error java.lang.NumberFormatException: For input string: “unknown” @ line 2781

Hello @1tufgt,

Please follow these instructions to get more information about your issue. It seems that the ecobeeRemoteSensorInit smartapp is not seeing any remote motion sensors under your ecobee account.

  1. Get the latest version from github

My latest versions are the following:

My Ecobee Device type (version 2.1.7)
My Ecobee Init (version 2.0) with new notification page.
ecobee3RemoteSensorInit (version 1.1.8)

(2) Clear your cache as the old Device may be cached

On Android, you’d need to go to settings/apps/smartthings and clear cache.

On iOS, you’d need to uninstall the smartThings app and reinstall it.

  1. Please activate live logging in the IDE, so that I can better support you.

To get all the tracing I need to correct the issue, please do the following

a) Go to https://graph.api.smartthings.com/device/list,
b) Click on My Ecobee device,
c) Edit the preferences (middle of the page)
d) Set verboseTrace to true (as long as there is a value)
e) Click Save at the bottom of the page
f) Click on https://graph.api.smartthings.com/ide/logs

PM me the logs of any errors related to My Ecobee Device and ecobee3RemoteSensorInit

P.S. Also, please verify that you have at least firmware v3.6 at your physical thermostat as motion sensors are not updated properly before that version. Check also that you get updated information about your motion sensors (occupied or not) at the physical thermostat or at the ecobee portal before using the smartapp.


Ok looks like I’m on version 3.5.3890. How do I go about upgraded to 3.6?

@1tufgt, contact ecobee support for a firmware upgrade…

Do you see your remote sensors and their occupancy updates at the ecobee portal or at your physical thermostat?

Bye for now.

I only see them at the main device. On the portal it says “coming soon.”

Looks like after getting the firmware to 3.6 the remote sensors are working like they should. Question how do I add the Monitor and Set temp smart app so I don’t need to keep accessing it from “Things”.

@1tufgt, I don’t understand your question. Could you precise what is your use case?

The MonitorAndSetEcobee smartapp cannot be accessed from the Things shortcut, only under My Apps…

Disregard my question. You’ve answered it. Thanks for your help.


Somehow, the following 3 g,h, i) steps were not completed during the initial setup

  1. Prior to calling ecobee3RemoteSensorInit, you need to create 2 additional generic device types in your IDE:

Those are 2 devices types from SmartThings.

In order to do so,

a) Go to https://graph.api.smartthings.com/ide/devices
b) Click on new SmartDevice on the right
c) On the new SmartDevice page, click on the “From Template” tab
d) Scroll down to Temperature Sensor
e) Click “create” at the bottom of the page
f) Click Save and publish on the next page
g) Do the same for Motion Detector
h) Click “create” at the bottom of the page
i) Click save and publish

as specified in