[Release] Updated Open Source Ecobee Device Type and SmartApps

Thanks @StrykerSKS. This is excellent work and I truly thank you for keeping with the spirit of the community. I’m fairly new to SmartThings and the whole GitHub but your ready made it easy to finally figure out how to utilize the repository and will make syncing updates so much easier. Everything came up and running on my side and I’ll let you know if I see anything odd.


1 Like

What a fantastic effort you’ve put forward here. I’m running Android and I’m experiencing the issue mentioned above, but this device shows incredible promise and man you have absolutely knocked it out of the park with the details. The Github integration is great, the documentation is simply outstanding, the presentation is good, and man I love that you’re sticking to your guns on keeping this open source. I’m excited to see what becomes of this, and thanks for all your work so far.

Anyone else getting this alert? I got this notification at 2:37PM EST and now again at 8:37PMEST "Your Ecobee thermostat is disconnected from SmartThings, because the access credential changed or was lost. Please go to the Ecobee (Connect) SmartApp and re-enter your account login credentials?

Thanks everyone.

Okay, I’ll try to address a few of the things in the thread so far.

Regarding the issues on Android and the inability to actually control the device. This is because the controls were on the multiAttributeTile. I will issue an update tonight that will add the controls as regular tiles as well so that it will be more usable on Android.

Regarding the alert: Yeah, I’m seeing it now too. Everything was stable for me right up until I released the code (go figure). Looking through my logs, this happened right after one of the dreaded “Execution time exceeded 20 app execution seconds” errors, which then cascaded into losing the AuthToken. I’ve updated my local copy of the code to handle the exceptions more granularly so that we can separate true API Call errors from platform congestion errors. The old code would simply immediately try to refresh the Token, but when the platform is already congestion this simply led to more failures.

Now with the updated error handling I can better track what errors are happening and why. With this we should be able to isolate and maintain the connection.

In the meantime, you will have to open up the SmartApp and re-login to Ecobee to get a new token.

Okay, I’ve made several updates to the SmartApp and the Device Types. Mostly around updating the UI for the Thermostat on the phone.

I’ve switched over to using the Lighting multiAttributeTile which supposedly works on Android. I will switch back once ST fixes the current issues. I’ve also added manual controls in case the multiAttributeTile fails to work. Below is a screenshot of the updated version. I’ve also update the instructions on the README at GitHub to include instructions for updating via the GitHub integration. If you are not using the GitHub integration then you will have to manually paste in the new code, save it and publish to get the latest.

I just want to say thank you to StrykerSKS… This is a lot of work, and I really appreciate how you are sharing this openly with the community. The Ecobee app looks great!

1 Like

@StrykerSKS, registered here just to say thank you for your time and effort on this updated and most important open-sourced Ecobee device & app. It’s been a whole day and it works so far without any issues!


StrykerSKS questions about your Ecobee 3 app
Under Select Hold type- what does this refer to - Is it related to say, if I override my conform setting the thermostat willnt keep temperature until i change it or until next scheduled event.
smart auto temperature- Does this enable smart away feature in ecobee 3 or something else?In your thread you make reference to arrows for temperature adjustment, but just a little perplex with the name you used.

So both the Ecobee 3 and the sensors will be polled every 5 minutes. Is it possible that sensors be polled lest often based on they run on batteries.

My ecobee 3 shows up on family tile. Is this intentional.


Make sure to take a look at the README… @StrykerSKS did a great job of explaining things there:

This is the section that applies to your questions:

Optionally, set the other settings:
Select Hold Type: This determines how a hold will behave. Either Permanent (until changed) or Temporary (until next program engages)
Use Smart Auto Temperature Adjust: This allows you to adjust the temperature using the Up and Down arrows within SmartThings even when the device is in mode Auto.
Polling Interval: Determines how often to poll (via API calls) for fresh thermostat/sensor data

Your question #1: HoldType

Under Select Hold type- what does this refer to - Is it related to say, if I override my conform setting the thermostat willnt keep temperature until i change it or until next scheduled event.

Yes, the hold type on the device in the app does the same sort of thing as changing the hold type on the ecobee itself (Just right now your device has more options for hold types. The SmartThings app only has 2.)

If you change the holdtype in the settings of the thermostat device in the app then when you change the temperature in the SmartThings app it’ll use that instead of what you have set on the ecobee. So for example on myphysical ecobee I had it set to holdtype until next transition, but in the Ecobee device in SmartThings it was indefinite (default).

So when I changed the temp on the physical device it would go back to schedule on next event (as per the programmed schedule home, sleep, wake, away etc.) but if I changed it in SmartThings (using a SmartApp, or the SmartThings device) it would stay at that temperature forever until I manually clicked on “Return to Schedule”.

Having said that, @StrykerSKS did add a ‘holdtype’ setting to the smartapp as well. I’m not 100% sure how the two places vary. Perhaps @StrykerSKS can shed some light on that?

smart auto temperature- Does this enable smart away feature in ecobee 3 or something else?In your thread you make reference to arrows for temperature adjustment, but just a little perplex with the name you used.

Question #2: Smart Auto Temperature Adjust
My understanding is that this is because typically when you are in “heat” mode the up arrow will change the heat temp, when you are in ‘cool’ mode the arrows change cooling temp. But in “auto” mode the arrows will need to adjust both the heating and cooling.

I initially thought it would be for the smart home/away, or for smart recovery (preheating before scheduled time), but I think that sort of thing would still be controlled by your physical ecobee’s settings.

Question #3: Polling
You also asked about the 5 minute polling? That’s a setting you can change yourself it you think that’s too much (Options are 5, 10, 15, 30).

Remember the Ecobee and Sensors don’t run on Z-wave, or Zigbee, so it doesn’t communicate directly with the SmartThings hub. What it does is it syncs data to the Ecobee’s servers, then this smartapp connects the Ecobee’s Servers with the SmartThings servers. So the polling information isn’t how often the SmartThings hub is talking to the sensors, or the ecobee device, it’s how often the SmartThings servers are talking to the Ecobee’s servers. I don’t think it’ll affect your battery life to have this at 5 minutes or to change it to 30.

Hope that helps!

@HLlalo, I have the thermostat showing up under family as well. It’s not just you and it’s always been like that. (the community version and I think the one that’s now a paid version all show up as part of the family. as far as I know)

I’m not sure why, just wanted to let you know that this is normal.

@StrykerSKS, if this isn’t an intentional thing, I can open an issue ‘ticket’ on this in Github. Let me know if you need me to do this. (You can probably open a ticket too I assume.)

Thanks for clarification.
Another question
I am trying to use Rule Machine to change Ecobee 3 from Off,Heat, Cool. In rule machine I setup rule so that at a specific time the mode is change from off to heat and set temperature, I am only doing this as a test. When i say modes i am referring to off, heat, cool and not away and home. Rule machine changes the temperature on Ecobeee 3, but it willnt change mode to heat. If i open thermostat via smarttings I am able to change modes. Note sure if this is related to device type in smartthings or Rule Machine, but wanted to get your thoughts.

Mine shows up in family also. I wonder if it is due to the API feature showing connected or disconnected, as you said @StrykerSKS can answer that.

What condition are you using in Rule Machine based on the time trigger? Do you have the latest rule code installed?

HLlalo, to your questions:

Under Select Hold type- what does this refer to - Is it related to say, if I override my conform setting the thermostat willnt keep temperature until i change it or until next scheduled event.

This is related to the Hold features on the thermostat.

  • Permanent == “Until you change it” equivalent. It basically says that the temperature won’t change again until you change it (or some other process/program/automation changes it in our case)
  • Temporary == “Until the next scheduled activity”. This means that whatever temperature you set will automatically revert back to the regular schedule at the next time slot (e.g. if you are currently in “Home” mode and the next program is “Sleep” it would automatically revert to the Sleep program at the scheduled time.

Perhaps I should change the names of these to make it match the wording used by the Ecobee thermostat. Any interest in me also adding the option to hold for 2 or 4 hours like at the thermostat?

smart auto temperature- Does this enable smart away feature in ecobee 3 or something else?In your thread you make reference to arrows for temperature adjustment, but just a little perplex with the name you used.

The Smart Auto temperature feature was to deal with something I found annoying with all of the thermostat implementations that I found that only had one set of setting arrows. If you were in Auto mode, then trying to change the temperature from the app was not allowed at all. So imagine if your Auto mode was set to Cool: 74 and Heat: 66 and the current temperature in the house was at 66. You up late perhaps, getting a little chilly and want to change the temperature, but the app won’t let you. So I wanted the ability to simply click the up button and raise the heat temperature to take the chill off (or down and drop the temperature).

So this does not have anything to do with any of the “smart” features found on the Ecobee itself.

Also note that when using the sliders, this Smart Auto Temp feature is not engaged since the sliders set the individual setpoints for Heat and Cool, so no need to guess the intent of the end user (since it is quite explicit).

// Sean

The reason I have it in both the SmartApp AND in the individual thermostats is so that if you want to have different behavior for different thermostats then you are able to override it at the thermostat level. The SmartApp setting will then be the initial setting used by all thermostats but if you change it at the thermostat device in the app then that thermostat will use its overriden settings instead.

This is correct, the SmartApp only communicates with the Ecobee servers via an API, never talks directly to the thermostat or the sensors. It is a shame, really, that Ecobee chose to go proprietary instead of using Zigbee or ZWave for their sensors as it limits their range and also prevents direct integration, but I suspect that was a conscious decision since having it integrated directly with other systems would likely cause support problems for them.

This was existing behavior, but I can explain why it is happening. The Thermostat device type definition includes the “Presence Sensor” capability, so that it can be use as part of Presence scenarios. This can be quite useful for SmartApps (and the built in Hello Commands) that want to use presence to trigger actions.

Check out the info here related to the Presence Sensor Capability.

I’ve also been considering adding this capability to the sensors as well since they are really more Presence Sensors than they are motion detectors (the sensors do not provide a real-time update).

That makes a lot of sense to make the remote sensors presence instead of motion. Could you make it where the user could define their choice as an OR?

To make it a choice we’d have to have two different types of Ecobee Sensor Device Types, there is no way in the architecture (that I’m aware of) to do this as a selection. The “capabilities” for a device are defined in the Metadata for the device type.

But actually, the more I look at this I think the Presence Sensor capability in SmartThings is more intended to cover the arrival and leaving scenarios and to determine if a particular person/item is present. Even the attributes related to the capability only include “present” and “not present”. So I’m not sure that Presence Sensor should really be applied at all to the Ecobee Thermostat and its sensors under this context.

Check this out:

And this one too:

Does this work with the remote sensors? I am using the Keep Me Cozy II with SmartSense Multisensors since my thermostat is not located where we typically are and it is flaky to say the least. I was considering the ecobee as an alternative.

Yes, this smartapp does allow you to add your ecobee3 sensors to smarthings.