Ecobee App/Driver Port from SmartThings

The API has been staying connected and updating without any issues for me. I still haven’t done anything too complex with it yet, but I did find an issue with setThermostatProgram('[ProgramName]'). This method is trying to access the hold type and has an error. It looks like Hubitat has a different syntax for accessing settings on the parent app. Instead of parent.settings.settingName it’s parent.settingName. There’s another thread here too that references this difference. I’ll update the Github repo soon with this fix.

Thanks for all the work. I’ve finally got all my devices other than door locks moved over. Started working on pistons, and realized that one of mine which changes ecobee mode to match HE mode was not working, came here to check and see if others are having the same issue, and sure enough, this was the last post. Exactly what I was looking for. :slight_smile:

I’ll keep an eye out for future updates. Thanks again!

In the thermostat driver on line 2565 there is an error.

Changing parent.settings.holdType to parent.holdType fixes. This was stopping me from being able to set the temperature on the thermostat.

Actually, parent.settings is referenced a lot throughout the code. I think it may need to be updated.

I made the parent.settings. --> parent. change in all the ecobee devices and apps. I also changed the thermostat driver around lines 702-708 where the ‘options:’ is used and added additional hard brackets “[ ]”.
options:[["Permanent"], ["Temporary"], ["Hourly"], ["Parent"], ["Thermostat"]]
and
options:[[2],[4],[6],[8],[12],[16],[24]]

I also changed line 1124 from
def avg = ((device.currentValue('heatingSetpointDisplay').toDouble() + device.currentValue('coolingSetpointDisplay').toDouble()) / 2.0).toDouble().round(precision.toInteger()).toString()
to
def avg = ((device.currentValue('heatingSetpointDisplay').toFloat() + device.currentValue('coolingSetpointDisplay').toFloat()) / 2.0).toFloat().round(precision.toInteger()).toString()

That seems to have eliminated the errors I was seeing.

Still testing. Will report back any errors or items not working.

I am finding that many of the errors I see in the logs are because the 'States" value is Null. I have two thermostats, both use the same driver. One shows 73 ‘States’ populated with values, the other shows ‘43’ states populated with values? Errors show up much more frequently with the thermostat that is only showing 43 stats populated and most of those are because the value it is looking for is Null. Both thermostats are Ecobee3 (same model purchased at the same time) and on the same account.

Is there some command or method to force a polling of all the states so they get populated initially? I wonder if that would help?

UPDATE: I just went into the EcoBee website and update the thermostat name (no other changes). I came back into the Ecobee Service Manger app and selected the new name. Now both thermostats are showing all (I think) states. Maybe my connection to the Ecobee API was somehow incomplete??? Looks good now.

One additional change to the app. Since Hubutat has limited 'runEvery' commands:

I changed line 1319 from:

if ((pollingInterval < 5) && (pollingInterval > 1)) { // choices were 1,2,3,5,10,15,30
to

if ((pollingInterval < 5) && (pollingInterval > 0) && (pollingInterval == 10)) { // choices were 1,2,3,5,10,15,30

I was getting an error when I set the interval to one minute because the code was using runEvery1Minute, which is not valid in Hubitat. The change above allows the correct scheduling using the cron scheduling format.

I pulled ecobee off hubitat a while ago due to stability issues, but am considering trying again. How has this been working for everyone.

I don't intend to do much controling of the ecobee via UI, but with webcore routines, Specifically setting ecobee modes to match my home mode, night = sleep, etc.

I ended up removing it too. Will wait for a more official release.

For now though I'm just using IFTTT and triggering the modes via webCoRE. Works perfectly.

Only thing I'm missing though is the sensors as devices.

Are you looking for just occupancy, or do you also want temp/humidity data? There's this Homebridge plug-in if you happened to be running Homebridge and using HomeKit automation too.

I'm getting occupancy in Homebridge via my Ecobee's connection to my Wink Hub that I still have online so it's not really something I need at this time. However, I did try the plug-in and it does expose occupancy to HomeKit. It also shows the temp and humidity in the Homebridge log, but I didn't see them in HomeKit, even though the author says I can ask Siri for it. I didn't bother trying that feature because I can ask Alexa for the temp of my Ecobee sensors.

I had initially pulled ecobee off Hubitat too, but I have since tried again. With the changes listed in this thread, it has been very stable for me. I have webCoRE pistons that change the thermostat program (Home, Away, Sleep) based on the Hub's mode (which is based on presence sensors/time of day) and I have a piston that changes the Thermostat Mode (Auto, Heat, Cool, Off) based on doors being open over 5 minutes or closing from being open for over 5 minutes. I have been running these for several weeks now with no issues. I was happy enough that I completely disconnected my SmartThings Hub. I am 100% Hubitat now.

5 Likes

My Hubitat Elevation™ arrived a couple days ago. Earlier to today I shot a short video of the unboxing and then connected it to the network and registered it. Thus far I've only managed to integrate my LIfe360 account and my wife and myself now show as Devices.

The only other device currently in the house is my ecobee3, which has led me here. It seems that I will need to copy code form GitHub into the Apps Code section under --- ADVANCED --- on the HE configuration page. The README.md in @mattw's branch of Ecobee-Suite mentions how to manually do things with SmartThings IDE but, not really with Hubitat Elevation.

If someone can nudge or club me in the right direction, I'd really appreciate it. If I can sort things out afterword, I'll see what I can do to document my adventure.

Thanks,

I'm not a webCoRE user. Anyone happen to know if I can use the with RM with this, and if so, is it aware of all the modes (including OFF).

I have a Stringify flow that is supposed to turn on the furnace fan when the Ecobee mode is set to OFF and the temperature in my house rises to above 76˚. Of the integrations that Stringify supports, only Wink allows an action based on the thermostat mode being set to OFF.

I don't have A/C and yesterday the something in the flow failed, allowing my house temp to rise to 81˚

Not sure about RM but I would expect that it works.

Ecobee had an outage monday night I think it was. Messed with my automations too and my thermostat just wasn't turning on. Really getting annoyed by anything cloud connected now that I'm spoiled. I wish this driver was all local as well. That would be nice.

In my automation's though instead of turning it all off I actually just have it set to a "disabled" scene that has a high and low point for the temperature. That way if it ever gets stuck it won't let the house get dangerously cold or hot.

You have central air I assume. I don't, so in Winter the house will never get dangerously cold. That part will be handled by the thermostat, regardless of cloud status. As spring approaches, my wife likes to open doors, much to the chagrin of the rest of the family still uncomfortably cold. So that's when I set the thermostat mode to OFF, instead of trying to heat up the neighborhood. From there, I forget about the thermostat, until it's cold again.

So I need it to be able to help circulate the air when the it gets really hot, even if the mode is OFF. Last two years this has worked great, and the house never rose above 78˚, but the failure for this to work yesterday has prompted me to look for a better way.

Ya it sounds similar to mine. When I say dangerously hot or cold, my "disabled" scene on the thermostat is basically set to heat to 14 or cool to 28. That way the AC or heat won't kick in until it really needs to I believe this is also built into the thermostat anyways. When any of my windows/doors are left open for 5 min's it sets this scene.

I use the scene though because I like the fan to continue circulating the air. When set to off the fan wasn't continuing to circulate.

With the outage they had though, the piston wasn't getting the current scene and able to set it properly.. I had to manually walk up to it and adjust it. What a pain!! :slight_smile:

1 Like

this seems to have broken for me with the 1.1.2 hub update. all the sudden this error keeps popping up;

app:11022018-08-04 22:25:05.865:errorjava.lang.IllegalArgumentException: No encoder found for request content type */* on line 3590 (setProgram)
app:11022018-08-04 22:25:05.849:errorsendJson() - Exception: java.lang.IllegalArgumentException: No encoder found for request content type */*

Why not use the official driver now that it's available, rather than the ported ST community driver?

b/c it doesn't allow me to set the program mode. I want to be able to set home/sleep/away. all of my automations are based on setting those values.

1 Like

I see. Well maybe that will be added at some point. In the meantime you can use IFTTT to do that. Not all in one, but it will work and you can avoid the errors.

well, i've created six IFTTT maker events (2 thermostats, 3 states each) and this should be working the way it was.

I was thinking though, the primary reason that I want to be able to set these modes instead of simply set auto/cool/heat and temp is b/c I have two remote temp sensors. I have my sleep mode set to only use the sensor in the bedroom and not the sensor in the thermostat itself. I don't see a way to do this with the native driver right now.

1 Like