KNX: Temperature channel only working if bindingis set to "tunnel" instead of "router"

I have set-up the KNX binding in router mode and it is working fine for switches and rollershutters.

Now I added a switch which does provide the room’s temperature (MDT glass switch 2) as thing. Further I added a channel type Number to it and linked it to a point set to temperature/number:temperature.

If I set the KNX binding to Tunnel it works, i.e. shows the temperature, if I set the KNX binding to router it does not get any info and remains at NULL.

From the event stream when tunnel is enabled:

  • openhab/items/KuecheGlastasterTemperatur/statechanged

ItemStateChangedEvent

{“type”:“Quantity”,“value”:“22.2 °C”,“oldType”:“Quantity”,“oldValue”:“22 °C”}

  • openhab/items/KuecheGlastasterTemperatur/state

ItemStateEvent

{“type”:“Decimal”,“value”:“22.2”}

How can I debug the reason it does not work when the binding is set to router?

Set the the binding log-level to DEBUG (or TRACE if you don’t receive the desired information) and show the log when you send a value. And show your configuration. Mine is:

UID: knx:ip:b22a68b7
label: KNX/IP Router
thingTypeUID: knx:ip
configuration:
  useNAT: false
  readRetriesLimit: 3
  ipAddress: 224.0.23.12
  localIp: 192.168.0.58
  autoReconnectPeriod: 60
  type: ROUTER
  localSourceAddr: 1.2.100
  readingPause: 50
  portNumber: 3671
  responseTimeout: 10

The config for Tunnel:

UID: knx:ip:e016ef5bd9
label: KNX/IP Gateway
thingTypeUID: knx:ip
configuration:
  useNAT: false
  readRetriesLimit: 3
  ipAddress: 192.168.178.20
  localIp: 192.168.178.29
  autoReconnectPeriod: 60
  type: TUNNEL
  localSourceAddr: 0.0.0
  readingPause: 50
  portNumber: 3671
  responseTimeout: 10
location: Keller

and Router:

UID: knx:ip:e016ef5bd9
label: KNX/IP Gateway
thingTypeUID: knx:ip
configuration:
  useNAT: false
  readRetriesLimit: 3
  ipAddress: 224.0.23.12
  localIp: 192.168.178.29
  autoReconnectPeriod: 60
  type: ROUTER
  localSourceAddr: 0.0.0
  readingPause: 50
  portNumber: 3671
  responseTimeout: 10
location: Keller

I see the value sent on the bus in the ETS:

If the value did not change there is nothing shown in the logs, no matter whether I have the binding set to tunnel or router.

If the value changed and I have set the binding to tunnel I see something like:

2021-09-26 13:24:26.290 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘KuecheGlastasterTemperatur’ changed from 22.6 °C to 22.7 °C

Try setting the localSourceAddress

That’s ordinary enough; by default only state changes are logged.
If you did want to monitor for Item update-to-same, simplest is to make a little rule triggered on update that logs.

I tried setting a localSourceAdress. With and without having a dummy device in the KNX line.

Unfortunately that result in the bridge still showing online while the devices show offline. What kind of device do you have in the ETS for 1.2.100?

I am fine with only updating if there is a change. But with the binding set to router neither the initial value after openhab started, nor the changes come through or appear in the log.

Log with the binding set to tunnel and localsourceaddress set to 0.0.0.

I supose that when changing to router KNX sends the same information but the binding still does not get it.

2021-09-26 18:44:48.824 [TRACE] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:e016ef5bd9:f7eea4f31b' processes a GroupValueWrite telegram for destination '3/1/0' for channel 'knx:device:e016ef5bd9:f7eea4f31b:KuecheTemperaturGlastaster'
2021-09-26 18:44:48.827 [TRACE] [g.knx.internal.dpt.KNXCoreTypeMapper] - toType datapoint DPT = 9.001
2021-09-26 18:45:25.089 [TRACE] [nx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.0.13' to '3/1/3' with value '[12, 96]'
2021-09-26 18:45:25.092 [DEBUG] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:e016ef5bd9:f261581f05' received a GroupValueWrite telegram from '1.0.13' for destination '3/1/3'
2021-09-26 18:45:25.096 [TRACE] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:e016ef5bd9:f261581f05' processes a GroupValueWrite telegram for destination '3/1/3' for channel 'knx:device:e016ef5bd9:f261581f05:SchlafzimmerGlastasterTemperatur'
2021-09-26 18:45:25.099 [TRACE] [g.knx.internal.dpt.KNXCoreTypeMapper] - toType datapoint DPT = 9.001
2021-09-26 18:45:48.813 [TRACE] [nx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.0.10' to '3/1/0' with value '[12, -125]'
2021-09-26 18:45:48.816 [DEBUG] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:e016ef5bd9:f7eea4f31b' received a GroupValueWrite telegram from '1.0.10' for destination '3/1/0'
2021-09-26 18:45:48.819 [TRACE] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:e016ef5bd9:f7eea4f31b' processes a GroupValueWrite telegram for destination '3/1/0' for channel 'knx:device:e016ef5bd9:f7eea4f31b:KuecheTemperaturGlastaster'
2021-09-26 18:45:48.822 [TRACE] [g.knx.internal.dpt.KNXCoreTypeMapper] - toType datapoint DPT = 9.001
2021-09-26 18:46:25.084 [TRACE] [nx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.0.13' to '3/1/3' with value '[12, 96]'
2021-09-26 18:46:25.087 [DEBUG] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:e016ef5bd9:f261581f05' received a GroupValueWrite telegram from '1.0.13' for destination '3/1/3'
2021-09-26 18:46:25.091 [TRACE] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:e016ef5bd9:f261581f05' processes a GroupValueWrite telegram for destination '3/1/3' for channel 'knx:device:e016ef5bd9:f261581f05:SchlafzimmerGlastasterTemperatur'
2021-09-26 18:46:25.094 [TRACE] [g.knx.internal.dpt.KNXCoreTypeMapper] - toType datapoint DPT = 9.001