Closed UltraPhil closed 1 year ago
Hey there @bdraco, mind taking a look at this issue as it has been labeled with an integration (homekit
) you are listed as a code owner for? Thanks!
(message by CodeOwnersMention)
homekit documentation homekit source (message by IssueLinks)
Only the predefined fan modes are supported
Only the predefined fan modes are supported
I'm not sure I understand. Does that mean that it'll never work with HomeKit Bridge? Is HomeKit Bridge able to expose the predefined fan modes?
Yes, I confirm that the Honeywell T6 Pro Z-Wave fan modes are supported and works well in the Home Assistant UI. However, something is wrong in the way it interacts with HomeKit Bridge.
Ah, I think I understand. You mean that HomeKit Bridge can only use the modes listes on the URI you provided.
Name -- FAN_ON FAN_OFF FAN_AUTO FAN_LOW FAN_MEDIUM FAN_HIGH FAN_MIDDLE FAN_FOCUS FAN_DIFFUSEThat means there is still something wrong with the integration. It should at least support ON/OFF, which it doesn't.
Is that what you meant?
It only supports these literal values, https://github.com/home-assistant/core/blob/f09abb0f2e0da4fb5158608652a85cb1bb4c110c/homeassistant/components/climate/const.py#L70, and only the subset of them that refer to actual speeds
The only one that should show up for your device is low
which means you'll always get 100% of the only value supported
Your device doesn't support on
, only:
Auto Low
- not a known mode so not supported
Low
- should be supported assuming it maps to low
(not sure if Low
is actually supported it may only work with low
)
Circulation
- not a known mode so not supported
Ah ok, I see!
For the T6 Pro, Auto low
is basically OFF' since it won't start the fan unless it is actively heating/cooling. So I think it should be mapped as OFF.
"Low" is, as you said, basically ON at "100%". I don't even think the T6 Pro supports multiple fan modes with the HVAC pinout. However, HomeKit Bridge doesn't even seem to get the Low setting. Maybe because of the uppcase as you pointed out?
Here is an output of the developer tools for climate.t6_pro_z_wave_programmable_thermostat
:
hvac_modes:
- 'off'
- heat
- cool
min_temp: 7
max_temp: 35
fan_modes:
- Auto low
- Low
- Circulation
preset_modes:
- none
- Auxiliary
- Energy heat
- Energy cool
current_temperature: 21.5
temperature: 18
current_humidity: 32
fan_mode: Low
hvac_action: idle
preset_mode: none
fan_state: Running / running low
friendly_name: T6 Pro Z-Wave Programmable Thermostat
supported_features: 25
Would there be any way to map:
T6 Pro Z-Wave + Homekit owner facing the same issue here. If possible at all, I think that the mapping suggested by @UltraPhil would be a good workaround.
The fans modes would need to be added to the homekit integration and since they are not predefined there is no way to know them in advance here
Would it be preferable to map them to default (known) values in ZwaveJS instead then? So no modification would be required in HomeKit Bridge?
Would it be preferable to map them to default (known) values in ZwaveJS instead then? So no modification would be required in HomeKit Bridge?
Yes. The other option would be an architecture change to make climate fans work the same way as fan entities
Would it be preferable to map them to default (known) values in ZwaveJS instead then? So no modification would be required in HomeKit Bridge?
As a ZwaveJS user with a T6 Pro, how would I do this? Would like to map the three modes you suggested in the earlier comment, but not sure how.
I don't know if the mapping could be done on HomeAssistant' side, or ZwaveJS side. Changing the mapping on ZwaveJS side would means that all ZwaveJS projets that use them as an upstream dependency would be subject to the change.
ZwaveJS isn't mapping incorrectly the fan settings: it represents what you see on the device and in the user's manual. It's just not aligned with HASS defaults.
I'm wondering if HomeAssistant provides a way to "transform" the states received from ZwaveJS, but I'm completely new to the codebase, I haven't had a look except for what @bdraco referred to in his comments.
Usually use can use a template entity to do this but do thermostats it’s the generic thermostat integration. I don’t believe it supports fan moss’s though
I did a quick test using a switch template entity:
switch:
- platform: template
switches:
t6_pro_fan_mode:
unique_id: t6_pro_fan_mode
value_template: "{{ 'off' if is_state_attr('climate.t6_pro_z_wave_programmable_thermostat', 'fan_mode', 'Auto low') else 'on' }}"
turn_on:
service: climate.set_fan_mode
data:
entity_id: climate.t6_pro_z_wave_programmable_thermostat
fan_mode: "Low"
turn_off:
service: climate.set_fan_mode
data:
entity_id: climate.t6_pro_z_wave_programmable_thermostat
fan_mode: "Auto low"
availability_template: "{{ is_state('sensor.node_13_node_status', 'alive') }}"
While this works, Imgur, I still have the fan component of the climate entity of the T6, even if the fan component of the T6 is disabled: Imgur.
From what's I've seen in the HASS forums, many people have used fan templates to define precentages steps that basically represents a fan preset mode. So, yes, has @bdraco mentioned, we can use a fan template entity to correctly present the fan modes, for example by using 0% => Auto Low, 50% => circulate and 100% => low.
It seems the HomeKit fan settings is pulled from the climate component.
There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.
The problem
Even if the fan mode and fan state are well detected by ZwaveJS, it doesn't appear right in HomeKit.
Also, changing the fan speed in HomeKit doesn't seem to do anything -- it is always reset to ON/100%.
I'ved used the ZwaveJS debugging tool, and I see no command sent when I change the fan settings in HomeKit.
I'm a bit at lost to diagnose this further.
Thanks!
What version of Home Assistant Core has the issue?
core-2023.5.3
What was the last working version of Home Assistant Core?
No response
What type of installation are you running?
Home Assistant OS
Integration causing the issue
HomeKit Bridge
Link to integration documentation on our website
https://www.home-assistant.io/integrations/homekit/
Diagnostics information
No response
Example YAML snippet
No response
Anything in the logs that might be useful for us?
No response
Additional information
Both ZwaveJS and HomeKit Bridge are on the default configuration (not overrided by configuration.yaml).