Ecobee3 control from VeraEdge UI7

Thanks @watou.

Clearly I must have something else going on then. Right now, my weekend home Vera is successfully maintaining a connection to my Ecobee and has been for at least a couple months. Not the case for my primary home. And when I go in and get a new PIN for my primary home Vera, it seems to knock out the weekend home. Odd…

I will try one more time setting a PIN for my primary home and keep a close watch and report back.

Hi,

I’ve installed the latest version (1.6), but when I attempt to create a scene, all options are grayed out. Also, I don’t see any option to control the fan. I have added, removed, and re-added and authorized my Ecobee probably 20 times already, but no such like. Do I need to do a factory reset of of my Vera and Ecobee? What am I doing wrong? Are there any other Ecobee plug-ins that I should try?

Are there ANY plugins that support Ecobee under UI17? I’m stuck with the latest firmware and have not be successful in downgrading to 1.5.622. Ready to return this piece of junk!

Yes, there is an Ecobee plugin in the App store. It works. I use it. Install it, click the “Get PIN” button, and when the PIN returns, register that PIN as an authorized app in the app control settings in your Ecobee web interface.

The only issue I have with the plugin is that sometimes my thermostat will “un-register” from Vera (i.e. Vera no longer communicates with it) and I have to re-register using the above process. But I think (and this is just a guess) that this has something to do with the fact that I have two Ecobee thermostats in my Ecobee account (one in my primary home, one in my weekend home). One will occasionally de-register (seems to fluctuate between the two homes with no rhyme or reason) but the other will remain fine. This seems to happen every couple of months or so. I reported it to the app developer, but he hadn’t heard of the issue with any other users, so again, there must be something unique about my setup/configuration. But generally speaking, it works.

Good luck.

Well, after MUCH frustration, I discovered a workaround:

The free beta VeraMobile app for Windows 10 lets me successfully create an event with the Ecobee plugin! And I can still keep the latest UI otherwise.

Kevin

Bumping this thread.

I’m on UI7 and just purchased Nest Protect. I’m creating a scene using the Nest Protect as trigger and then change the state of the Ecobee to OFF. I can control the state of the Ecobee on the dashboard but whenever I tried using it on the scene, I cannot select the state of the Ecobee or even change the temperature on the scence.

Any workaround? MY ecobee plugin is version 1.8

Please update this for UI7…thanks.

[quote=“watou, post:15, topic:186525”]I’ve submitted v1.2 of the Ecobee plugin to the app store, and updated the documentation:

