KNX Binding Reading Error DPT13

I am running OH 4.2.0 on Docker and having difficulties reading a KNX Binary Counter (Weinzierl IO411) - especially with 32 bit integer DPT13 values

Here is my knx.thing:

Bridge knx:ip:bridge "KNX IP Router 751" [
    type="TUNNEL",
    ipAddress="192.168.1.123", // Replace with your KNX IP Interface address
    portNumber=3671,
    useNAT=true
] { 
    Thing device binary_input "Wasserverbrauch Zähler" @ "Technikraum" [
        address="1.1.4"
    ] {
        //Type number : zaehlerstand      "Zählerstand"       [ ga="<5/1/1", dpt="13.1200" ] //does not work
        Type number : zaehlerstand      "Zählerstand"       [ ga="<5/1/1", dpt="14.056" ] // i get some values
        Type number : momentverbrauch   "Momentverbrauch"   [ ga="<5/1/5", dpt="9.025" ]
    }

}

and here my things file:

Group Technikraum "Technikraum" ["Location"]
Group KNX_IP_Gateway "KNX IP Router" (Technikraum) ["Equipment"]

//Number:Volume Wasserverbrauch "Wasserverbrauch [%.1f L]" (KNX_IP_Gateway) ["Measurement", "Water", "Tag1"] { channel="knx:device:bridge:binary_input:zaehlerstand" }
Number Wasserverbrauch "Wasserverbrauch [ l]" (KNX_IP_Gateway) ["Measurement", "Water", "Tag1"] { channel="knx:device:bridge:binary_input:zaehlerstand" }
Number:VolumetricFlowRate Momentverbrauch "Momentverbrauch [%.1f L/h]" (KNX_IP_Gateway)  ["Measurement", "Water", "Tag2"] { channel="knx:device:bridge:binary_input:momentverbrauch" }

So far so good, now to the problem:

On the Weinzierl IO411 it is possible to set the Counter Datapoint Type.
When i do configure it with Datapoint Type “Float (32bit) - DPT14” i get some values in OH, despite not correct ones (Values should be something like 96,5 and not 1820.16)

ETS6 groupmonitor output:

#	Zeit	Dienst	Flags 	Prio	Quelladresse	Quellname	Zieladresse	Zielname	Gebäudefunktion	Gebäudeteil	Hop Count	Typ	DPT	Info
8	01.08.2024 18:07:12,427	vom Bus		Niedrig	1.1.4	KNX IO 411 (4Ii)	5/1/1	Impulszähler			6	GroupValue_Write	  14.056 Leistung (W)	42 C1 00 00 | 96,5 W
9	01.08.2024 18:07:12,642	vom Bus		Niedrig	1.1.4	KNX IO 411 (4Ii)	5/1/1	Impulszähler			6	GroupValue_Write	  14.056 Leistung (W)	42 C3 00 00 | 97,5 W
10	01.08.2024 18:07:13,439	vom Bus		Niedrig	1.1.4	KNX IO 411 (4Ii)	5/1/1	Impulszähler			6	GroupValue_Write	  14.056 Leistung (W)	42 C5 00 00 | 98,5 W

openhab console (with log:set DEBUG org.openhab.binding.knx and log:tail):

