KNX Climate heating actuator MDT

Seems they have changed the whole application for the .3 models in comparison to .1 and .2 which were previously discussed in this topic. So not everything you read here may apply.
You could consider to start a new topic with a small guide for others using this actuator when you have successfully configured it. :wink:

This is the default setpoint_shift_max value. So I guess it received something odd at target_temperature_state_address, or nothing at all (not sure of the top of my head what it does then). When it received eg. 0 as `target_temperature_state and you set the new temp to 21 it will not send 21, but the max value to the setpoint_shift_address.

Hi, I have now read through the KNX Climate documentation as well as this and 2 other threads related to my issue - but somehow I get nowhere. My current set-up works perfectly via the Gira Mobile App - but I’d like to have it also working in HA (and through HA in Homekit too). Whatever I tried, it did not work :confounded:

What I have:

  • Heating actuator: MDT AKH-0400.02
  • KNX server: Gira X1
  • Wall switch: Jung Universal

The only two communication objects of the heating actuator created in the ETS are:

  • Control value (4/2/50)
  • State control value (4/2/51)

I determine the actual temperature via a temperature sensor in the wall switch (7/2/50)
I enter the target temperature via the Gira Mobile App (4/2/52).
In the Gira X1 I have created a LBS that compares the target/setpoint (4/2/52) and actual (7/2/50) values and then outputs the control value (4/2/50).

So, I have these 4 group addresses:

  • 7/2/50 - Actual temperature
  • 4/2/50 - Control value
  • 4/2/51 - State control value
  • 4/2/52 - Target/Setpoint value

Most recently I tried in my knx-climate.yaml:

- name: "kitchen"                           # name
  temperature_address: "7/2/50"             # KNX group address for reading current room temperature from KNX bus. DPT 9.001
  target_temperature_address: "4/2/52"      # KNX group address for setting target temperature. DPT 9.001
  target_temperature_state_address: "?/?/?" # KNX group address for reading current target temperature from KNX bus. DPT 9.001
  min_temp: 17.0                            # Override the minimum temperature. 
  max_temp: 24.0                            # Override the maximum temperature.

The target_temperature_state_address is listed as required in the documentation.
Which address do I have to use here? Where do I get it from?

Whichever you can read the current target temperature from. Most use the regulator included in the heating actuator. If you prefer a regulator from an X1 logic you’ll have to add an address that responds to GroupValueRead requests there. It could also be a sepaarate address or the same as used for setting a new value (“4/2/52”).

ok, thanks a lot, so I will try “4/2/52” first:

- name: "kitchen"                             # name
  temperature_address: "7/2/50"               # KNX group address for reading current room temperature from KNX bus. DPT 9.001
  target_temperature_address: "4/2/52"        # KNX group address for setting target temperature. DPT 9.001
  target_temperature_state_address: "4/2/52"  # KNX group address for reading current target temperature from KNX bus. DPT 9.001
  min_temp: 17.0                              # Override the minimum temperature. 
  max_temp: 24.0                              # Override the maximum temperature.

To have an X1 respond to GroupValueRead requests you will have to configure it accordingly.

I would like to raise this topic again to see if anyone can help me here.

I have the following setup.

3 different rooms

Living room 0.2 with underfloor heating with 3 electric valves
Kitchen 0.3 with underfloor heating with 3 electric valves
Basement K.2 with underfloor heating with 2 electric valves

All valves are controlled by an MDT Heating Actuator AKH-0800.02

I also use a Theben KNX OT Box to control my central heating boiler via Openthem ( KNX-OT-Box S | System devices | KNX | Home and Building control | Theben )

In all rooms I use Ekinex Tasters with temperature sensors allowing me to control the temperature per room.

Currently I have the MDT Heating Actuator set up as follows:

A Mode Integrated controller for Basement K.2 and valve 1
B Mode Continuous for valve 2 for the Basement K.2
C Mode Integrated controller for Kitchen 0.3 and valve 1
D Mode Continuous for valve 2 for Kitchen 0.3
E Mode Continuous for valve 3 for Kitchen 0.3
F Mode Integrated controller for Living room 0.2 and valve 1
G Mode Continuous for valve 2 for Living room 0.2
H Mode Continuous for valve 3 for Living room 0.2

I have created the following group addresses. (see pictures)

Now I just don’t quite understand what exactly is the function of Setpoint value offset? I have only added it to the group address for the basement, but what exactly does it do?

I would also like to be able to see per room whether there is a heat demand? At the moment I take the address 0/0/17 to determine whether there is heat demand, but this is only for all groups at once. so every thermostat is “heating” also when only the valves of 1 room are open.

Is there any way to get this also from the MDT Heating actuator per group?

I guess state control value does exactly that - if this represents the valve control value.

That’s true but how can I convert this to a ON/OFF value because the State control value is from 0…255. For the heating request I need a ON/OFF value

For a climate entity use it for command_value_state_address. 0 will be idle, >0 active.
For other uses you can do same with a sensor entity and logic.
Otherwise see the actuators manual if it has this as binary too.

Ah perfect! This solution is working for the climate entity.

But can you maybe help me how I can build the logic from an KNX groupadress (or addresses) to an on/of state…

Like… Ik groupaddress 0/4/0 is >0 then put groupaddress 0/4/1 ON otherwise OFF

I can only find logic templates from entities and not from KNX group addresses within Home Assistant.

Create an entity (sensor) and use its state in a template entity.
Or use the climate entities attribute (hvac_action) in a template sensor.

Could you solve your Problem? What was the problem?

Hey Guys thank you at all that thread is really helpfull.
One more question i have. how can i configure and display the actual valve opening in percentage. In German it means Stellwert of the valve ? I have configured that he will sent the value when it is changed. But which variable it is in Homeassistant. It is under the climate or do i have to create a sensor for that ?

You can use climates command_value_state_address - it uses the value to determine idle / heating. And iirc it also sets an entity attribute.
Other than that you can always use a sensor.

1 Like

Thanks Matthias,
command_value_state_address im using alread for this i try to change my card for this maybe i will get a better graphical solution. If not i have to configure a sensor for it.

Another problem i have like we already talked in the discord.

If i change the HVAC Mode from Komfort to Night or Standby the Sollwert remains the actual one. But i want that the Sollwert will change to the Night or Standby temperature. In the ETS i can just config the Sollwertverschiebung for that Modes with -3K from the Sollwert. Which value i have to configure in the Homeassistant config and which KNX adress i need to use ? Somebody can help ?

So with help of Matthias i got a final configuration which is working fine for me in HA
This is working with MDT Glastaster I and MDT Heating Aktor AKH0800.002

  # Wohnzimmer
  - name: "Heizung Wohnzimmer"
    temperature_address: "2/1/30" # Temperaturmesswert
    temperature_step: 0.5
    target_temperature_address: "2/1/34" # Aktueller Sollwert
    target_temperature_state_address: "2/1/34" # Aktueller Sollwert
    command_value_state_address: "2/1/32" # Status Stellwert
    setpoint_shift_address: "2/1/33" # Sollwertverschiebung
    setpoint_shift_state_address: "2/1/33" # Sollwertverschiebung (lesend)
    setpoint_shift_mode: "DPT9002" # 2byte
    setpoint_shift_max: 3
    setpoint_shift_min: -3
    operation_mode_address: "2/1/35" # Betriebsmodus
    operation_mode_state_address: "2/1/36" # Betriebsmodus status


hopefully anybody can help. I’m triyng to get a hager knx easy climate connfiguration (txm646R) working in my home assistant.

So far so good. I can change mode, I can change the temperature and it shows me the setpoint.

But I would like to have the target temperature shown in the climate card and not the shift point.

Unfortunately there is no adress I could figure out where I can read the temperature state adress.

Can anybody help?

Here is my knx configuration:

And here is my home assistant configuration:

Screenshot 2023-09-29 123748

here the difference between my app and home assistant

Screenshot 2023-09-29 124121

It sets the shiftpoint to the configured mode. In that case 21° so shiftpoint 1,0 which is 22°.

Is it possible or do I need to create help entitiys to calculate the target temperature?

Edit: I think “Sollwert Heizung 8Byte” Could be the one. Unfortunately it shows NULL.

First of all, thank you for publishing the configuration. I have made the same settings in ETS and HA. However, I noticed that after a certain time, the setpoint and the operating mode change.

Do you have the same problem?

I’ve the following Problem in Home Assistant:
In general the Operating Modes of all termostats should be “Komfort”. So after I configured all rooms, I set every termostat to “Komfort”. But after a few Minutes the Operating Mode changed back to “Abwesend”. I don’t understand why.

Here are my rts settings: