KNX DPT types in openHAB 3

Hi.

I have problems to get the right DPT in OH3. Is there a place where you can specify the DPT?
I need the HAVC DPT 20.102 or any unsigned Byte type, can also use DPT 5.

Has also problems whit the current DPT 7.001 that is 2 Byte value(0…65535) that OH3 handels as float.

ROS

Specific DPT are part of the group adress configuration in the knx binding.

image

You have to set DPT:GroupAdress.

See KNX Binding Doc for Group Adress Notation for more information.

Thank you Confectrician

1 Like

Hi Ros,

Did you manage to get this working?
I’m not able to send values out to the bus by creating a channel with DPT 20.105 for my HVAC mode.
Honestly i’m not sure which item to create?

I tried to create a Switch and list item with mappings to the corresponding values eg:
0=auto
1=heat
2=warmup
4=cool
etc…

Did you create a switch in sitemap or a switch item?

I created a number item and a switch in sitemap indeed.
Also tried string item and switch in sitemap.

Both no success…

I have nothing for numbers to test here unfortunately, but theoretically

  • Number Item with Switch in Sitemap (+ Mappings )

should do the trick.

How did you configure the channel?

My channel config looks like this:

  - id: Kantoor_airco_mode
    channelTypeUID: knx:number
    label: Kantoor airco mode
    description: ""
    configuration:
      ga: 20.105:3/6/76+<3/6/81

I don’t now where to get a code view of the item, but it’s a number item without any extra configuration…

Then sitemap configuration looks like this:

Text icon="temp_frost" label="Airco kantoor" {
   Switch icon="snow" label="Airco on/off" item=KNXgenericdevice_Kantooraircoswitch
   Setpoint icon="temp_temperature" label="Setpoint" item=KNXgenericdevice_Kantooraircosetpoint
   Switch icon="vent_ventilation_level_manual_m" label="Fanspeed" item=KNXgenericdevice_Kantooraircofanspeed mappings=[1="Low",2="Med",3="High"]
   Switch icon="fts_blade_s_automatic" label="Swing" item=KNXgenericdevice_Kantooraircoswing
   Switch icon="fts_blade_s" label="Vleugel positie" item=KNXgenericdevice_Kantooraircovanesposition mappings=[1="1",2="2",3="3",4="4",5="5"]
   Switch item=KNXgenericdevice_Kantooraircomode label="Modus" mappings=[1="1",2="2",3="3"]
}

All other channels configured in sitemap work well including the 5.010 counter pulses for vanes & fan speed

Hi Calculator.

Yes, it works with DPT 5.010.

You need to send a Byte to your HVAC with the value you want to use.

This can be done by making a rule that.

1 Like

@ROS :That fixes the issue, message is sent to bus and status is updated… thanks!
@Confectrician :Thank you for trying to help me out!

Question remains why it’s working with DPT5.010 and it isn’t with DPT20.105…

For people trying to create HVAC mode control:

channel config:

  - id: Kantoor_airco_mode
    channelTypeUID: knx:number
    label: Kantoor airco mode
    description: ""
    configuration:
      ga: 5.010:3/6/76+<3/6/81

3/6/76 being control GA & 3/6/81 being status GA

Next create item with type number without any additional class.

Then implement Switch item in your sitemap as follows:

Text icon="temp_frost" label="Airco kantoor" {
   Switch icon="snow" label="Airco on/off" item=KNXgenericdevice_Kantooraircoswitch
   Setpoint icon="temp_temperature" label="Setpoint" item=KNXgenericdevice_Kantooraircosetpoint
   Switch icon="vent_ventilation_level_manual_m" label="Fanspeed" item=KNXgenericdevice_Kantooraircofanspeed mappings=[1="Low",2="Med",3="High"]
   Switch icon="fts_blade_s_automatic" label="Swing" item=KNXgenericdevice_Kantooraircoswing
   Switch icon="fts_blade_s" label="Vleugel positie" item=KNXgenericdevice_Kantooraircovanesposition mappings=[1="1",2="2",3="3",4="4",5="5"]
   Switch item=KNXgenericdevice_Kantooraircomode label="Modus" mappings=[0="Aut", 1="Heat", 3="Cool", 9="Fan", 14="Dry"]
}
1 Like

According to:

The significant difference should be that DPT 20.105 is an 8 bit enumeration and DPT 5.010 is just an 8-bit value.
Possible that the knx library doesn’t handle the command properly.

I also think something there…
Anyway, there is no harm implementing the way i just did, it works like a charm!
Thanks again

1 Like

The knx binding follows the dpt translators of the underlying calimero libraries. Calimero started to treat the 8 bit enumeration as strings to represent the allowed values and translates them from/to the knx bus accordingly.

So if, e.g. you want to send the value 0 to the knx bus for the DPT 20.105, you have to link the thing channel to a string item and send the value Auto.

The other mappings can be found in the calimero translator code:

https://github.com/calimero-project/calimero-core/blob/master/src/tuwien/auto/calimero/dptxlator/DPTXlator8BitEnum.java

The strings follow the official knx DPT specification. So, if you have a copy of that document, just take the values from there.

Please have in mind that the values can contain blanks like Building Protection, which is the correct value for DPT 20.102, value 4.

1 Like

Just stumbled across this. I have mostly GIRA actuators (in this case the thermostats are in the sensors: 3 Plus 5fach), which I connected with 20.102 also in ETS programming:

  - id: SchlafzimmerHVAC
    channelTypeUID: knx:number
    label: Schlafzimmer HVAC
    description: ""
    configuration:
      ga: 20.102:8/5/3+<20.102:8/5/13

works for me, even via alexa commands, because the item is a Number and the Alexa metadata

value: Endpoint.Thermostat
config:
  category: THERMOSTAT
  scale: Celsius

Communication is done via Weinzierl IP Interface 730.
don’t know, if this is helpful for others…