KNX Timeout

Hello everyone,

I’m still migrating from OH 1.8 to now 4.1 on a Raspberry Pi 3.
Even though everything felt good, I may have had a few similar problems with OH 1.8 in recent years, but they never mattered.
These days, I’ve gone back to the beginning several times just to get a bug-free and clean OH installation.
After I was able to solve some problems, also with the help of this community, I am now faced with the following problem.

Now my logs are “clean” except for this message that pops up every now and then.

==> /var/log/openhab/openhab.log

2024-01-04 09:13:32.542 [WARN ] [net/IP Tunneling 192.168.2.253:3671] - response timeout waiting for confirmation
tuwien.auto.calimero.KNXTimeoutException: no confirmation reply received for 0.0.0->1.1.11 L_Data.req, system priority hop count 6 repeat, tpdu 81
	at tuwien.auto.calimero.knxnetip.ClientConnection.doExtraBlockingModes(ClientConnection.java:271) ~[bundleFile:?]
	at tuwien.auto.calimero.knxnetip.ConnectionBase.send(ConnectionBase.java:268) ~[bundleFile:?]
	at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.send(KNXnetIPTunnel.java:213) ~[bundleFile:?]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.doSend(KNXNetworkLinkIP.java:515) ~[bundleFile:?]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.onSend(KNXNetworkLinkIP.java:503) ~[bundleFile:?]
	at tuwien.auto.calimero.link.AbstractLink.send(AbstractLink.java:397) ~[bundleFile:?]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.sendRequestWait(KNXNetworkLinkIP.java:480) ~[bundleFile:?]
	at tuwien.auto.calimero.mgmt.TransportLayerImpl.sendDisconnect(TransportLayerImpl.java:618) ~[bundleFile:?]
	at tuwien.auto.calimero.mgmt.TransportLayerImpl.checkSendDisconnect(TransportLayerImpl.java:610) ~[bundleFile:?]
	at tuwien.auto.calimero.mgmt.TransportLayerImpl.handleConnected(TransportLayerImpl.java:525) ~[bundleFile:?]
	at tuwien.auto.calimero.mgmt.TransportLayerImpl$NLListener.indication(TransportLayerImpl.java:137) ~[bundleFile:?]
	at tuwien.auto.calimero.link.AbstractLink$LinkNotifier.lambda$frameReceived$1(AbstractLink.java:204) ~[bundleFile:?]
	at tuwien.auto.calimero.internal.EventListeners.fire(EventListeners.java:137) [bundleFile:?]
	at tuwien.auto.calimero.link.EventNotifier.fire(EventNotifier.java:169) [bundleFile:?]
	at tuwien.auto.calimero.link.EventNotifier.run(EventNotifier.java:88) [bundleFile:?]
