Error in log using ecobee binding

Seeing this error in log:
Exception in thread “Thread-43” java.lang.RuntimeException: No properties in openhab.cfg set!
at org.openhab.binding.ebus.internal.EBusBinding.updated(EBusBinding.java:154)
at org.openhab.binding.ebus.internal.EBusBinding$1.run(EBusBinding.java:305)

Whenever this error occurs the device is not controllable.

Hi Sleufa,

The error log appears to be about the Ebus binding, not the Ecobee binding. Unless it’s a typo, perhaps you would rename the topic and tags so Ebus experts can comment?

Don’t know what Ebus is. I am only interested in ecobee binding. How do I get rid of this error? Might I have some addons I don’t need? I added them all. Which are the addons required for ecobee so I can remove the rest.

In general you should only add the bindings you need to the addons folder, all bindings in the addons folder should be well configured before startup openHAB (most of the bindings have options in either configurations/openhab.cfg for OH1 or conf/services/<bindingname>.cfg for OH2)
All addons have self-explanatory names so far, so for ecobee it would be org.openhab.binding.ecobee* for the general binding and org.openhab.action.ecobee* if you want actions to be used in rules. See the wiki for ecobee binding and action

I figured those two where used but didn’t know if there were other addons used commonly by several bindings (common core libraries). Are they all self contained?

Still get a warning:
[WARN ] [java.util.prefs] - Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(…) returned error code 5.

As for the addons folder this is all custom configurations stuff, so put in only the addons you are using. For example if you are using rrd4j persistence, you will need this addon, but if you don’t you don’t need the addon in the addons folder.

Generally yes, each addon is contained to a single JAR.

The Ecobee binding uses Java Preferences to store tokens needed by the Ecobee API. On Windows, Java Preferences uses the Windows Registry. The user under which you are running openHAB is having permissions problems. Here is a related thread:

Adding that code to the start.bat did not work. However I ran that .bat file as administrator and that created the missing registry folder. Any subsequent run of start.bat now works without admin elevation.

Now getting this error when I moved the server to another machine. Still runs fine on my original machine. Are the tokens somehow associated with something unique on the machine?

2016-02-29 01:42:33.431 [WARN ] [g.openhab.io.net.http.HttpUtil] - Method failed: HTTP/1.1 401 Unauthorized
2016-02-29 01:42:33.556 [ERROR] [.ecobee.internal.EcobeeBinding] - Error retrieving tokens: authorization_pending
2016-02-29 01:42:33.556 [WARN ] [.ecobee.internal.EcobeeBinding] - Periodic poll skipped for ‘DEFAULT_USER’.

Any new setup of the binding requests a PIN from Ecobee, which is then logged at INFO level. You then have to enter that PIN at ecobee.com. The log lines above look like the PIN wasn’t entered at ecobee.com.

The PIN was entered. I see my app in “My apps” and I have been able to control the ecobee3 with the openHab server running on my Win 7 desktop. The problem surfaces only when I move the server to my Win Server 2008 R2 machine and run the openHab server from there. Went back to my Win 7 machine and still works fine from there without errors.

That’s why I asked. Is the token somehow tied to a machine’s fingerprint? Both machines are behind the same router so the ecobee servers should see the same public IP.

The OAuth2 flow that establishes a working arrangement is a little complicated. The binding first requests a PIN using your app key. This saves an auth token in the binding (in the registry on Windows). When you enter the PIN at ecobee.com, a later attempt by the binding to retrieve access and refresh tokens succeeds, the binding saves those as well with the auth token, and the API can then be used. After about an hour, the access token expires, so the binding refreshes the tokens, getting and storing new access and refresh tokens from the API.

So each instance of the binding has to go through the authorization process independently. You can use the same app key in openhab.cfg, but each instance needs its own PIN and tokens. At ecobee.com, you will see only one instance of your app, but there may be many instances of it currently authorized.

So what do I need to do? Copy a registry key from one machine to another? If not how do I go and authorize this machine? Do I have to choose “Add Application” again in My Apps?

Since the window of time has probably expired to register the PIN that should have been logged earlier, you will either have to create a new appkey and put that in openhab.cfg, or remove the unusable authToken key using a registry editor. When then restarting openHAB, watch the log for the PIN you have to register at ecobee.com and do so within the expiration window (typically nine minutes).