KNX IP gateway not working as expected

I had a perfect working installation a year ago, but then I decided to update my PC. Since then openHAB didn’t work. Because this drives my wife crazy, I finally have some time to see what’s wrong. I’ve decided to uninstall everything and to re-install from scratch.

My KNX bindings are not working. At first I didn’t see in the logs any errors, but lights were not turned on. After trying for an hour, the logs show an error

2019-01-01 11:51:46.642 [ERROR] [calimero.link.192.168.1.149:3671    ] - send error, closing link
java.lang.InterruptedException: null
        at java.lang.Object.wait(Native Method) ~[?:?]
        at tuwien.auto.calimero.knxnetip.ConnectionBase.waitForStateChange(ConnectionBase.java:541) ~[?:?]
        at tuwien.auto.calimero.knxnetip.ClientConnection.doExtraBlockingModes(ClientConnection.java:241) ~[?:?]
        at tuwien.auto.calimero.knxnetip.ConnectionBase.send(ConnectionBase.java:258) ~[?:?]
        at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.send(KNXnetIPTunnel.java:178) ~[?:?]
        at tuwien.auto.calimero.link.KNXNetworkLinkIP.onSend(KNXNetworkLinkIP.java:243) ~[?:?]
        at tuwien.auto.calimero.link.AbstractLink.send(AbstractLink.java:351) ~[?:?]
        at tuwien.auto.calimero.link.KNXNetworkLinkIP.sendRequestWait(KNXNetworkLinkIP.java:222) ~[?:?]
        at tuwien.auto.calimero.mgmt.TransportLayerImpl.connect(TransportLayerImpl.java:327) ~[?:?]
        at tuwien.auto.calimero.mgmt.ManagementClientImpl.send(ManagementClientImpl.java:796) ~[?:?]
        at tuwien.auto.calimero.mgmt.ManagementClientImpl.sendWait2(ManagementClientImpl.java:824) ~[?:?]
        at tuwien.auto.calimero.mgmt.ManagementClientImpl.readDeviceDesc(ManagementClientImpl.java:447) ~[?:?]
        at tuwien.auto.calimero.mgmt.ManagementProceduresImpl.isAddressOccupied(ManagementProceduresImpl.java:310) ~[?:?]
        at org.openhab.binding.knx.internal.client.AbstractKNXClient.isReachable(AbstractKNXClient.java:338) ~[?:?]
        at org.openhab.binding.knx.handler.AbstractKNXThingHandler.pollDeviceStatus(AbstractKNXThingHandler.java:144) ~[?:?]
        at org.openhab.binding.knx.handler.AbstractKNXThingHandler.lambda$1(AbstractKNXThingHandler.java:184) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
        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) [?:?]
2019-01-01 11:51:46.680 [ERROR] [Xnet/IP Tunneling 192.168.1.149:3671] - establishing connection failed, null

I’ve added a KNX/IP Gateway (which is shown “online”). These are the settings:

  • IP Connection Type: Tunnel
  • Port: 3671
  • Local device address: 0.0.0
  • Reading pause: 50
  • Read retries limit: 3
  • Network address: 192.168.1.149
  • Local network address: 192.168.1.183
  • Use NAT: true (I also tried false)
  • Response timeout: 10
  • Auto reconnect period: 60

In fact, I’ve copied these settings from my previous cnf file:

# KNX gateway IP address 
# (optional, if serialPort or connection type 'ROUTER' is specified)
ip=192.168.1.149

# Local KNX Binding bus address.
# Use it, when two or more openHAB Instances are connected to the same KNX bus.
# (optional, defaults to 0.0.0)
#busaddr=

# Ignore local KNX Events, prevents internal events coming from
# 'openHAB event bus' a second time to be sent back to the 'openHAB event bus'.
# Note: To send back events second time is a Bug, but for backward compatibility, the behavior is not changed.
# For new installations, its recommend to set "ignorelocalevents=true"
# (optional, defaults to false)
ignorelocalevents=true

# KNX IP connection type. Could be either TUNNEL or ROUTER (optional, defaults to TUNNEL)
# Note: If you cannot get the ROUTER mode working (even if it claims it is connected), 
# use TUNNEL mode instead with setting both the ip of the KNX gateway and the localIp.
type=TUNNEL

# KNX gateway port (optional, defaults to 3671)
# Note: If you use eibd, setting to 6720
#port=

# Local endpoint to specify the multicast interface, no port is used (optional)
localIp=192.168.1.183