2024-01-04 09:13:32.546 [WARN ] [calimero.mgmt.TL 192.168.2.253:3671] - disconnected not gracefully (timeout)
tuwien.auto.calimero.KNXTimeoutException: no confirmation reply received for 0.0.0->1.1.11 L_Data.req, system priority hop count 6 repeat, tpdu 81
	at tuwien.auto.calimero.knxnetip.ClientConnection.doExtraBlockingModes(ClientConnection.java:271) ~[bundleFile:?]
	at tuwien.auto.calimero.knxnetip.ConnectionBase.send(ConnectionBase.java:268) ~[bundleFile:?]
	at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.send(KNXnetIPTunnel.java:213) ~[bundleFile:?]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.doSend(KNXNetworkLinkIP.java:515) ~[bundleFile:?]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.onSend(KNXNetworkLinkIP.java:503) ~[bundleFile:?]
	at tuwien.auto.calimero.link.AbstractLink.send(AbstractLink.java:397) ~[bundleFile:?]
	at tuwien.auto.calimero.link.KNXNetworkLinkIP.sendRequestWait(KNXNetworkLinkIP.java:480) ~[bundleFile:?]
	at tuwien.auto.calimero.mgmt.TransportLayerImpl.sendDisconnect(TransportLayerImpl.java:618) ~[bundleFile:?]
	at tuwien.auto.calimero.mgmt.TransportLayerImpl.checkSendDisconnect(TransportLayerImpl.java:610) ~[bundleFile:?]
	at tuwien.auto.calimero.mgmt.TransportLayerImpl.handleConnected(TransportLayerImpl.java:525) ~[bundleFile:?]
	at tuwien.auto.calimero.mgmt.TransportLayerImpl$NLListener.indication(TransportLayerImpl.java:137) ~[bundleFile:?]
	at tuwien.auto.calimero.link.AbstractLink$LinkNotifier.lambda$frameReceived$1(AbstractLink.java:204) ~[bundleFile:?]
	at tuwien.auto.calimero.internal.EventListeners.fire(EventListeners.java:137) [bundleFile:?]
	at tuwien.auto.calimero.link.EventNotifier.fire(EventNotifier.java:169) [bundleFile:?]
	at tuwien.auto.calimero.link.EventNotifier.run(EventNotifier.java:88) [bundleFile:?]

For background, I have a Weinzierl IP interface 730 and my KNX binding is configured in the following KNX.things file:

KNX.things

Bridge knx:ip:Gateway "KNX/IP Gateway"  [
													type="TUNNEL",
													useNAT="false",
													readRetriesLimit="3",
													ipAddress="192.168.2.253",
													autoReconnectPeriod="60",
													localIp="192.168.2.3",
													localSourceAddr="0.0.0",
													readingPause="50",
													portNumber="3671",
													responseTimeout="10"
													]

