KNX Climate control can not sync one specific group address as of today?

This used to work fine but as of today I get the following error message Initially I thought it was related to a new HA update but after rolling back the issue still persist. All other ETZ values are read fine by HA. I increased logging but can’t find anything that makes sense. Any idea what could have happened?

Could not sync group address ‘3/6/10’ (Livingroom Thermostat Z35 Mode - Operation mode)

10:27:10 PM – (WARNING) /usr/local/lib/python3.10/site-packages/xknx/remote_value/remote_value.py - message first occurred at 10:24:58 PM and shows up 4 times

Error: KNX bus did not respond in time (2.0 secs) to GroupValueRead request for: 3/6/10

10:27:10 PM – (WARNING) /usr/local/lib/python3.10/site-packages/xknx/core/value_reader.py - message first occurred at 10:24:58 PM and shows up 4 times

Hi :wave:!
Is it answered by the bus?
I think sometimes the answere can get processed slower than the timeout-timer - especially when migrating database versions etc.

It’s only group address ‘3/6/10’ I get this error message for.
The other values are represented fine in the climate entity.

climate:
  - name: "Livingroom Z35"
    temperature_address: "1/0/0" #Steinel Multi Sensor Living Room
    target_temperature_address: "3/6/3"
    target_temperature_state_address: "3/6/4"
    on_off_address: "3/6/7"
    on_off_state_address: "3/6/8"
    controller_mode_address: "3/6/9"
    controller_mode_state_address: "3/6/10"

I also have other entities like Covers etc. and they work fine.

You’ll get this warning even if the response comes 2.1 sec after the read - which can happen in some (rare) cases. The question is: does a (late) response arrive or not.

You can check from ETS or by setting log level of xknx.telegram to debug (see Knx Integration docs).

Thank you for your response Farmio,
I do not see the value of Group address 3/6/10 change in ETS when I change the value from HA. It stays the same in ETS. When I change the value directly from my Z35 (KNX) it does change correctly in ETS.
I did enable the knx.telegram logging, but I’m not sure how to read them.

2022-07-08 20:55:37 DEBUG (KNX Interface) [xknx.knx] Sending to 192.168.1.182:3671 at 1657277737.419967:
<KNXIPFrame <KNXIPHeader HeaderLength="6" ProtocolVersion="16" KNXIPServiceType="TUNNELLING_ACK" Reserve="0" TotalLength="10" />
body="<TunnellingAck communication_channel_id="1" sequence_counter="10" status_code="ErrorCode.E_NO_ERROR" />" />
2022-07-08 20:55:37 DEBUG (MainThread) [xknx.state_updater] StateUpdater reading 3/6/10 for Livingroom Z35 Mode - Controller mode
2022-07-08 20:55:37 DEBUG (MainThread) [xknx.state_updater] StateUpdater reading 1/0/0 for Livingroom Z35 - Current temperature
2022-07-08 20:55:37 DEBUG (MainThread) [xknx.telegram] <Telegram direction="Outgoing" source_address="1.1.250" destination_address="3/6/10" payload="<GroupValueRead />" />
2022-07-08 20:55:37 DEBUG (KNX Interface) [xknx.knx] Sending to 192.168.1.182:3671 at 1657277737.6366026:
<KNXIPFrame <KNXIPHeader HeaderLength="6" ProtocolVersion="16" KNXIPServiceType="TUNNELLING_REQUEST" Reserve="0" TotalLength="21" />
body="<TunnellingRequest communication_channel_id="1" sequence_counter="2" cemi="<CEMIFrame code="L_DATA_REQ" src_addr="IndividualAddress("1.1.250")" dst_addr="GroupAddress("3/6/10")" flags="1011110011100000" tpci="TDataGroup()" payload="<GroupValueRead />" />" />" />
2022-07-08 20:55:37 DEBUG (KNX Interface) [xknx.raw_socket] Received from ('192.168.1.182', 3671): 06100421000a04010200
2022-07-08 20:55:37 DEBUG (KNX Interface) [xknx.knx] Received from 192.168.1.182:3671 at 1657277737.6644468:
<KNXIPFrame <KNXIPHeader HeaderLength="6" ProtocolVersion="16" KNXIPServiceType="TUNNELLING_ACK" Reserve="0" TotalLength="10" />
body="<TunnellingAck communication_channel_id="1" sequence_counter="2" status_code="ErrorCode.E_NO_ERROR" />" />
2022-07-08 20:55:37 DEBUG (KNX Interface) [xknx.raw_socket] Received from ('192.168.1.182', 3671): 06100420001504010b002e00bce011fa1e0a010000
2022-07-08 20:55:37 DEBUG (KNX Interface) [xknx.knx] Received from 192.168.1.182:3671 at 1657277737.6662943:
<KNXIPFrame <KNXIPHeader HeaderLength="6" ProtocolVersion="16" KNXIPServiceType="TUNNELLING_REQUEST" Reserve="0" TotalLength="21" />
body="<TunnellingRequest communication_channel_id="1" sequence_counter="11" cemi="<CEMIFrame code="L_DATA_CON" src_addr="IndividualAddress("1.1.250")" dst_addr="GroupAddress("3/6/10")" flags="1011110011100000" tpci="TDataGroup()" payload="<GroupValueRead />" />" />" />
2022-07-08 20:55:37 DEBUG (KNX Interface) [xknx.knx] Sending to 192.168.1.182:3671 at 1657277737.6667335:
<KNXIPFrame <KNXIPHeader HeaderLength="6" ProtocolVersion="16" KNXIPServiceType="TUNNELLING_ACK" Reserve="0" TotalLength="10" />
body="<TunnellingAck communication_channel_id="1" sequence_counter="11" status_code="ErrorCode.E_NO_ERROR" />" />

