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" ]