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

Hi @bostonalex,

Please follow these instructions to get more information about your issue.

  1. Get the latest version from github

My Ecobee Device type
My Ecobee Init with new notification page.
ecobee3RemoteSensorInit

(2) 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

(3) PM me the logs of any errors related to MyEcobeeInit, My Ecobee Device and ecobee3RemoteSensorInit (only those 3 please!)

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.

P.S.2 You won’t be able to uninstall MyEcobeeInit if your ecobee thermostat is used in other smartapps. You need to remove your ecobee thermostat from any other smartapps before being able to uninstall MyEcobeeInit.

BTW,I don’t recommend to unstall MyEcobeeInit unless there is a major issue within your environment.

Regards.

Ok, will do, I’ll have some time later this evening to continue troubleshooting.

BTW, I assume you mean to get the latest greatest at https://github.com/yracine/device-type.myecobee and not https://github.com/yracine/device-type.myecobee2?

@bostonalex,yes, the link has been corrected (bad copy and paste). Thnx.

Ok, here we go…

My Ecobee Device - Version 2.1.7

I just updated to Ecobee Init 2.0.1, I had downloaded the previous version on Saturday.

Basically what appears to be happening is that I get authenticated to Ecobee and I see my thermostat. Some time later, the App still thinks I’m logged in, but when I open the Init app and try to see my thermostat, I see the long serial number type code and not the name of my thermostat.

Confirmed running Sensor 1.1.8.

I can see both the Ecobee3 onboard sensor as well as the remote sensor from the Ecobee portal.

Ok, I wasn’t sure what you wanted trace wise, so I did a find and replace on “verboseTrace”, value: and replaced all with “verboseTrace”, true:

I’ll PM logs for Init, Sensors and my Ecobee (2ndFL Ecobee3)

I went ahead and re-authenticated to Ecobee in the Init app. When it goes away again, I’ll PM over the logs.

Sit tight…

I am having the same issue. Please let me know what you end up finding out.

@Adam_Martin, Please follow the instructions that I posted above and PM me the logs.

I haven’t received anything from bostonalex, so I assume that his ecobee issue is solved.

FYI, ST has acknowledged that there are some connection issues with their cloud-to-cloud connection to ecobee in this post:

But, there is no ETA from ST to solve this connection issue for the moment. So, you may want to try to reconnect to ecobee (re-login even if it’s said that you’re connected) from time to time using MyEcobeeInit to reset the connection between the 2 platforms.

Regards,

Would this explain why I am getting random exceptions when I look at my thermostat activity feed.

I am seeing
Verbose Trace is Dorequest>Exception Java.Util.Concurrent.Timeoutexception: Execution Time Exceeded 20 App Execution Seconds

@nvanallen, you’d need to PM me more details.

How many ecobee thermostats do you have at your home? Do you have remote sensors (ecobee3) exposed to ST? Which smartapps are you using to interact with My Ecobee Device? Where is your poll interval in My EcobeeInit and ecobee3RemoteSensor if used?

This exception is related to the rate limiting set in ST. It may indicate that some smartapps are polling MyEcobee Device too often.
Bye for now.

I have two ecobee thermostats. They are the ecobee si. So no remote sensors. The smart app I am using is the Changemode smart app. I have the default polling time set up. So I guess 10 minutes. The strange thing is that everything seemed to work ok untill I updated the code for the you released for ecobee int and the ecobee device type.

I can’t remember the version i was using though :confused:
I also think ecobee is having some issues of their own. I notice in my ecobee app that one of my thermostats will go offline randomly. I do nothing and it will eventually reconnect. I have a support ticket for that. That only started happening recently too.

@nvanallen, if you updated the code recently, I’d doubt that this issue is related to the My Ecobee’s code per se, as my latest changes were made for better exception handling when connection issues arise.

Please make sure that you have the latest version of My Ecobee Device (2.1.8) & MyEcobeeInit (v2.0.1) as the smartapp will send you notifications if there are too many errors or unauthorized exceptions in the logs.