You only need xknx.telegram - ignore (or better yet disable debug logging for) xknx.knx etc.).

2022-07-08 20:55:37 DEBUG (MainThread) [xknx.telegram] <Telegram direction="Outgoing" source_address="1.1.250" destination_address="3/6/10" payload="<GroupValueRead />" />

here you can see an outgoing GroupValueRead telegram to 3/6/10. It should be replied by a GroupValueResponse telegram from the bus (in < 2 seconds - ideally < 0.1).

What exactly are you doing in HA to change it?
When you eg. set from “heat” to “cool” it should send something to 3/6/9 - and the bus should respond to 3/6/10 with the new status.

In HA if I’m trying to change the value of the climate entity, e.g, this does not update the GroupAddress in ETS. The only value that works from HA on/off state ( on_off_state_address: “3/6/8” ).
When I change the value of the GroupAddress (HVAC Mode) directly on my Zennio Z35 KNX display the 3/6/9 value does change correctly in ETS.

Oh, and this is what I see in the xknx.telegram log on 3/6/9:

2022-07-09 20:22:53 DEBUG (MainThread) [xknx.telegram] <Telegram direction="Outgoing" source_address="1.1.250" destination_address="3/6/9" payload="<GroupValueWrite value="<DPTArray value="[0x0]" />" />" />
2022-07-09 20:23:00 DEBUG (MainThread) [xknx.telegram] <Telegram direction="Outgoing" source_address="1.1.250" destination_address="3/6/9" payload="<GroupValueWrite value="<DPTArray value="[0x1]" />" />" />
2022-07-09 20:23:05 DEBUG (MainThread) [xknx.telegram] <Telegram direction="Outgoing" source_address="1.1.250" destination_address="3/6/9" payload="<GroupValueWrite value="<DPTArray value="[0x3]" />" />" />

And nothing in between from 3/6/10?
Not even in ETS? Then there is some misconfiguration going on - either in the GAs for HA or in the devices Applikation.

Hm :thinking: controller_mode is not HVACMode… see Knx integrations documentation (chapter Climate) for the correct DPTs.

And please be extra-specific in your descriptions.

What value did you change? From UI or manual service (automation…)?

The Data Type in ETS for the Group Object for Mode Control in the Thermostat (Zennio Z35) is “HVAC Control Mode” "

.

I would like to control my Daikin Airo through the Z35. They are probably called differently in HA and ETS but this is the only Data type/control I can match from ETS to HA (controller_mode). Or is there a different attribute I should use in HA to match with the “HVAC_controller_mode” in ETS?

When I change the Group Object 3/6/9 (“HVAC_controller_mode”) through the KNX device (Z35), the values change but when I change the values through the Climate values (controller_mode_addrress: 3/6/9) entity in HA nothing changes in ETS.

So the Zennio is just a Switch / controlling device? What is the actual Knx actuator you want to read values from and send values to - what device connects to the daikin thing?

If this is done by the Z35 then you are missing read-flags. But that should not be keeping HA from sending to 3/6/9.

Again: in ETS GroupMonitor no telegram is received when you switch the climate entity from “heat” to “cool”? And in HAs xknx.telegram log you can see such a telegram?

The Zennio Z35 is a Captive Touch Panel which also has a Thermostat in it.
Z35 Capacitive touch panel with a 3.5” display (zennio.com)
Daikin is the brand of my Ducted Airconditioning system. I’m using the HA “Daikin AC” integration to control it through HA.
I want to be able to control the Daikin AC through the Thermostat on the Z35.

Again: in ETS GroupMonitor no telegram is received when you switch the climate entity from “heat” to “cool”?

Correct, no telegram is received.

And in HAs xknx.telegram log you can see such a telegram?

After changing from Heat to Cool this is what I see in the xknx.telegram log:

2022-07-09 23:48:07 DEBUG (MainThread) [xknx.telegram] <Telegram direction=“Outgoing” source_address=“1.1.250” destination_address=“3/6/9” payload=“<GroupValueWrite value=”" />" />

There is something wrong… there are no empty GroupValueWrite payloads. Maybe the forum just ate it because it isn’t wrapped in code tags. (I assume that is the case because it ate some of this quote too…)

