2 Issues with KNX Thermostat / KNX Climate

I added in the config for the thermostat:

operation_modes:
  - 'Heat'
  - 'Cool'

It will only show - heat in the attributes though. I also tried without the single quotes (which passed the config validation test) and with all lower case (that failed the config validation test). I can set the state to cool in developer tools which works (this time it needs to be all lower case) and calling the service climate.set_hvac_mode with the entity id and `hvac_mode: cool (lowercase) didn’t throw an error but didn’t change the attribute of the thermostat either.

I’m noticing that HA won’t ever check on the thermostat set temperature after a reboot unless it is moved via HA first. Once it does then it’ll show it on the climate/tstat card in lovelace. If the set temperature is then changed via the physical thermostat it will show that change as normal. If I change the set temperature first via the physical thermostat first, before manipulating via HA, it won’t ever show in lovelace. Could this be because I have the same GA for target_temp_address and target_temp_state_address? Or is that normal?

climate:
  - platform: knx
    name: Livingroom Tstat
    on_off_address: '3/3/1'
    on_off_state_address: '3/4/1'
    target_temperature_address: '3/5/1'
    target_temperature_state_address: '3/5/1'
    temperature_address: '3/6/1'
    min_temp: 16.0
    max_temp: 26.0

Edit: Did some more playing troubleshooting and I think it’s related to the fact that I don’t have separate addresses for the set temp and the set temp state. I made all the set temps sensors in HA just to see what it shows. They all show up as “NaN” for temp until the value is moved. So I guess HA doesn’t go out and check the value after a reboot. Same is true for the overall system heating/cooling mode GA which is a single GA without a corresponding state GA.

The thermostat card also has some peculiar behaviour. With the set temp not touched after a reboot it’s just showing the measured room temp and the dial for set temp is pegged at the minimum. If I change the set temp outside of HA (physically on the tstat or via my KNX GUI) the HA sensor for the set temp will show the correct new value, the dial indicator in the tstat card will move to the correct position but it won’t show the set temp next to the measured temp like if I moved the set temp via the tstat card.

Did some more playing troubleshooting and I think it’s related to the fact that I don’t have separate addresses for the set temp and the set temp state.

Correct, the set temp address only updates after a chance, this also implies for ETS.

I found another issue, when my (KNX) thermostat is set to cool and HA reads the heat_cool_state_address
HA sets the UI thermostat on Cool-Away, strange because I didn’t change the HVAC mode (should still be in comfort mode).

I send cyclically the HVAC mode on the knx bus, after this HA sets the UI thermostat on Heat-Comfort.
(this should be Cool-Comfort) because I didn’t change the heat/cool

Somehow there seems to be an internal relation between the HVAC mode and heat/cool mode in the HA thermostat.

Does anyone knows a solution, or having the same issues?

This should be solved with the next update to the knx integration. https://github.com/XKNX/xknx/pull/460

See https://github.com/home-assistant/core/pull/42026

Installed the latest 0.118 version, did some quick testing.
Thermostat still has issues, changing in KNX from heating to cooling doesn’t update the HA thermostat.
The other way around is working correctly.

It switches to “away” mode in HA when change over from heating to cooling, doesn’t effect the actual mode on the KNX thermostat.

What is the other way around? from cooling to heating or from HA to KNX?
What telegrams does the actuator send when the change is made?

You issue the heat/cool change form KNX? Then HA changes to “away” and KNX shows “comfort” like when “heating” was active?

Switching from heating/cooling in HA is working, and updates the KNX groupaddresses.
When switching heating/cooling in KNX (ETS) is not updating the HA thermostat, or is there a delay in reading the KNX bus?

When switching from heating to cooling the HA thermostat changes to cooling-away (unwanted), but the operation mode in KNX doens’t change. (wanted)

A KNX thermostat has 2 different objects heating/cooling and operationmode, changing the heat/cool object, must not effect the operationmode.
and changing the opertationmode must not effect the heat/cool object.

@farmio I want to thank you and the other (x)knx developers and say that with 2020.12 climate controll is for the first time working for me and my binary mode thermostats. Both controlling the thermostats from lovelace and having them automatically update on bus messages. This is actually a personal milestone for me since I have been using Home Assistant for several years now and never have it worked before. Thank you so much :slight_smile:

(This thread is maybe not the best place to extend this thank you but I thought it was better than commenting on all the different closed Github issues and pr’s)

2 Likes

Dear Marius,
thanks for reminding us to thank all of those involved to bring this great software to life!

Would you mind posting your yaml code for your knx climate integrations. It would be a great learning experience for many on the forum.
Kind greetings,
Alex

Sure!

My 12 thermostats are all of the same type and they where installed back in 2007. They have “binary state”, so they have a bit (true/false or 1/0) flag for each of the modes comfort, sleep and eco. No state adresse for away so the away mode is triggered by all the three other flags beeing 0. Since they don’t have any shift point address, I have used the Max/Min and step parameters as well.

This is the now finally working configuration :slight_smile:

    - name: Bathroom
      on_off_address: '2/0/0'
      on_off_state_address: '2/5/0'
      operation_mode_comfort_address: '2/1/0'
      operation_mode_night_address: '2/2/0'
      operation_mode_frost_protection_address: '2/7/0'
      temperature_address: '2/3/0'
      target_temperature_address: '2/4/0'
      target_temperature_state_address: '2/6/0'
      min_temp: 5.0
      max_temp: 35.0
      temperature_step: 0.2

Sorry that I have to disagree on the working part.
in combination with cooling, described in my latest post above.

Did some testing. using the latest Home Assistant 2020.12.1 version.
It seems like the Away, Sleep and Eco modes got mixed up.

ETS - Homeassistant
Auto - None (geen)
Comfort - Comfort
Standby - Away (afwezig)
Economy - Sleep (slapen)
Building protect - Eco

Although the modes are mixed up they can be updated from HA or ETS (KNX)
Only when changing the heat/cool operation is works from HA to KNX, but not from KNX to HA.

And when the HA thermostat is in heating - comfort, changing to cooling will also change the mode in away (it changes to cooling - away) it updates only the cooling/heating state in KNX not the mode.
From cooling to heating same issue.
image

#KNX climate

  climate:

      # Zone 8 [Slaapkamer]
    - name: Slaapkamer                                # Room name
      temperature_address: '8/1/169'                  # Actual temperture
      temperature_step: 0.5                           # Home Assistant slider setting 
      target_temperature_address: '8/1/170'           # Setpoint comfort input
      target_temperature_state_address: '8/1/172'     # Actual setpoint
      operation_mode_address: '8/1/173'               # Mode status input 
      operation_mode_state_address: '8/1/178'         # Mode status output
      heat_cool_address: '8/0/1'                      # Set heating/cooling
      heat_cool_state_address: '8/0/2'                # Reading heating/cooling state
      min_temp: 18.0                                  # Min setting slider in Home Assistant
      max_temp: 27.0                                  # MAx setting slider in Home Assistant

I have an AC (Daikin) and Underfloor heating abb, (UFH) in each bedroom. The problem is I am not sure how to define them in KNX so they both show in Home Assistant.

The AC is connect to KNX via Zennio Clic - DD v3

Only 1 shows in HA and I suspect the reason is they both share the same Setpoint and Room Temperature.

How did you set up yours in KNX and HA? or What am I doing wrong?

HA KNX Climate yaml:

  - name: "RF Bedroom 4 AC"
    on_off_address: "3/5/24" # AC On/Off
    on_off_state_address: "3/5/25" # AC On/Off Status
    temperature_address: "3/4/24" # ROOM TEMPERATURE
    target_temperature_address: "3/4/21" # Setpoint
    target_temperature_state_address: "3/4/22" # Setpoint Status
    heat_cool_address: "3/5/27" # AC Simplified Mode
    heat_cool_state_address: "3/5/28" # AC Simplified Mode Status
    min_temp: 16
    max_temp: 28

  - name: "RF Bedroom 4 UFH"
    on_off_address: "3/6/1" # UFH On/Off
    on_off_state_address: "3/6/2" # UFH On/Off Status
    temperature_address: "3/4/24" # ROOM TEMPERATURE
    target_temperature_address: "3/4/21" # Setpoint
    target_temperature_state_address: "3/4/22" # Setpoint Status
    default_controller_mode: heat
    min_temp: 16
    max_temp: 28

KNX ETS: Bedroom 4 Temperature
Address Name Description Data Type Length
3/4/21 RF 06 BR Main - ROOM Setpoint Bedroom 4 Room Temperature temperature (°C) 2 bytes
3/4/22 RF 06 BR Main - ROOM Setpoint (Status) Bedroom 4 Room Temperature temperature (°C) 2 bytes
3/4/23 RF 06 BR Main - DEVICE TEMPERATURE SENSOR Bedroom 4 Room Temperature temperature (°C) 2 bytes
3/4/24 Bedroom 4 ROOM TEMPERATURE Bedroom 4 Room Temperature temperature (°C) 2 bytes
3/4/27 RF 07 BR Terrace - DEVICE TEMPERATURE SENSOR Bedroom 4 Room Temperature temperature (°C) 2 bytes
KNX ETS: Bedroom 4 AC
Address Name Description Data Type Length
3/5/24 RF Bedroom 4 AC Split ON/OFF (Switching) Bedroom 4 AC switch 1 bit
3/5/25 RF Bedroom 4 AC Split ON/OFF (Status) Bedroom 4 AC switch 1 bit
3/5/26 RF Bedroom 4 AC Split Mode Bedroom 4 AC HVAC control mode 1 byte
3/5/27 RF Bedroom 4 AC Split Mode (Status) Bedroom 4 AC HVAC control mode 1 byte
3/5/28 RF Bedroom 4 AC Split Simplified Mode Bedroom 4 AC cooling/heating 1 bit
3/5/29 RF Bedroom 4 AC Split Simplified Mode (Status) Bedroom 4 AC cooling/heating 1 bit
3/5/30 RF Bedroom 4 AC Split Setpoint Bedroom 4 AC temperature (°C) 2 bytes
3/5/31 RF Bedroom 4 AC Split Setpoint (Status) Bedroom 4 AC temperature (°C) 2 bytes
3/5/32 RF Bedroom 4 AC Split Measured Temperature (Status) Bedroom 4 AC temperature (°C) 2 bytes
3/5/33 RF Bedroom 4 AC Split External Reference Temperature (Status) Bedroom 4 AC temperature (°C)
3/5/34 RF Bedroom 4 AC Split Percentage Control Bedroom 4 AC percentage (0…100%) 1 byte
3/5/35 RF Bedroom 4 AC Split Fan Percentage Control (Status) Bedroom 4 AC percentage (0…100%) 1 byte
3/5/36 RF Bedroom 4 AC Split Fan Automatic Bedroom 4 AC switch 1 bit
3/5/37 RF Bedroom 4 AC Split Fan Automatic (Status) Bedroom 4 AC switch 1 bit
3/5/38 RF Bedroom 4 AC Split Horizontal Flaps Swing Bedroom 4 AC switch 1 bit
3/5/39 RF Bedroom 4 AC Split Horizontal Flaps Swing (Status) Bedroom 4 AC switch 1 bit
3/5/40 RF Bedroom 4 AC Split Vertical Flaps Swing Bedroom 4 AC switch 1 bit
3/5/41 RF Bedroom 4 AC Split Vertical Flaps Swing (Status) Bedroom 4 AC switch 1 bit
3/5/42 RF Bedroom 4 AC Split Internal Error Communication Bedroom 4 AC alarm 1 bit
3/5/43 RF Bedroom 4 AC Split Internal Error Wrong Acknowledgement Bedroom 4 AC alarm 1 bit
3/5/44 RF Bedroom 4 AC Split Error Active Error Bedroom 4 AC alarm 1 bit
3/5/45 RF Bedroom 4 AC Split Error Error Code Bedroom 4 AC Character String (ASCII) 14 bytes
KNX ETS: Bedroom 4 UFH
Address Name Description Data Type Length
3/6/1 RF Bedroom 4 UFH - ON/OFF (Switching) Bedroom 4 UFH switch 1 bit
3/6/2 RF Bedroom 4 UFH - ON/OFF (Status) Bedroom 4 UFH switch 1 bit
3/6/3 RF Bedroom 4 UFH Valve ON/OFF (Switching) Bedroom 4 UFH switch 1 bit
3/6/4 RF Bedroom 4 UFH Valve ON/OFF (Status) Bedroom 4 UFH switch 1 bit
3/6/5 RF Bedroom 4 UFH - CHRONO-THERMOSTAT Bedroom 4 UFH enable
3/6/6 RF Bedroom 4 UFH - HEATING DEMAND (Status) Bedroom 4 UFH percentage (0…100%)

Right. See https://www.home-assistant.io/integrations/knx/#duplicate-entities

Thanks. Honestly I read that but seems to have forgotten it overtime once again. Any advice on the ideal setup in my case?

Hm :thinking: you can just use a different target_temperature_address.
It’s a little hacky, but does the job.

1 Like

Hello everyone, and it’s a pleasure to be one of you

I was able to read the values from the thermostat
and also send setpoins, only problem that HA sends values
too low i.e. I set 20 comes 6, if I send them from ETS they come right, can you give me a hand

sorry for my English is not good

Hello everyone, and it’s a pleasure to be one of you

I was able to read the values from the thermostat
and also send setpoins, only problem that HA sends values
too low i.e. I set 20 comes 6, if I send them from ETS they come right, can you give me a hand

sorry for my English is not good

Hi :wave:!
To help you out we would need to see your entity config (yaml) and know about your device and its parameters (GAs and settings)

thank you for your time I will attach my conf the thermostat is a Gewiss GW16976CN