[url=http://watou.github.io/vera-ecobee/]http://watou.github.io/vera-ecobee/[/url]

The docs have a quick screen shot of some sensor devices in UI5.

Hopefully v1.2 will be made available soon. Once it installs, it will take one or two 3-minute polls before your sensors start to show up, and then you will probably have to refresh your browser.

Please let me know detailed problem reports in case I missed something.

Regards,
watou[/quote]

I know it is working for me but I am using Lua code rather than the scene editor. I think it would be fairly easy for me to fix by adding the ecobee housemode device to be accessible by the scene editor but in the meantime try

luup.call_action("urn:ecobee-com:serviceId:Ecobee1","SetClimateHold", {HoldClimateRef = "mode"},ecobid)

where ecobid is the device number of your ecobee house mode device
“mode” is “home”, “away”, “night” or “smart1”

Hi,

I was able to successfully add Ecobee Plugin on Veraplus (UI7). I tried creating scene for the motion detector in the thermostat and noticed that it only work intermittently (I am sending email notification and turning on a light upon motion detection). Has anyone tried using the thermostat’s motion detector to trigger a scene?

Thanks

I am able to set home/away/vacation/etc. in UI7 (with one of the many thermostat devices that has appeared) but not adjust temperature setpoints.

Somewhat new to lua scripting, but I’ve accomplished quite a bit with my dimmers.
However, when I query ecobee motion sensor variables, I get multiple values back.

For Example:

print( luup.variable_get("urn:micasaverde-com:serviceId:SecuritySensor1","Tripped",64) )
1 	1517733365

So its returning ‘1’ as expected stating that the sensor is tripped, however it also includes the LastTrip time as well.

If I query LastTrip, I actually get two times back. The last two trips I assume…

print( luup.variable_get("urn:micasaverde-com:serviceId:SecuritySensor1","LastTrip",64) )
1517733119 	1517733365

Can anyone explain this behavior and explain how to extract each of those variables independently?

On a side note, the last trip times are unreliable. They don’t appear to update unless the device is changing from a not tripped state to a tripped state (still testing this). It doesn’t update the time stamp if the device is currently tripped. It only appears to maintain the tripped state as long as it sees motion and keeps the timestamp of when tripped last flipped from 0 to 1.

The only way to get more a more current status is by querying both tripped and LastUpdate and use them together. However, last update has the same problem of maintaining two values in one variable. I need to be able to separate the two.

Thanks in advance.

The source code to the plugin here:

shows that the LastTrip time is only coming from what is observed from using the API. The API does not give a trigger time itself, only the current state. I recall seeing Z-Wave PIR motion sensors do something similar, where they don’t repeatedly report being tripped until their pre-set time of no motion has ended. This is particularly good for battery-powered sensors.

In order to implement urn:micasaverde-com:serviceId:SecuritySensor1 for ecobee remote sensors, these device variables had to be provided with the closest possible values. Ecobee’s remote sensors don’t have an API to report when the last motion occurred.

https://www.ecobee.com/home/developer/api/documentation/v1/objects/RemoteSensorCapability.shtml

For the openHAB plugin I wrote, I gave an example of tracking last occupancy using ecobee remote sensors:

https://docs.openhab.org/addons/bindings/ecobee1/readme.html#tracking-last-occupancy

I hope this helps.

Thanks. I’ll look over your links likely tomorrow and see if that helps my understanding.
I did figure out how to assign both results from the query to their own variable after some quick googling. (Embarrassingly simple)

I do have a question about the result order. Using lastupdate as an example, it provides the older of the two times in the first position. Can those be reordered in the plug-in or is that just how the API provides it? I say that because if someone only assigns that output to a single variable, they end up with the older of the two times rather than the more valid data of the two.

Sent from my LG-H918 using Tapatalk

The code is setting LastUpdate this way:

["LastUpdate"] = function(t) return tostring(toSeconds(t.runtime.lastModified)) end,

According to the ecobee API documentation, lastModified should be set in the format YYYY-MM-DD HH:MM:SS. The toSeconds function takes that format and turns it into seconds:

-- convert "2013-02-20 23:23:44" to number of seconds since 1/1/1970 local function toSeconds(dateString, useLocal) useLocal = useLocal or false local year, month, day, hour, min, sec = string.match(dateString, "(%d+)%-(%d+)%-(%d+) (%d+):(%d+):(%d+)") local offset = useLocal and 0 or (os.time() - os.time(os.date("!*t"))) return os.time{year=year, month=month, day=day, hour=hour, min=min, sec=sec} + offset end

If there is an error in the toSeconds function that is producing this result of two long numbers instead of the correct result, I can’t see it (but maybe keener eyes can).

You need to (re)read the function documentation for the variable_get function…

The variable_get function returns two values… The first value is the content of the variable, the second value is the timestamp of the last modification of the variable…

It is a coincidence that the variable you are reading is itself a timestamp value, so the function IS returning two timestamp values, but the first timestamp value is the valid value you want… The second value is the timestamp for when the variable was updated…

IE: The ecobee API reads the status of the thermostat at 1517955300… That becomes the “lastupdate” value… The plugin polls the ecobee API at 1517955588 and stores the processed data… You then call the variable_get function… The first return value, “1517955300”, is the variable value - The second return value, “1517955588” is the time that the variable was last set.

Hmm… Interesting. I guess that is the first time I’ve noticed variable_get return more than one value.
Still have not had a chance to look over all of this yet. Maybe this weekend.

I had this problem and found a solution thanks to understanding that the cause is a bug in UI7. You can create a scene that works in AltUI like this:

Open AltUI

Create Scene

Header = Ecobee Heat On

Trigger = Outside Temp Goes Below 65

Action = SetModeTarget (under HVAC_UserOperatingMode1)

NewModeTarget = HeatOn