But to your original problem: you can’t use a HA Knx climate entity without a climate actuator providing any status. And the HA daikin integration won’t do that on its own so you would have to do that manually in an automation.

If you set it from your Z35 it will send to the bus, but who should receive and process that (ie send the new status to 3/6/10)? A HA Knx entity won’t, because it is simply not made to do that - it will never send any new data to a *_state_address.

What I really don’t get is:

This is what I read in the logs (not using any quotes below:

2022-07-10 14:23:32 DEBUG (MainThread) [xknx.telegram] <Telegram direction=“Outgoing” source_address=“1.1.250” destination_address=“3/6/9” payload="<GroupValueWrite value="" />" />

From a KNX perspective all I want is to visualize and control the Z35 thermostat in HA through the KNX integration.

In HA I would than link the two (Daikin Thermostat and Z35 Thermostat) with scripts and Automations. What is already working is setting the target temperature between the two.

This is what I see from 3/6/10 :

2022-07-10 13:48:34 DEBUG (MainThread) [xknx.telegram] <Telegram direction="Outgoing" source_address="1.1.250" destination_address="3/6/10" payload="<GroupValueRead />" />
2022-07-10 13:48:36 WARNING (MainThread) [xknx.log] Error: KNX bus did not respond in time (2.0 secs) to GroupValueRead request for: 3/6/10
2022-07-10 13:48:36 WARNING (MainThread) [xknx.log] Could not sync group address '3/6/10' (Livingroom Z35 Mode - Controller mode)

From this log it looks like it is not able to read 3/6/10. I just don’t understand why.

farmio, I’m not 100% sure if setting the mode has ever worked between HA and KNX. What stopped working when I started this question was the entity itself. After one of the recent updates of HA the entity started working again except for the mode. As I have made changes and tested multiple things I’m not sure if it has been one of the HA updates or my changes.

Because there is no read-flag set in ETS for this GA. Try reading the GA from ETS GroupMonitor - it will also not yield any response telegram.

farmio, Im a bit confused. Hope you can help me out here.

If controller_mode_state_address cannot read the value from the GA in KNX why does it exist in the HA KNX integration? And how would I be able to read and write the Climate Control Mode of the Z35 Thermostat?

Ok - there are 2 things:

  • *_state_addresses are read by HA. In KNX a GA can only be read if any group object on this GA has the read flag set. So it can be read from HA, but the GA has to be configured accordingly in KNX (ETS) to respond.
    I think you only have one group object linked to this GA - and according to your screenshot above it doesn’t have a read-flag set.

I wouldn’t be surprised that the Z35 doesn’t set this flag by default since it is usually a consumer of this status, not the producer (the “single source of truth” of this would normally be a climate actuator that actually controls this - a display like the Zennio or HA is the consumer).

  • I would really not use 2 HA climate entities for this. It would just make synchronisation more complicated since the KNX one tries to sync from the bus - which it can’t because you actually want to send the states of HA-Daikin to the bus.
    I’d only use the Daikin climate entity and use knx’s expose or knx.send in an automation to send changed state to the bus and knx_event in an automation to control the Daikin climate from the Z35. Send only to state addresses and act only on non-state-addresses - this way you avoid loops.
1 Like

After I set the Read flag it works fine.

Im trying to follow the advice and deleted the Z35 Climate Entity from HA.

The main challange I’m facing is how to sync the Temperature from the KNX bus (Z35) to the Daikin Climate Entity. I can read the Temperature fine through knx_read but in a HA automation I can only set a fix value for temperature:

Previously I used to sync the Temperature through a script using template (‘climate.livingroom_thermostat_Z35’ is/was the entity for my knx Thermostat) that I called from an Automation.

update_daikin_ac_temp:
  alias: Update Daikin_ac Temperature
  sequence:
  - service: climate.set_temperature
    data:
      temperature: '{{ state_attr(''climate.livingroom_thermostat_Z35'', ''temperature'')|float }}'
    entity_id: climate.daikin_ac
  mode: single

However the above will not work without having an Entity for the KNX Thermostat.

Is there anyway to read a GA value from the KNX bus and pass it to the Temperature attribute of the Climate entity (Daikin) in HA?

Maybe I’m missing some detail here, but as I see it you are trying the wrong way.

There is no need to sync or actively read anything from the KNX bus - the single source of truth is the climate device - and that is not on the bus.

  • If its state changes (doesn’t matter what changed it - can be KNX or some other thing) it should send the updated state (target temperature, mode etc.) to the bus so the Z35 can update its displayed values. Use expose (or an automation with knx.send service) for that.
  • If you change something from the bus (Z35) - act on that received telegram (not actively read, but triggered by your change). Use knx_event for that.

Otherwise if you restart HA the Daikin integration gets its data directly from the climate device and the knx entity gets its data from the Z35. If these values diverge, who is going to win? My described approach avoids such conflicts entirely.