Closed ufozone closed 2 months ago
Hey there @julius2342, @farmio, @marvin-w, mind taking a look at this issue as it has been labeled with an integration (knx
) you are listed as a code owner for? Thanks!
(message by CodeOwnersMention)
knx documentation knx source (message by IssueLinks)
Hi 👋! Thanks for filing this issue. You seem to have found the correct workaround already:
- Added
heat_cool_address
with a dummy address0/4/250
in the configuration: Result: The display in the frontend is correct, but the select field allows writing to the dummy address, causing the display in the frontend to change, which is also not desired.
Afair this provides the exact same behaviour as 2024.7.
I'll have a look if read-only modes can be supported correctly in a future release.
Hey @farmio,
Thank you very much for this super quick answer!!!
The workaround is not really good, I think, as it does not provide exactly the same behavior as 2024.7. Specifying the heat_cool_address
now allows a change to the mode because the integration thinks it has written to the correct address.
I don't understand why the behavior has changed. Previously, the entity also supported the read-only mode by specifying only the heat_cool_state_address
.
I looked at the code diff from pull request #122891 and could not find any indication of a deliberate change in behavior in the integration.
The 352 changed files between xknx
2.12.2 and 3.0.0 seem to me like searching for a needle in a haystack. ;-)
It's here https://github.com/XKNX/xknx/pull/1500/files#diff-c47ab9c3e342f3010e88247d04e21b9186dade8ac40b46a7fdd3491757d14854 xknx/devices/climate_mode.py Line 162
I don't think there was ever a distinction between only state and write+state address. At least I didn't see where from a first look.
Unfortunately, I don't fully understand the code, but could it be that in 2.12.2 self._iter_controller_remote_values()
produced self.remote_value_heat_cool
, and thus "Cool" was appended to self._controller_modes
? I can't see any reason why "Cool" is no longer available in self._controller_modes
if only heat_cool_state_address
is set at the entry.
The way it worked before was perfect. Certainly not just for me: heating/cooling mode is set by the climate control system and I just want to record and visualize this state. Under no circumstances should this KNX address be written via HA. Until core-2024.7.4, the behavior worked just the same way by setting only the heat_cool_state_address
without heat_cool_address
.
Thank you very much @farmio ❤️
The problem
Description
After updating to Home Assistant version 2024.8.1, which includes an update of the
xknx
library to version 3.0.0 (#122891), theheat_cool_state_address
parameter in the KNX integration is no longer processed correctly. This results in the mode (heating/cooling) not being updated in the Home Assistant state and frontend.Expected Behavior
The
heat_cool_state_address
parameter should display the current mode (heating or cooling) as it did in previous versions (up to 2024.7.4):The state of the entity is "cooling".
Actual Behavior
Although the configuration remains unchanged and KNX messages are sent and received correctly, the mode is not reflected in Home Assistant. The
heat_cool_state_address
parameter appears to be ignored:The state of the entity is "heating".
What version of Home Assistant Core has the issue?
core-2024.8.1
What was the last working version of Home Assistant Core?
core-2024.7.4
What type of installation are you running?
Home Assistant OS
Integration causing the issue
knx
Link to integration documentation on our website
https://www.home-assistant.io/integrations/knx/
Diagnostics information
home-assistant_knx_2024-08-12T18-25-42.650Z.log
Example YAML snippet
Anything in the logs that might be useful for us?
Logs do not show any significant difference between the working versions (up to 2024.7.4) and the non-working version (2024.8.1).
core-2024.6.4 and core-2024.7.4:
core-2024.8.1:
Additional information
Troubleshooting Attempts
Replaced
heat_cool_state_address
withheat_cool_address
: Result: The heating/cooling state is displayed correctly, but the select field in the frontend allows writing to the0/4/20
address, which is (in my case) definitely not desired.Added
heat_cool_address
with a dummy address0/4/250
in the configuration: Result: The display in the frontend is correct, but the select field allows writing to the dummy address, causing the display in the frontend to change, which is also not desired.Added the
controller_modes
parameter with an empty list []: Result: The values ofheat_cool_address
andheat_cool_state_address
are ignored completely.