# Serial port of FT1.2 KNX interface (ignored, if ip is specified)
# Valid values are e.g. COM1 for Windows and /dev/ttyS0 or /dev/ttyUSB0 for Linux
#serialPort=

# Pause in milliseconds between two read requests on the KNX bus during
# initialization (optional, defaults to 50)
#pause=

# Timeout in milliseconds to wait for a response from the KNX bus (optional, 
# defaults to 10000)
#timeout

# Number of read retries while initialization items from the KNX bus (optional,
# defaults to 3)
#readRetries

# Seconds between connect retries when KNX link has been lost
# 0 means never retry, it will only reconnect on next write or read request
# Note: without periodic retries all events will be lost up to the next read/write
#       request
# (optional, default is 0)
autoReconnectPeriod=30

### Auto refresh feature
# Number of entries permissible in the item refresher queue. 
# (optional, defaults to 10000)
#maxRefreshQueueEntries=

# Number of parallel threads for refreshing items. (optional, defaults to 5)
#numberOfThreads=

# Seconds to wait for an orderly shutdown of the auto refresher's 
# ScheduledExecutorService. (optional, defaults to 5)
#scheduledExecutorServiceShutdownTimeoutString=

# Use NAT (Network Address Translation)
#  (optional; defaults to false)
#useNAT=true

I’ve copied the items from my previous installation:

Group All
Group grpBePod          (All)
Group grpOutdoor        (All)

/* Active groups */
Group:Switch:OR(ON, OFF)        Lights  "All Lights [(%d)]"     (All)

/* Lights */
Switch BePod_Actor1_Toilet                      "WC"                    (grpBePod, Lights)      {knx="1/0/1+1/0/5"}
Switch BePod_Actor1_Kitchen                     "Keuken"                (grpBePod, Lights)      {knx="1/0/2+1/0/5"}
Switch BePod_Actor1_Terrace                     "Terras"                (grpBePod, Lights)      {knx="1/0/3+1/0/7"}

/* Dimmers */
Dimmer BePod_DimActor1_MeetingRoom              "Vergaderzaal [%s]"     (grpBePod, Lights)      {knx="1/1/1+1/1/5, 1/1/3, 1/1/2+1/1/5"}
Dimmer BePod_DimActor1_TV                       "TV [%s]"               (grpBePod, Lights)      {knx="1/1/6+1/1/10, 1/1/8, 1/1/7+1/1/10"}

/* Motion */
Switch BePod_Scene_MeetingRoom_AV               "Beweging verg.zaal voor A/V te schakelen"      {knx="<0/6/0"}
Switch BePod_Scene_MeetingRoom                  "Beweging verg.zaal voor licht te schakelen"    {knx="<0/6/3"}

/* Status */
String BePod_Status_TV                                                                          { channel="exec:command:bravia-status:output" }

/* Alexa items */
Switch BePod_Alexa_Lights                       "BePod"         <light> (gBePod)        [ "Lighting" ]
Switch BePod_Alexa_Mac                          "My Mac"        <light> (gBePod)        [ "Lighting" ]
Switch BePod_Alexa_Echo                         "Echo"          <light> (gBePod)        [ "Lighting" ]
Switch BePod_Alexa_Radio                        "Receiver"      <light> (gBePod)        [ "Lighting" ]

Which version of openHAB do you use? Which OS?

openHAB 2.4.0 Release Build
Ubuntu 4.15.0.43-generic

I have the impression that the KNX interface should be working because in the logs it says:

2019-01-02 13:19:16.046 [hingStatusInfoChangedEvent] - 'knx:ip:8e14a88b' changed from UNKNOWN to ONLINE

The point is, OH2.4 comes with knx2 Binding, but your configuration is knx1 style.

As a fast fix, go to Paper UI -> Configuration -> System -> Addon Management and activate Include legacy 1.x Bindings
After that, go to Paper UI -> Add-Ons -> Bindings and search for knx.
Uninstall knx2
Install knx1
Restart openHAB (just to be sure…)

Please consider to change your configuration to knx2 Style. (This is: either use Paper UI or a knx.things file to create a knx Bridge and at least one Thing [or one Thing per knx device]. Define Channels per function [switch, dimmer, rollershutter and so on] link the channels to the items.)
Please take a look at https://www.openhab.org/addons/bindings/knx/ for detailed information.

Tx - I’ll try the knx2 binding this evening. If I’m going to spend time and effort on OpenHAB I can better do it on the most recent version. So I’ll try to do a small setup and if that works, convert my current settings. I’ll keep you posted.