[OH 3.0.1] OH stopped updating items from deconz binding

  • Platform information:
    • OS: docker image openhab/openhab:latest
    • openHAB version: 3.0.1

Hi everyone,

like the title said, my deconz things stopped updating their values.
Just after reinit of the binding they get new values but stop afterwards, e. g. one of my door sensors switches to open (checked in phoscon app/webUI) but OH doesn’t get that event. If I know restart the deconz binding the sensor switches to open. But the close won’t be recieved in OH.

As i already researched, this is most of the time an issue with websocket. So I checked with some JavaScript code if the events are fired and if I can connect on the specified port.
All this is fine.

As said, it worked fine two weeks ago, but somehow it stopped working and I can’t point my finger at a specific event.

Here is my configuration.
deconz Bridge:

deconz websocket config:
grafik

some events:

I also can’t find anything in the OH logs under openhab/logs that indicates a failed connection or anything.So any advice on how to fix this is appreciated :slight_smile:

Gretigns

After some fiddeling with the log settings in OH and setting the log level to TRACE I found this in openhab.log

2021-04-14 13:12:43.641 [TRACE] [internal.handler.DeconzBridgeHandler] - deconz:deconz:1af73f4191 starts refreshing the fullStateCache
2021-04-14 13:12:43.645 [DEBUG] [internal.handler.DeconzBridgeHandler] - Get full state failed
java.util.concurrent.CompletionException: java.io.EOFException: HttpConnectionOverHTTP@71276582::SocketChannelEndPoint@5bab9c71{/192.168.178.56:80<->/172.20.0.2:33394,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@71276582(l:/172.20.0.2:33394 <-> r:/192.168.178.56:80,closed=false)=>HttpChannelOverHTTP@f919ac9(exchange=HttpExchange@746a2c28 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@6fefb0f(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@1b1b7b5{s=START}],recv=HttpReceiverOverHTTP@2f53298(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331) ~[?:?]
	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346) ~[?:?]
	at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:632) ~[?:?]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) [?:?]
	at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) [?:?]
	at org.openhab.binding.deconz.internal.netutils.AsyncHttpClient$1.onComplete(AsyncHttpClient.java:109) [bundleFile:?]
	at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:198) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:190) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:444) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.HttpReceiver.abort(HttpReceiver.java:527) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.HttpReceiver.responseFailure(HttpReceiver.java:416) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.failAndClose(HttpReceiverOverHTTP.java:366) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.earlyEOF(HttpReceiverOverHTTP.java:335) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1526) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.shutdown(HttpReceiverOverHTTP.java:209) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:147) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:73) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:133) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:154) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:367) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) [bundleFile:9.4.20.v20190813]
	at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.io.EOFException: HttpConnectionOverHTTP@71276582::SocketChannelEndPoint@5bab9c71{/192.168.178.56:80<->/172.20.0.2:33394,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@71276582(l:/172.20.0.2:33394 <-> r:/192.168.178.56:80,closed=false)=>HttpChannelOverHTTP@f919ac9(exchange=HttpExchange@746a2c28 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@6fefb0f(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@1b1b7b5{s=START}],recv=HttpReceiverOverHTTP@2f53298(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
	... 18 more

It seems like OH uses port 80 instead of the defined 8088?

The full state is requeted from the HTTP port as it uses the REST API, not the websocket. The websocket (and the port) is only used for receiving events.

If you moved the REST-API to another port, you need to change the HTTP port, not the websocket port.

Thanks for clearing this up.
The REST-API is still listening on port 80:

Nevertheless after this error all my things from deconz szop updating…

Anyone any ideas what caused this issue?
I fired up a new instance of OH in a new container and there the binding seems to behave for now.

Unfortunately I have no idea. I don’t use docker and maybe it’s an issue with the way docker handles network connections. The binding does not receive the correct response (or better: an incomplete response). Could be a timing issue.

Maybe you can use Wireshark to see if deconz returns everything or not.

Is your zigbee installation very large? Is the “good” installation on the same versiosn for core and binding?

Yes the “new” OH is also 3.0.1 for core and binding.
I’ll try to investigate furthermore and look for any “malicous” event for the old installation.

It’s for now just 5 devices. I’m just starting :wink: