KNX Binding somtimes dysfunctional, workarround?

Hi,

once in a while I have the problem, that the KNX Binding stops sendig data to the bus. That is a big problem for me, when I am not at home and have no mobile internet to restart openhab.

As a workaround I tried to send “watchdog” telegrams to an other server, which responds to these telegrams. The idea was, that openhab restarts the KNX bundle when it could not receive these watchdogs replies for some time.

This works as expected and openhab tries to restart the KNX bundle by executing a shell script which contains:

/usr/bin/ssh -p 8101 -i /var/root/.ssh/oh_karaf openhab@localhost 'bundle:stop org.openhab.binding.knx'

In the logs I can see, that this command is successfully executed and the KNX bundle stopped and restarted. The problem is: This does not correct the faulty behavior (see log below). Restarting openhab solves the issue for the time being.

Is there any recommended way to restart openHAB from a rule or any other possibility to get KNX working again, without manual intervention?

Here an excerpt from my logs at the moment the KNX binding is restarted, the error messages after restarting the binding went on as long as I had the patience to wait…

2018-04-22 15:52:46.284 [INFO ] [nx.internal.connection.KNXConnection] - Closing KNX connection
2018-04-22 15:52:46.287 [WARN ] [tuwien.auto.calimero                ] - KNXnet/IP Tunneling 192.168.10.15:3671: close connection - interrupted
java.lang.InterruptedException: null
	at java.lang.Object.wait(Native Method) ~[?:?]
	at tuwien.auto.calimero.knxnetip.ConnectionBase.waitForStateChange(ConnectionBase.java:571) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.knxnetip.ClientConnection.doExtraBlockingModes(ClientConnection.java:232) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.knxnetip.ConnectionBase.send(ConnectionBase.java:269) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.send(KNXnetIPTunnel.java:149) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.onSend(KNXNetworkLinkIP.java:263) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.AbstractLink.send(AbstractLink.java:304) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.sendRequestWait(KNXNetworkLinkIP.java:240) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.process.ProcessCommunicatorImpl.readFromGroup(ProcessCommunicatorImpl.java:486) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.process.ProcessCommunicatorImpl.read(ProcessCommunicatorImpl.java:422) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.binding.knx.internal.bus.KNXBindingDatapointReaderTask.readFromKNXBus(KNXBindingDatapointReaderTask.java:99) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.binding.knx.internal.bus.KNXBindingDatapointReaderTask.run(KNXBindingDatapointReaderTask.java:67) [16:org.openhab.binding.knx:1.11.0.201708271339]
2018-04-22 15:52:46.291 [WARN ] [al.bus.KNXBindingDatapointReaderTask] - Autorefresh: Cannot read value for item 'Licht_Kueche_Regal_Schalten' from KNX bus: link closed, interrupted connection got closed: link closed
2018-04-22 15:52:46.291 [ERROR] [tuwien.auto.calimero                ] - calimero.link.192.168.10.15:3671: send error, closing link
tuwien.auto.calimero.knxnetip.KNXConnectionClosedException: interrupted connection got closed
	at tuwien.auto.calimero.knxnetip.ConnectionBase.send(ConnectionBase.java:274) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.send(KNXnetIPTunnel.java:149) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.onSend(KNXNetworkLinkIP.java:263) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.AbstractLink.send(AbstractLink.java:304) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.sendRequestWait(KNXNetworkLinkIP.java:240) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.process.ProcessCommunicatorImpl.readFromGroup(ProcessCommunicatorImpl.java:486) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.process.ProcessCommunicatorImpl.read(ProcessCommunicatorImpl.java:422) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.binding.knx.internal.bus.KNXBindingDatapointReaderTask.readFromKNXBus(KNXBindingDatapointReaderTask.java:99) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.binding.knx.internal.bus.KNXBindingDatapointReaderTask.run(KNXBindingDatapointReaderTask.java:67) [16:org.openhab.binding.knx:1.11.0.201708271339]

2018-04-22 15:53:33.002 [INFO ] [.smarthome.model.script.system rules] - Triggered KNX Watchdog
2018-04-22 15:53:33.013 [INFO ] [nx.internal.connection.KNXConnection] - Established connection to KNX bus on 192.168.10.15:3671 in mode TUNNEL.
2018-04-22 15:53:36.020 [WARN ] [al.bus.KNXBindingDatapointReaderTask] - Autorefresh: Cannot read value for item 'Steckdosen_Bibliothek_rechts_Schalten' from KNX bus: no confirmation reply received for L-Data.req from 1.1.241 to 5/7/200, low priority hop count 6 repeat tpdu 00 00: timeout
2018-04-22 15:53:36.020 [WARN ] [tuwien.auto.calimero                ] - KNXnet/IP Tunneling 192.168.10.15:3671: response timeout waiting for confirmation
tuwien.auto.calimero.exception.KNXTimeoutException: no confirmation reply received for L-Data.req from 1.1.241 to 5/7/200, low priority hop count 6 repeat tpdu 00 00
	at tuwien.auto.calimero.knxnetip.ClientConnection.doExtraBlockingModes(ClientConnection.java:236) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.knxnetip.ConnectionBase.send(ConnectionBase.java:269) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.send(KNXnetIPTunnel.java:149) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.onSend(KNXNetworkLinkIP.java:263) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.AbstractLink.send(AbstractLink.java:304) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.sendRequestWait(KNXNetworkLinkIP.java:240) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.process.ProcessCommunicatorImpl.readFromGroup(ProcessCommunicatorImpl.java:486) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.process.ProcessCommunicatorImpl.read(ProcessCommunicatorImpl.java:422) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.binding.knx.internal.bus.KNXBindingDatapointReaderTask.readFromKNXBus(KNXBindingDatapointReaderTask.java:99) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.binding.knx.internal.bus.KNXBindingDatapointReaderTask.run(KNXBindingDatapointReaderTask.java:67) [16:org.openhab.binding.knx:1.11.0.201708271339]
2018-04-22 15:53:36.022 [WARN ] [al.bus.KNXBindingDatapointReaderTask] - Autorefresh: Remaining retries for address '5/7/200' = '2'
2018-04-22 15:53:36.081 [INFO ] [.smarthome.model.script.system rules] - Received KNX Watchdog reply
2018-04-22 15:53:38.012 [WARN ] [org.apache.karaf.services.eventadmin] - EventAdmin: Blacklisting ServiceReference [{org.osgi.service.event.EventHandler, tuwien.auto.calimero.process.ProcessListener}={event.topics=openhab/*, component.name=org.openhab.binding.knx, component.id=656, service.id=904, service.bundleid=16, service.scope=bundle} | Bundle(org.openhab.binding.knx_1.11.0.201708271339 [16])] due to timeout!
2018-04-22 15:53:39.026 [WARN ] [.binding.knx.internal.bus.KNXBinding] - Value 'ON' could not be sent to the KNX bus using datapoint 'command DP 10/2/240 KNX_Watchdog_Transmit, DPT main 0 id 1.001, low priority' - retrying one time: no confirmation reply received for L-Data.req from 1.1.241 to 10/2/240, low priority hop count 6 repeat tpdu 00 81
2018-04-22 15:53:39.026 [WARN ] [tuwien.auto.calimero                ] - KNXnet/IP Tunneling 192.168.10.15:3671: response timeout waiting for confirmation
tuwien.auto.calimero.exception.KNXTimeoutException: no confirmation reply received for L-Data.req from 1.1.241 to 10/2/240, low priority hop count 6 repeat tpdu 00 81
	at tuwien.auto.calimero.knxnetip.ClientConnection.doExtraBlockingModes(ClientConnection.java:236) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.knxnetip.ConnectionBase.send(ConnectionBase.java:269) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.send(KNXnetIPTunnel.java:149) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.onSend(KNXNetworkLinkIP.java:263) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.AbstractLink.send(AbstractLink.java:304) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.sendRequestWait(KNXNetworkLinkIP.java:240) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.process.ProcessCommunicatorImpl.write(ProcessCommunicatorImpl.java:466) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at tuwien.auto.calimero.process.ProcessCommunicatorImpl.write(ProcessCommunicatorImpl.java:438) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.binding.knx.internal.bus.KNXBinding.writeToKNX(KNXBinding.java:161) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.binding.knx.internal.bus.KNXBinding.internalReceiveCommand(KNXBinding.java:118) [16:org.openhab.binding.knx:1.11.0.201708271339]
	at org.openhab.core.binding.AbstractBinding.receiveCommand(AbstractBinding.java:94) [203:org.openhab.core.compat1x:2.2.0]
	at org.openhab.core.events.AbstractEventSubscriber.handleEvent(AbstractEventSubscriber.java:45) [203:org.openhab.core.compat1x:2.2.0]
	at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:415) [3:org.apache.karaf.services.eventadmin:4.1.3]
	at org.apache.felix.eventadmin.impl.tasks.HandlerTask.run(HandlerTask.java:70) [3:org.apache.karaf.services.eventadmin:4.1.3]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
2018-04-22 15:53:42.034 [WARN ] [al.bus.KNXBindingDatapointReaderTask] - Autorefresh: Cannot read value for item 'Steckdosen_Halle_unten_Blockieren' from KNX bus: no confirmation reply received for L-Data.req from 1.1.241 to 5/5/60, low priority hop count 6 repeat tpdu 00 00: timeout

Thanks for your help!!

Juelicher

i had some troubles before with my KNX system and Openhab
after some tinkering with the knx.cfg file here are my settings that worked for me

ignorelocalevents=true
pause=200
numberOfThreads=2