Regards.

I’m also having this issue—just got my Ecobee3 and setup using Yves’ apps, etc. What’s the implications of just ignoring this error? I want to comment out the send msg code because they’re quite annoying and frequent. Just don’t know what I’ll “lose” in not re-authorizing.

@jk12,

If you do not want any notifications, just answer ‘no’ to the following input parameter on the last page
of MyEcobeeInit:

  • Send a push notification [y,n]

However, you won’t have any clue if your thermostat is up and running at a given time.

If you receive these notifications, I’d recommend to contact ST support as this indicates that your cloud-to-cloud connection to ecobee is not reliable, it needs to be reset.

Regards.

@jk12, if you do not want to wait for ST support, I’d recommend to uninstall everything and start over from scratch.

In order to remove any device and device type, you’d need first to uninstall the smartapps (ecobeeChangeMode) and any other smartapps where you ecobee thermostat is used.

Regards.

Yves- Thanks for all of your great work on Ecobee and SmartThings…

I’ve been looking into the ecobeeChangeMode SmartApp and there seems to be a problem using my Ecobee 3… Home seems to switch to Home fine, but Away has issues (when I select 2 modes) and Night mode won’t switch to the Sleep program… here are some example logs:

2f2c4167-758f-4fdd-8419-f4fc6b98647f 10:17:25 PM: debug programs: [Sleep, Home, Away]
2f2c4167-758f-4fdd-8419-f4fc6b98647f 10:16:46 PM: debug changeMode>location.mode= Home, newMode=[Away, Vacation],foundMode=false, not doing anything
0ecf0bc3-5cc7-4023-a643-49a2574037a8 10:16:38 PM: debug changeMode>location.mode= Home, newMode=[Night],foundMode=false, not doing anything
05b4d019-884b-475f-8346-16e8f269918f 10:16:32 PM: debug ecobeeChangeMode>setting the thermostat(s) to Home…
05b4d019-884b-475f-8346-16e8f269918f 10:16:31 PM: debug sending push message

And, if I could slip in a couple of feature requests:

  • it would be great if this same SmartApp could have an option to just Resume Program… the ecobeeResumeProg SmartApp doesn’t trigger based on modes, like this one does
  • generally speaking, I like using the holdType of nextTransition so the Ecobee can still maintain some control, but I’d like to be able to use Vacation mode to put it into the vacation program, which doesn’t simplistically exist in Ecobee, so at least put it into Away mode and override holdType to be indefinite in this case… (is it possible to override the holdType device preference from the SmartApp?)

I realize that my ‘feature requests’ start to look like more of an Ecobee Mode Director app, but that’s kind of what I’m trying to do with your code… thoughts?

Thanks again for all of the work you are contributing to the SmartThings community.

Hi @bgadam,

  1. Just to be sure that we’re on the same page, about the ecobeeChangeMode smartapp, please read the following (as specified in my initial post in the thread):

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

So, basically, you need 2 instances of the same smartapp: one for ST hello Away mode and another one for the ST Hello Home mode to switch the ecobee thermostat to Home and Away…You cannot use the same smartapp instance for both ecobee program changes.