18:07:15.618 [DEBUG] [x.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:binary_input' received a GroupValueWrite telegram from '1.1.4' for destination '5/1/1'
18:07:15.630 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Wasserverbrauch' changed from 1815.04 to 1820.16
18:07:17.095 [DEBUG] [x.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:binary_input' received a GroupValueWrite telegram from '1.1.4' for destination '5/1/1'
18:07:17.107 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Wasserverbrauch' changed from 1820.16 to 1825.28
18:07:17.499 [DEBUG] [x.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:binary_input' received a GroupValueWrite telegram from '1.1.4' for destination '5/1/1'
18:07:17.510 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Wasserverbrauch' changed from 1825.28 to 1830.4

When i configure the IO411 to use a DPT13 32bit integer as Counter Datapoint Type, the correct values are sent (ETS log), the OH Binding is receiving the Group Address, but is NOT updating the corresponding Item :face_with_raised_eyebrow:

ETS Group Monitor:

#	Zeit	Dienst	Flags 	Prio	Quelladresse	Quellname	Zieladresse	Zielname	Gebäudefunktion	Gebäudeteil	Hop Count	Typ	DPT	Info
3	01.08.2024 18:15:55,244	vom Bus		Niedrig	1.1.4	KNX IO 411 (4Ii)	5/1/1	Impulszähler			6	GroupValue_Write	  13.1200 Delta Volumen Flüssigkeit (l)	00 00 00 67 | 103 l
4	01.08.2024 18:15:55,767	vom Bus		Niedrig	1.1.4	KNX IO 411 (4Ii)	5/1/1	Impulszähler			6	GroupValue_Write	  13.1200 Delta Volumen Flüssigkeit (l)	00 00 00 68 | 104 l
5	01.08.2024 18:15:56,011	vom Bus		Niedrig	1.1.4	KNX IO 411 (4Ii)	5/1/1	Impulszähler			6	GroupValue_Write	  13.1200 Delta Volumen Flüssigkeit (l)	00 00 00 69 | 105 l

Openhab Debug Log:

18:15:55.304 [DEBUG] [x.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:binary_input' received a GroupValueWrite telegram from '1.1.4' for destination '5/1/1'
18:15:55.827 [DEBUG] [x.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:binary_input' received a GroupValueWrite telegram from '1.1.4' for destination '5/1/1'
18:15:56.072 [DEBUG] [x.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:binary_input' received a GroupValueWrite telegram from '1.1.4' for destination '5/1/1'

So despite having problems to get the counter object values, the 16 bit float “rate of change / current consumption” object from the IO411 is working without problems with OH:
Type number : momentverbrauch "Momentverbrauch" [ ga="<5/1/5", dpt="9.025" ]

18:07:28.084 [DEBUG] [x.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:binary_input' received a GroupValueWrite telegram from '1.1.4' for destination '5/1/5'
18:07:28.106 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Momentverbrauch' changed from 1 l/min to 0 l/min

I have tried to enable/disable the “UoM” switch in the KNX Binding settings, but i did not make any difference.

Anybody knows what is going on here? I am pretty lost at the moment…

Kind Regards,
Stefan

First: I’m pretty sure there is no such parameter as dpt.
Second: 13.1200 is DPT_DeltaVolumeLiquid_Litre, maybe
you want 12.1200 DPT_VolumeLiquid_Litre instead.

DPT 12 is 32bit unsigned long,
DPT 13 is 32bit signed long,
DPT 14 is 32bit float.

correct configuration would be

Bridge knx:ip:bridge "KNX IP Router 751" [
    type="TUNNEL",
    ipAddress="192.168.1.123", // Replace with your KNX IP Interface address
    portNumber=3671,
    useNAT=true
] { 
    Thing device binary_input "Wasserverbrauch Zähler" @ "Technikraum" [
        address="1.1.4"
    ] {
      // either first or second line
      // Type number : zaehlerstand "Zählerstand" [ ga="13.1200:<5/1/1" ] // delta, signed
      // Type number : zaehlerstand "Zählerstand" [ ga="12.1200:<5/1/1" ] // absolute, unsigned
    }

}
1 Like

oh my god, you are right!
i don’t know where this dpt= came from, but i did not question it once it was there :sweat_smile:

This is how it is working now:

things:

Type number : zaehlerstand      "Zählerstand"       [ ga="13.1200:<5/1/1"] 
Type number : momentverbrauch   "Momentverbrauch"   [ ga="9.025:<5/1/5" ]

(The IO411 does not have the option for sending DPT12)

items:

Number:Volume               Wasserverbrauch "Wasserverbrauch "  (KNX_IP_Gateway)    ["Measurement", "Water", "Tag1"] { unit="l", channel="knx:device:bridge:binary_input:zaehlerstand" }
Number:VolumetricFlowRate   Momentverbrauch "Momentverbrauch"   (KNX_IP_Gateway)    ["Measurement", "Water", "Tag2"] { unit="l/h", channel="knx:device:bridge:binary_input:momentverbrauch" }

thanks a lot!

1 Like