I'm using your app to control some HVAC-related automations and want them to behave differently when Ecobee's API (or my internet) is down. I've seen at least 3 attributes in the thermostat device that could be used for this...
apiConnected NOT full
lastPoll NOT Succeeded
ecobeeConnected NOT true
Which of these to you recommend as a "watchdog" to verify that the app and thermostat are communicating?
can't connect to the API server, either because of an authentication error, or because the servers are experiencing some problem.
The thermostat may still be connected to the Ecobee cloud, but the Ecobee Suite is unable to communicate with the servers.
Generally, unless the situation lingers for 24+hours, Ecobee Suite will recover automatically
Commands attempted via Ecobee Suite while this is the case are buffered, and will be resent (in the order they occured) when the API connection is restored.
lastPoll NOT "Succeeded"
Is the pre-curser to apiConnected becoming not full. Missing a single poll doesn't necessarily mean anything is wrong, and generally this recovers quickly. Other values are "Timed Out" (apiConnected will be "warn"), or "Failed" (apiConnected will be "lost")
ecobeeConnected != true
This means that the thermostat has lots its connection to the cloud (or more accurately, that the Ecobee Cloud hasn't heard from the Ecobee)
This could be caused by:
Internet to your home is out
Router is off/rebooting
Thermostat has lost its connection to your router's wifi
Thermostat has lost power
This condition may or may not resolve itself, depending on which is the cause
wifiOfflineAlart == true
This is a weird one, recently added by Ecobee. I am not sure exactly how this could ever happen, because in order to the thermostat to tell the Ecobee cloud that the wifi is off-line, it would need a connection.
The best indication that ES is no longer able to monitor or update the thermostat device is probably to check the value of currentClimateName, and if it is "Offline", then you know that either ES Manager can't communicate with the API server (apiConnected NOT full), -OR- the thermostat has lost its connection (ecobeeConnected NOT true).
I have been using currentProgramName. It also shows offline if the Ecobee loses connection to the cloud.
I created a RM rule to watch for that as my Ecobee disconnected from my WIFI network a few weeks ago. I noticed my home temp was incorrect and when I opened the Ecobee app it showed offline. I got it reconnected and thought I should add something to give me a heads up about it in the future. I tested it by shutting off the WIFI at the thermostat and it sent me a notification. Haven't had it disconnect on it's own again yet, so hopefully it will work.
I'm assuming you mean currentProgramName as @terminal3 noted? I've seen that the API uses the terms "program" and "climate" to refer to the names for Home, Away, Sleep, etc. And I didn't see currentClimateName listed in the device states. If yes, that will work well since the currentProgramName value is already what I am using for most of my other rules. Just need to add an additional ELSE-IF to my existing rule. Thanks for pointing me in the right direction.
I just installed via Hubitat Packge Manager in the last couple days and I just went to HPM and did an update and it said everything was up to date. Is there something else I should do?
Also did a repair of the Ecobee Suite where it pulled everything down fresh and I'm still getting that error.
Could you verify that you have ZERO Ecobee Suite devices installed:
No thermostats
No sensors
No TEST thermostats
No TEST sensors
If you DO have any of #1 or #2, use Ecobee Suiite Manager to remove them, STARTING WITH THE SENSORS. Then remove the Thermostat(s).
Then, use the IDE to delete any #3 or #4 devices (order doesn't matter).
Then, REMOVE Ecobee Suite Manager, from within the ES Manager app.
THEN, DELETE ALL of the ES source files for both Apps and Devices.
THEN, Re-install using Package Manager.
Finally, and BEFORE you start ES Manager again, open the source files for ES Thermostat and ES Sensor, and verify that their version numbers (near the top of the file) are:
Assuming that's what you meant, I did all of that and the versions were correct. I'm getting the error again:
app:662021-03-11 08:32:24.494 traceprior poll not finished, skipping...
app:662021-03-11 08:31:55.183 errorjava.lang.NullPointerException: Cannot invoke method generateEvent() on null object on line 2139 (pollEcobeeAPICallback)
That almost looks normal for the initial startup phase, while it is waiting to get everything organized. If you wait a few cycles, does it correct itself and start updating the thermostat and sensor devices?
You appear to have TWO thermostats...could you try just configuring one of them and see if you get different results? If not, then try the other one?
Okay, I removed the Ecobee Suite then re-added. I set up just my Main Floor thermostat. I changed the setting to use the thermostat as a sensor then added the thermostat and my 2 sensors attached to it as sensors in Ecobee Suite. I wasn't getting the error so I re-added my Upstairs thermostat and then added the corresponding sensor for that thermostat (the thermostat itself). I got the error one time when it was first starting that up, but then it hasn't come back for the last 20-30 minutes.
Not sure the best place to pot an improvement request so I'm happy to post elsewhere, email, etc.
Obvious Ecobee has maaaany attributes to look for or call, yet the list of attributes is not in alphabetical order when setting a custom attribute - making it really tricky to find what you need. Checking other devices it seems that this isn't the case - so I'm guessing this is a driver issue, but I'll confess I know zilch about Groovy, developing for HE, etc.
All of the exposed attributes are in fact defined in my code in alphabetical order, and I can find no rhyme or reason for the order that they are presented in Rule Machine (or anywhere else).
Perhaps an enhancement request to the Hubitat team is the solution...
All of the exposed attributes are in fact defined in my code in alphabetical order, and I can find no rhyme or reason for the order that they are presented in Rule Machine (or anywhere else).
Perhaps an enhancement request to the Hubitat team is the solution...
Interesting. I wonder if there is some additional key that can be added to the list to define the order (or some additional option/parameter to do it by alpha). Only suggesting there may be something already there since other devices have theirs in alpha order - though of course it could totally be an HE bug preventing this in your case. Will poke around and see where I can suggest this to the HE team. Still new to this.
I am pretty sure that these "other devices" don't present 300+ attributes - and perhaps no custom attributes at all. The core set of attributes are defined by Capabilities, which likely define their related attributes in internal structures. I also use Capabilities, but an Ecobee Suite Thermostat has 9 different Capabilities, plus the 300+ custom attributes.
If you can provide me with a working example of a Custom Device Handler that has a reasonably large number of custom attributes, I'll be happy to review it for ideas.
Got this error today after peeking into my Smart Setpoints settings... Dunno if I should worry about it but thought I'd report it
app:832021-03-15 11:52:32.628 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.currentState() is applicable for argument types: (java.lang.String, java.lang.Boolean) values: [weatherTemperature, true] on line 811 (updated)
app:832021-03-15 11:52:32.563 infoEcobee Suite Smart Mode, Programs & Setpoints Helper, version 1.8.24 on Hubitat Initializing...