New openHAB2 Binding for Nuki Smart Locks

ahh thats perhaps the hint.

I tried the binding half year ago but with callback

http://192.168.123.123:8080/callback/add?http://openhabhost.my.domain:8080/nuki/bcb&token=123456

so I will give the binding an additional try.

I will test it on the weekend.

@gittyhub2 thanks a lot

@gittyhub2 it dosnĀ“t work, no update via callback yet.

Read existing callbacks on lock

http://<IP-Adresse-NUKI-Bridge>:8080/callback/list?token=123456

thats the entry:

{"callbacks": [{"id": 0, "url": "http://<IP-Adresse-OPENHAB>:8080/nuki/bcb"}]}

I set it with:

http://<IP-Adresse-NUKI-Bridge>:8080/callback/add?url=http%3A%2F%2F<IP-Adresse-OPENHAB>%3A8080%2Fnuki%2Fbcb&token=123456

BUT then:

I had a websession with an engineer (Aeotec - also great JOB) for my Z-Wave problem and I had to reboot the Raspi two times.

WTF: It works!!! The Callback from Nuki Bridge WORKS!!!

So i think, after all the configuration you need a reboot of openhab server.

SOLVED

:+1:

Same problem with callback but did try everything mentioned here.
OH is 2.3 stable, Nuki binding 2.1.

I have set up call back and checked it with the list function:

{ā€œcallbacksā€: [{ā€œidā€: 0, ā€œurlā€: ā€œhttp://192.168.17.3:8080/nuki/bcbā€}]}

Sending this request to openhab shows

{ā€œstatusā€:ā€œOKā€}

with log showing

13:29:34.150 [WARN ] [.internal.dataexchange.NukiApiServlet] - Could not handle request! Message[null]
java.lang.NullPointerException: null
at org.openhab.binding.nuki.internal.dataexchange.NukiApiServlet.service(NukiApiServlet.java:112) [190:org.openhab.binding.nuki:2.1.0.201705112100]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [31:javax.servlet-api:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848) [85:org.eclipse.jetty.servlet:9.3.21.v20170918]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584) [85:org.eclipse.jetty.servlet:9.3.21.v20170918]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [183:org.ops4j.pax.web.pax-web-jetty:6.0.9]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [82:org.eclipse.jetty.security:9.3.21.v20170918]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284) [183:org.ops4j.pax.web.pax-web-jetty:6.0.9]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [85:org.eclipse.jetty.servlet:9.3.21.v20170918]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [183:org.ops4j.pax.web.pax-web-jetty:6.0.9]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.Server.handle(Server.java:534) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [84:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) [76:org.eclipse.jetty.io:9.3.21.v20170918]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) [76:org.eclipse.jetty.io:9.3.21.v20170918]
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [76:org.eclipse.jetty.io:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [87:org.eclipse.jetty.util:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [87:org.eclipse.jetty.util:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [87:org.eclipse.jetty.util:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [87:org.eclipse.jetty.util:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [87:org.eclipse.jetty.util:9.3.21.v20170918]
at java.lang.Thread.run(Unknown Source) [?:?]

I donā€™t get any status updates on the actions I trigger. E.g. ā€œlock stateā€ remains ā€œclosingā€ and never switches to ā€œclosedā€. Actions work well.
Rebooted bridge and OH server already.
What am I missing?

Thanks a lot

New info: enabled trace and found the communication to happen but the items are not been updated:

20:48:33.736 [DEBUG] [ing.nuki.handler.NukiSmartLockHandler] - Command[4] succeeded for channelUID[nuki:smartlock:NukiBridge:Ef_Haustuer_Lock:lockAction]
20:48:38.584 [DEBUG] [.internal.dataexchange.NukiApiServlet] - NukiApiServlet:service URI[/nuki/bcb] request[Request(POST //192.168.17.3/nuki/bcb)@11f6d82]
20:48:38.597 [TRACE] [.internal.dataexchange.NukiApiServlet] - requestContent[{"nukiId": 335452561, "state": 1, "stateName": "locked", "batteryCritical": false}]

How can I enable the binding to update the status of the items?

@binderth, did you find a solution to the ā€œno update of statusā€ problem in the meanwhile?

sorry for the delay!
to be frank, I didnā€™t pursue this issue any furtherā€¦ My Mom is a better Status indicator than I am! Sheā€™s got the Nuki App and tells me battery Status when she receives the notification! :wink:

ā€¦ but as the days get Shorter, I try to find some time for my OH2 Installation and tweaking stuff.

but: what I noticed lately, that my Nuki Bridge oftentimes doesnā€™t find the Nuki Smart Lock or whatever that 503-error means:

2018-10-18 16:32:32.195 [WARN ] [ab.binding.http.internal.HttpBinding] - Transformation 'JSONPATH($.state)' threw an exception. [response={"success": false}]
org.openhab.core.transform.TransformationException: Invalid path '$.state' in '{"success": false}'
	at org.openhab.core.transform.TransformationHelper$TransformationServiceDelegate.transform(TransformationHelper.java:67) [194:org.openhab.core.compat1x:2.3.0]
	at org.openhab.binding.http.internal.HttpBinding.execute(HttpBinding.java:194) [218:org.openhab.binding.http:1.12.0]
	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:144) [194:org.openhab.core.compat1x:2.3.0]
	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:166) [194:org.openhab.core.compat1x:2.3.0]
2018-10-18 16:32:32.203 [WARN ] [ab.binding.http.internal.HttpBinding] - Transformation 'JSONPATH($.batteryCritical)' threw an exception. [response={"success": false}]
org.openhab.core.transform.TransformationException: Invalid path '$.batteryCritical' in '{"success": false}'
	at org.openhab.core.transform.TransformationHelper$TransformationServiceDelegate.transform(TransformationHelper.java:67) [194:org.openhab.core.compat1x:2.3.0]
	at org.openhab.binding.http.internal.HttpBinding.execute(HttpBinding.java:194) [218:org.openhab.binding.http:1.12.0]
	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:144) [194:org.openhab.core.compat1x:2.3.0]
	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:166) [194:org.openhab.core.compat1x:2.3.0]
2018-10-18 16:32:33.256 [WARN ] [ab.binding.http.internal.HttpBinding] - Transformation 'JSONPATH($.stateName)' threw an exception. [response={"success": false}]
org.openhab.core.transform.TransformationException: Invalid path '$.stateName' in '{"success": false}'
	at org.openhab.core.transform.TransformationHelper$TransformationServiceDelegate.transform(TransformationHelper.java:67) [194:org.openhab.core.compat1x:2.3.0]
	at org.openhab.binding.http.internal.HttpBinding.execute(HttpBinding.java:194) [218:org.openhab.binding.http:1.12.0]
	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:144) [194:org.openhab.core.compat1x:2.3.0]
	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:166) [194:org.openhab.core.compat1x:2.3.0]

that one isnā€™t from the callback, but from the API, if I try to open the door. sometimes it works in first attempt, sometimes you need a second or even third attempt to open the door via API.

@Falk This looks perfectly fine! Any odd log lines after this?

@binderth 503 means that the Smart Lock is offline (SL and Bridge are not able to communicate). Try to find a better place for your bridge (e.g. closer to the SL, direct visibility range, etc)

The Bridge is 1.5m away. With free sightā€¦ the errors appeared after the latest FW update.

Well, then report this problem to Nuki (contact@nuki.io)!
You did already? No, you didnā€™t! :wink:

Joke aside, a product can just be improved if the maker gets feedback and therefore knows about the probs!

@mkatter Nothing nuki related. Canā€™t see any error messages. Did not work with the binding version 2.4 either (still OH 2.3 stable). Have implemented a workaround via IFTTT and get the status from there (door status closed/open).

Is it supposed to be working since @binderth seems to have the same issue?

I contacted you like 10times on several issues on my Nukiā€¦ :wink:
In the mean time I got two replacement Smart Locks - I hope your v2 Upgrade-plan for firsttime users (I was a Kickstarter from day one) is a real deal.
But if you think it helps - Iā€™ll file an issue again, but first I have to make a few thorough tests! :wink:

IFTTT is ok for non-realtime use because of immense lagging. Iā€™m still waiting for a Nuki Binding - or for some time for setting up rules and stuff of my own.

@binderth @Falk I just pushed some changes to the PR. Please download and install the current build and send some feedback!

The link for the current dev build is in the first post!

1 Like

@mkatter
Do you have a release or feature note of changes?
What kind of JAR (2.1.0 or 2.4.0) for 2.3.0 stable build version should I use?
Is there any side effect if I use the newer JAR file? Now I use 2.1.0 (org.openhab.binding.nuki-2.1.0-SNAPSHOT.jar) and it works perfectly. No problems.

@The-Elk Iā€™m running Raspbian Jessie, openHAB 2.3.0 (via apt, stable) and org.openhab.binding.nuki-2.4.0-SNAPSHOT.jar. Please see the README.md how to config the binding.

@mkatter thanks for providing an updated version. I guess this works with OH2.4 (it doesnā€™t with 2.3) therefore I need to update my system first. Will try and keep you posted ā€¦

@Falk As I already said, I am running the current org.openhab.binding.nuki-2.4.0-SNAPSHOT.jar on openHAB 2.3 on a Raspberry Pi (yesterday manually upgraded to Raspbian Stretch).

pi@RasPi2:~ $ cat /var/lib/openhab2/etc/version.properties
openHAB Distribution Version Information
----------------------------------------
build-no        : Release Build
online-repo     : https://dl.bintray.com/openhab/mvn/online-repo/2.3

Repository        Version
----------------------------------------
openhab-distro  : 2.3.0
smarthome       : 0.10.0.oh230
openhab-core    : 2.3.0
openhab1-addons : 1.12.0
openhab2-addons : 2.3.0
karaf           : 4.1.5

If the binding is ā€œnot workingā€ for you, please post logs on trace level, thx!

@mkatter sorry for the confusion. I just realized that channels changed between versions.

This version of the binding works for me and the status is being updated as well! :smile:
I can also confirm your data of version.properties. Have same setup here.

Thanks
Falk