It was not designed to handle 2 ecobee program changes in the same instance. The smartapp was designed to handle a single ecobee program change (you can press the arrow on the smartapp to execute it manually anytime that way).

  1. EcobeeResumeProg can resume the ecobee schedule based on a hello mode change, see this input parameter:

    section(“Or when SmartThings’ hello home mode changes to (ex.‘Home’)[optional]”) {
    input “newMode”, “enum”, options: enumModes, multiple:true, required: false

  2. For your use case, you may want to create your own smartapp and call MyEcobeeDevice using the following syntax:

ecobee.setClimate("", “Away”, [holdType: ‘indefine’])

Or any holdType you want based on the following ecobee documentation:

https://www.ecobee.com/home/developer/api/documentation/v1/functions/SetHold.shtml

Just add the right parameters in the map.

  1. By the way, if you want even more control over your ecobee thermostat in one smartapp, you should use the following smartapp:

ecobeeSetZoneWithSchedule.

This smartapp is a complete cooling/heating zoned solution for your home. It enables a room by room heating/cooling control and combines all the logic of ecobeeChangeMode and ecobeeResumeProg in a single smartapp (and much more!). This would probably be the ‘director’ kind of smartapp you’re looking for.

P.S. The debug trace is coherent with the behavior of the ecobeeChangeMode smartapp:

2f2c4167-758f-4fdd-8419-f4fc6b98647f 10:16:46 PM: debug changeMode>location.mode= Home, newMode=[Away, Vacation],foundMode=false, not doing anything

=> Your current ST hello mode is Home, and you want to switch to the new ecobee program only when the ST hello modes are either ‘Away’ or ‘Vacation’ (which is a custom mode that you created I suppose). So, in this case, the smartapp will not apply the ecobee program that you’ve set.

0ecf0bc3-5cc7-4023-a643-49a2574037a8 10:16:38 PM: debug changeMode>location.mode= Home, newMode=[Night],foundMode=false, not doing anything

Same rationale here.

Regards.

Thanks so much for your reply @yvesracine… very helpful…

Yes, I do have multiple instances of the ecobeeChangeMode app installed… the debugging output was from running each of them manually… I did misinterpret what I was seeing… it appears that if you have the SmartApp configured with modes, that you cannot override that behavior manually by ‘pressing play’ in the SmartApp tile… it will still check that the home is in the defined mode before changing the ecobee program… I would think you’d want to allow this manual override (without checking home mode), but, no big deal… I do believe that it has been working as intended during normal operation…

I did try the EcobeeResumeProg app… I actually didn’t get to the Mode option because it was on page following the required input of a presence sensor (which I don’t prefer to use) (though using the presence from the Ecobee might be useful)… can we disable this required parameter (or will that break other logic) and move the mode option to the first page?

I will also try the ecobeeSetZoneWithSchedule app to see how it might fit my use case…

Thank you again for all of your contributions and help here… hopefully I will have a few cycles to look into this again this evening. -bA

Hello,

  1. If you want to manually change to the target ecobee program anytime via the ecobeeChangeMode, just unselect any ST hello modes, and the app will execute the change regardless of the current ST hello mode (this parameter is not required).

  2. In the latest version at my github, ecobeeResumeProg (V2.1) no longer requires a presence sensor on the 1st page.

Regards.

Dang it seems like there may be some cloud-to-cloud issues still or something is up. I noticed in my live logging (looking for some other reason) that my thermostate auth id wasn’t authorized and that I should re-run your init program. It had been awhile since I updated so I thought what the heck, let me go and get the latest versions.

So I went and edited my device type and pasted in the latest code. Did the same for ecobee init program, resumeprog, and changemode. Re-ran the init prog but it wasn’t re-authorizing. So I removed the auth from Ecobee’s website manually, and tried to re-initialize. Still wasn’t working so I decided to delete all my apps and devices and start from scratch.

Recreated the device type, init program, and all smart apps. Manually removed the authorization from ecobee’s website and re-added it. The device added, but refresh was not pulling any statistics. Then my Ecobee lost WIFI connectivity for 15 minutes maybe (?!) must have frozen up or something?

Finally it came back online and started reporting information to the “smartthings thing” and refresh seemed to work w/o errors in the log. So then I started to go about doing my 2 changemode programs and my one resumeprog app. Any time I try to invoke those I’m getting riddled with errors in the livelog. Here is a snippet:

79ce10aa-fd90-4161-abba-f64a42ba75b6 3:58:54 PM: debug EcobeeResumeProg>resumed program at ecobee...
feffd962-9ddf-4ee1-9ea8-08e1af545b7f 3:58:53 PM: error resumeProgram>error=3, message = Update failed due to a communication error.
eaaef168-a51f-4e1b-badb-e4fd0bad5dac 3:58:51 PM: debug getChildDevices(true), children=1
eaaef168-a51f-4e1b-badb-e4fd0bad5dac 3:58:51 PM: info Refreshing data...
eaaef168-a51f-4e1b-badb-e4fd0bad5dac 3:58:51 PM: info Delayed refresh triggered
79ce10aa-fd90-4161-abba-f64a42ba75b6 3:58:46 PM: error java.util.concurrent.TimeoutException: Execution time exceeded 20 app execution seconds: 108374962333029 @ line 183
feffd962-9ddf-4ee1-9ea8-08e1af545b7f 3:58:46 PM: error java.net.SocketTimeoutException: Read timed out @ line 1216
feffd962-9ddf-4ee1-9ea8-08e1af545b7f 3:58:40 PM: debug doRequest>exception java.net.SocketTimeoutException: Read timed out for...

Another excerpt:

5d4f9e22-9829-4b54-93c9-60afdf6b1394 4:23:01 PM: debug ecobeeChangeMode>setting the thermostat(s) to Away..
feffd962-9ddf-4ee1-9ea8-08e1af545b7f 4:23:06 PM: error setClimate>error 3 while setting climate Away for thermostatId =319258288451
feffd962-9ddf-4ee1-9ea8-08e1af545b7f 4:23:06 PM: error setClimate>error 3 while setting climate Away for thermostatId =319258288451
feffd962-9ddf-4ee1-9ea8-08e1af545b7f 4:23:04 PM: error resumeProgram>error=3, message = Update failed due to a communication error.

So I’m not sure if something is up or if I’m doing it wrong but I’m surprised that starting from scratch is giving me these types of issues.

The main thing I want to do is automatically set my tstat to either home, sleep, or away based on hello home phrases… does the official ST integration have that capability? What other functionality will I lose using the official implementation?

Hi @drshaw,

You usually do not need to delete your device type and device(s) to solve this kind of issues, I would try first to re-authenticate.

Also, if you have a lot of SocketTimeoutExceptions, I’d try to reduce the polling interval in MyEcobeeInit and ecobeeRemoteSensorInit smartapps.

And, nothing prevents you to use the official ST integration. Of course, my smartapps only work with My Custom Ecobee device.

However, you may encounter the same issue: I’ve already opened a ticket about the ST-ecobee cloud-to-cloud connection issues, and ST support responded by this reply:

Chris Porter (SmartThings)
Jun 30, 6:02 PM

Hi Yves,

Thanks for letting us know what you are seeing. My developers have been aware of this happening for a little while now also, and have worked on it. I will let them know your thoughts about it being the security timestamp being outdated.

I don’t have an ETA around implementing a revision to the code, but developers do currently know it is not working consistently for users, and are addressing it.

Thanks for the heads up, and the suggestions.

-Chris P.
SmartThings Support

If you have a lot of those cloud-to-cloud connections issues, please also open a ST support ticket, and at one point, with a high number of ST open tickets, this issue will surely be escalated to the Engineering team.

@tslagle13 may also help in that matter.

P.S. As I wrote earlier this thread, these exceptions are related to poor cloud-to-cloud connectivity between ST and ecobee. The fact that Ecobee requires a regular refreshTokens() (every 59 minutes) also contributes to it, as the refreshToken can be lost after a while.

I also think that the cloud-to-cloud integration issues are not only specific to ecobee, as per this thread:

So I guess it’s just in a state of flux and I should stop trying to correct it. As it stands, none of the 'mode" change programs work (changemode or resumeprog) no matter what I do.

What are the steps to re-authorize?

Now my log throws these when it tries to set the mode on my ecobee from any of the apps:
feffd962-9ddf-4ee1-9ea8-08e1af545b7f 4:45:26 PM: error groovyx.net.http.HttpResponseException: Internal Server Error @ line 1216