{

// ------ Lichtaktoren
	Thing	knx:device:LichtAktor1				"KNX Licht Aktor 1"					[address="1.1.221"]
		{
		Type switch : Licht_EG_Flur						"Licht Flur EG"						[ga="2/1/1+<2/0/1"]
		Type switch : Licht_EG_Wohnzimmer				"Licht Wohnzimmer"					[ga="2/1/2+<2/0/2"]
		Type switch : Licht_EG_EsszimmerWand			"Licht Esszimmer Wand"				[ga="2/1/6+<2/0/6"]
		Type switch : Licht_EG_Kueche		        	"Licht Küche"						[ga="2/1/8+<2/0/8"]
		Type switch : Licht_EG_KuecheSpuele       		"Licht Spüle"						[ga="2/1/9+<2/0/9"]
		Type switch : Licht_OG_Flur						"Licht Flur OG"						[ga="2/1/15+<2/0/15"]
		Type switch : Licht_OG_Masterbad				"Licht Masterbad"					[ga="2/1/19+<2/0/19"]

// ------ Rollos		
	Thing	knx:device:RolloAktor1	 			"KNX Rollo Aktor EG"				[address="1.1.241", readInterval=10]
		{
		Type rollershutter : Rollo_EG_Wohnzimmer		"Rollo Wohnzimmer"					[upDown="1/1/1",	stopMove="1/4/1",	position="1/2/1+<1/3/1"]
		Type rollershutter : Rollo_EG_EsszimmerL		"Rollo Esszimmer L"					[upDown="1/1/2",	stopMove="1/4/2",	position="1/2/2+<1/3/2"]
		Type rollershutter : Rollo_EG_EsszimmerR		"Rollo Esszimmer R"					[upDown="1/1/3",	stopMove="1/4/3",	position="1/2/3+<1/3/3"]
		Type rollershutter : Rollo_EG_KuecheL			"Rollo Küche L"						[upDown="1/1/4",	stopMove="1/4/4",	position="1/2/4+<1/3/4"]
		Type rollershutter : Rollo_EG_KuecheR			"Rollo Küche R"						[upDown="1/1/5",	stopMove="1/4/5",	position="1/2/5+<1/3/5"]
		Type rollershutter : Rollo_OG_Schlafzimmer		"Rollo Schlafzimmer"				[upDown="1/1/6",	stopMove="1/4/6",	position="1/2/6+<1/3/6"]
		}
... etc... }

It is possible that the following log messages are related to this, because at irregular intervals I get the following log entries.

2024-01-03 23:36:02.929 [WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 2/0/23, the number of maximum retries (3) is reached.
2024-01-03 23:36:13.002 [WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 2/0/11, the number of maximum retries (3) is reached.
2024-01-03 23:36:23.074 [WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 2/0/22, the number of maximum retries (3) is reached.

GA: 2/0/… As you can see above, GA 2/0/… Lighting status information.

I have no idea where to start with the troubleshooting, OH or even at the KNX installation?
I am very grateful for any helpful information.

Thank you very much.
Bernd

I searched a lot (even with google) but untill now I didn’t found something…
Now I hit this thread, what seems very similar…

however, I don’t understand the possible solution…

I’ve got an Weinzierl IP interface 730 also, and my bridge is configrued like this on a standalone Raspi (no docker):

UID: knx:ip:local
label: KNX/IP Gateway
thingTypeUID: knx:ip
configuration:
  useNAT: true
  readRetriesLimit: 3
  ipAddress: 192.168.78.33
  autoReconnectPeriod: 60
  localSourceAddr: 0.0.0
  readingPause: 50
  type: TUNNEL
  portNumber: 3671
  responseTimeout: 10

from what I see, the useNAT is true at my config.
What KNX-address does your Weinzierl have?

Hi,

on KNX-Bus: 1.1.255

image

That’s ok, these are standard Weinzierl information - and the same with mine.

Next up: how’s your configuration for

  1. your actuator with KNX address 1.1.11
  2. your actuatur using the GAs throwing the WARNs:
    ** 2/0/3, 2/0/11, 2/0/22

These messages:

[WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 2/0/23, the number of maximum retries (3) is reached.
[WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 2/0/11, the number of maximum retries (3) is reached.
[WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 2/0/22, the number of maximum retries (3) is reached.

are about datapoints, which are set to get read (i.e. < in front of the GA) but aren’t readable.
Please be aware that for successful read requests, there has to be exactly (!) one CO which is configured with

  • the corresponding GA as first (or main) GA
  • at least the Flags set to Communication and Rear (in german Kommunikation and Lesen)

So either correct the configuration in ETS or get rid of the < in front of the GA 2/0/11, 2/0/22 and 2/0/23

Hi Udo,

I did check the ETS Flags an indeed, there have benn missing some “Read” Flags…
We will see if the Log Warnings are gone now…

But there are outhers:

/var/log/openhab/openhab.log

2024-01-05 16:33:34.140 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'knx.things'
2024-01-05 16:33:34.210 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'knx.things', using it anyway:
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
...

I’m pretty sure to configure each Thing correct (like docs), but each single Thing throws the “Validation Error”…

// * ---------- KNX ---------- *//
//

Bridge knx:ip:bridge "KNX/IP Gateway"  [
													type="TUNNEL",
													useNAT="false",
													readRetriesLimit="3",
													ipAddress="192.168.28.253",
													autoReconnectPeriod="60",
													localIp="192.168.28.93",
													localSourceAddr="0.0.0",
													readingPause="50",
													portNumber="3671",
													responseTimeout="10"
													]

{

	Thing	knx:device:BinEingang1				"KNX Binär Eingang 1"				[address="1.1.201"]
	Thing	knx:device:BinEingang2				"KNX Binär Eingang 2"				[address="1.1.202"]

// ------ Rollos		
	Thing	knx:device:RolloAktor1	 			"KNX Rollo Aktor EG"				[address="1.1.211", readInterval=10]
		{
		Type rollershutter : Rollo_EG_1				"Rollo 1"							[upDown="1/1/1",	stopMove="1/4/1",	position="1/2/1+<1/3/1"]
		Type rollershutter : Rollo_EG_2L			"Rollo 2 L"							[upDown="1/1/2",	stopMove="1/4/2",	position="1/2/2+<1/3/2"]
		Type rollershutter : Rollo_EG_2R			"Rollo 2 R"							[upDown="1/1/3",	stopMove="1/4/3",	position="1/2/3+<1/3/3"]
		Type rollershutter : Rollo_EG_3L			"Rollo 3 L"							[upDown="1/1/4",	stopMove="1/4/4",	position="1/2/4+<1/3/4"]
		Type rollershutter : Rollo_EG_3R			"Rollo 3 R"							[upDown="1/1/5",	stopMove="1/4/5",	position="1/2/5+<1/3/5"]
		Type rollershutter : Rollo_OG_4				"Rollo 4"							[upDown="1/1/6",	stopMove="1/4/6",	position="1/2/6+<1/3/6"]
		Type rollershutter : Rollo_OG_5l			"Rollo 5 L"							[upDown="1/1/7",	stopMove="1/4/7",	position="1/2/7+<1/3/7"]
		Type rollershutter : Rollo_OG_5r			"Rollo 5 R"							[upDown="1/1/8",	stopMove="1/4/8",	position="1/2/8+<1/3/8"]
		}
		
	Thing	knx:device:RolloAktor2				"KNX Rollo Aktor OG"				[address="1.1.212", readInterval=10]
		{
		Type rollershutter : Rollo_OG_6L			"Rollo 5 L"							[upDown="1/1/9", 	stopMove="1/4/9", 	position="1/2/9+<1/3/9"]
		Type rollershutter : Rollo_OG_6R			"Rollo 5 R"							[upDown="1/1/10", 	stopMove="1/4/10", 	position="1/2/10+<1/3/10"]
		}

// ------ Lichtaktoren
	Thing	knx:device:LichtAktor1				"KNX Licht Aktor 1"					[address="1.1.221"]
		{	
		Type switch : Licht_EG_0					"Licht 0 EG"						[ga="2/1/1+<2/0/1"]
		Type switch : Licht_EG_1					"Licht 1"							[ga="2/1/2+<2/0/2"]
		Type switch : Licht_EG_2					"Licht 2"							[ga="2/1/6+<2/0/6"]
		Type switch : Licht_EG_3		        	"Licht 3"							[ga="2/1/8+<2/0/8"]
		Type switch : Licht_EG_3a       			"Licht 3a"							[ga="2/1/9+<2/0/9"]
		Type switch : Licht_OG_0					"Licht 0 OG"						[ga="2/1/15+<2/0/15"]
		Type switch : Licht_OG_4					"Licht 4"							[ga="2/1/19+<2/0/19"]
		Type switch : Licht_OG_4RGB					"Licht 4 RGB"						[ga="2/1/20+<2/0/20"]
		}
...}

Do you have a hint @Udo_Hartmann what’s wrong?

If I add Channels:after Thing {

It doesn’t change anything…

Thing device RolloAktor2

You simply mixed up two different ways to configure. Either set bridge and thing independent (i.e. you’ll have to set the whole UID and the bridge separately:

Bridge knx:ip:bridge "KNX/IP Gateway" [
    type="TUNNEL",
    ipAddress="192.168.28.253",
    localIp="192.168.28.93" //,
 // useNAT="false",
 // readRetriesLimit="3",
 // autoReconnectPeriod="60",
 // localSourceAddr="0.0.0",
 // readingPause="50",
 // portNumber="3671",
 // responseTimeout="10"
 ] 
Thing knx:device:bridge:BinEingang1 "KNX Binär Eingang 1" [address="1.1.201"] (knx:ip:bridge)
Thing knx:device:bridge:BinEingang2 "KNX Binär Eingang 2" [address="1.1.202"] (knx:ip:bridge)

// ------ Rollos        
Thing knx:device:bridge:RolloAktor1 "KNX Rollo Aktor EG" [address="1.1.211"] (knx:ip:bridge) //, readInterval=10] { // don't use readInterval here
    Type rollershutter : Rollo_EG_1  "Rollo 1"   [upDown="1/1/1", stopMove="1/4/1", position="1/2/1+<1/3/1"]
    Type rollershutter : Rollo_EG_2L "Rollo 2 L" [upDown="1/1/2", stopMove="1/4/2", position="1/2/2+<1/3/2"]
    Type rollershutter : Rollo_EG_2R "Rollo 2 R" [upDown="1/1/3", stopMove="1/4/3", position="1/2/3+<1/3/3"]
    Type rollershutter : Rollo_EG_3L "Rollo 3 L" [upDown="1/1/4", stopMove="1/4/4", position="1/2/4+<1/3/4"]
    Type rollershutter : Rollo_EG_3R "Rollo 3 R" [upDown="1/1/5", stopMove="1/4/5", position="1/2/5+<1/3/5"]
    Type rollershutter : Rollo_OG_4  "Rollo 4"   [upDown="1/1/6", stopMove="1/4/6", position="1/2/6+<1/3/6"]
    Type rollershutter : Rollo_OG_5l "Rollo 5 L" [upDown="1/1/7", stopMove="1/4/7", position="1/2/7+<1/3/7"]
    Type rollershutter : Rollo_OG_5r "Rollo 5 R" [upDown="1/1/8", stopMove="1/4/8", position="1/2/8+<1/3/8"]
}
Thing knx:device:bridge:RolloAktor2 "KNX Rollo Aktor OG" [address="1.1.212"] (knx:ip:bridge) // , readInterval=10] { // don't use readInterval here
    Type rollershutter : Rollo_OG_6L "Rollo 5 L" [upDown="1/1/9",  stopMove="1/4/9",  position="1/2/9+<1/3/9"]
    Type rollershutter : Rollo_OG_6R "Rollo 5 R" [upDown="1/1/10", stopMove="1/4/10", position="1/2/10+<1/3/10"]
}

// ------ Lichtaktoren
Thing knx:device:bridge:LichtAktor1 "KNX Licht Aktor 1" [address="1.1.221"] (knx:ip:bridge) {
    Type switch : Licht_EG_0    "Licht 0 EG"  [ga="2/1/1+<2/0/1"]
    Type switch : Licht_EG_1    "Licht 1"     [ga="2/1/2+<2/0/2"]
    Type switch : Licht_EG_2    "Licht 2"     [ga="2/1/6+<2/0/6"]
    Type switch : Licht_EG_3    "Licht 3"     [ga="2/1/8+<2/0/8"]
    Type switch : Licht_EG_3a   "Licht 3a"    [ga="2/1/9+<2/0/9"]
    Type switch : Licht_OG_0    "Licht 0 OG"  [ga="2/1/15+<2/0/15"]
    Type switch : Licht_OG_4    "Licht 4"     [ga="2/1/19+<2/0/19"]
    Type switch : Licht_OG_4RGB "Licht 4 RGB" [ga="2/1/20+<2/0/20"]
}
...

or use hierarchical definition:

Bridge knx:ip:bridge "KNX/IP Gateway" [
    type="TUNNEL",
    ipAddress="192.168.28.253",
    localIp="192.168.28.93" //,
 // useNAT="false",
 // readRetriesLimit="3",
 // autoReconnectPeriod="60",
 // localSourceAddr="0.0.0",
 // readingPause="50",
 // portNumber="3671",
 // responseTimeout="10"
 ] {
    Thing device BinEingang1 "KNX Binär Eingang 1" [address="1.1.201"]
    Thing device BinEingang2 "KNX Binär Eingang 2" [address="1.1.202"]

// ------ Rollos        
    Thing device RolloAktor1 "KNX Rollo Aktor EG" [address="1.1.211"] { //, readInterval=10] { // don't use readInterval here
        Type rollershutter : Rollo_EG_1  "Rollo 1"   [upDown="1/1/1", stopMove="1/4/1", position="1/2/1+<1/3/1"]
        Type rollershutter : Rollo_EG_2L "Rollo 2 L" [upDown="1/1/2", stopMove="1/4/2", position="1/2/2+<1/3/2"]
        Type rollershutter : Rollo_EG_2R "Rollo 2 R" [upDown="1/1/3", stopMove="1/4/3", position="1/2/3+<1/3/3"]
        Type rollershutter : Rollo_EG_3L "Rollo 3 L" [upDown="1/1/4", stopMove="1/4/4", position="1/2/4+<1/3/4"]
        Type rollershutter : Rollo_EG_3R "Rollo 3 R" [upDown="1/1/5", stopMove="1/4/5", position="1/2/5+<1/3/5"]
        Type rollershutter : Rollo_OG_4  "Rollo 4"   [upDown="1/1/6", stopMove="1/4/6", position="1/2/6+<1/3/6"]
        Type rollershutter : Rollo_OG_5l "Rollo 5 L" [upDown="1/1/7", stopMove="1/4/7", position="1/2/7+<1/3/7"]
        Type rollershutter : Rollo_OG_5r "Rollo 5 R" [upDown="1/1/8", stopMove="1/4/8", position="1/2/8+<1/3/8"]
    }
    Thing device RolloAktor2 "KNX Rollo Aktor OG" [address="1.1.212"] { // , readInterval=10] { // don't use readInterval here
        Type rollershutter : Rollo_OG_6L "Rollo 5 L" [upDown="1/1/9",  stopMove="1/4/9",  position="1/2/9+<1/3/9"]
        Type rollershutter : Rollo_OG_6R "Rollo 5 R" [upDown="1/1/10", stopMove="1/4/10", position="1/2/10+<1/3/10"]
    }

// ------ Lichtaktoren
    Thing device LichtAktor1 "KNX Licht Aktor 1" [address="1.1.221"] {
        Type switch : Licht_EG_0    "Licht 0 EG"  [ga="2/1/1+<2/0/1"]
        Type switch : Licht_EG_1    "Licht 1"     [ga="2/1/2+<2/0/2"]
        Type switch : Licht_EG_2    "Licht 2"     [ga="2/1/6+<2/0/6"]
        Type switch : Licht_EG_3    "Licht 3"     [ga="2/1/8+<2/0/8"]
        Type switch : Licht_EG_3a   "Licht 3a"    [ga="2/1/9+<2/0/9"]
        Type switch : Licht_OG_0    "Licht 0 OG"  [ga="2/1/15+<2/0/15"]
        Type switch : Licht_OG_4    "Licht 4"     [ga="2/1/19+<2/0/19"]
        Type switch : Licht_OG_4RGB "Licht 4 RGB" [ga="2/1/20+<2/0/20"]
    }
...}
1 Like

Just switch from file-definitions to UI-definitions. There’s nothing missing, on the contrary UI-based configuration offers some more hints and makes sure, there’s no typos.

PS: you don’t have to add the KNX addresses to the things as the Weinzierl 730 doesn’t support router functionality, so it’s kinda useless. You could pack all your GAs to one Thing and still everything works.
Just to be on the safe side and because I can compare OH-config with ETS-config I created a thing for each actuator…

Thank you Udo,

that helps.!!

But let’s be honest, that’s not recognizable from the documentary. :slight_smile:

Well, the first option isn’t mentioned in knx context.
However, there are other examples such as mqtt things and channels where this format is used.
Both options are valid for every “bridged” binding :slight_smile:
But for sure either use option one or option two but never option one inside option two…