Climate - operation modes wrongly reported (hvac_modes vs preset_modes)

Hi all, I have an Aidoo Z‑Wave Plus module to control my Daikin Sky Air air conditioning units. I was able to include the module without issues and apart from the issue I’ll mention below, they have been working well.

The AC units have 6 operation modes: heat, cool, fan, dry, auto (heat_cool), and off. However, for some reason, the ‘fan’ and ‘dry’ operation modes are not properly reported in Home Assistant as ‘hvac_modes’, but as ‘preset_modes’ instead, and this causes issues with the frontend cards as they are not shown, and also weird behaviors when I change the operation mode from the physical wall controller.

These are the attributes I can see from the Development > States page:

hvac_modes:
  - 'off'
  - heat
  - cool
  - heat_cool
min_temp: 7
max_temp: 35
fan_modes:
  - Low
  - High
  - Auto medium
  - Medium
preset_modes:
  - none
  - Fan
  - Dry
current_temperature: 26.9
temperature: 23
target_temp_high: null
target_temp_low: null
fan_mode: Medium
preset_mode: none
icon: mdi:snowflake
friendly_name: Upstairs Air Conditioner
supported_features: 27

I also re-interviewed the Z-Wave node and captured the following logs:

2023-06-28T12:40:51.013Z CNTRLR   [Node 011] Interviewing Thermostat Mode...
2023-06-28T12:40:51.013Z CNTRLR » [Node 011] querying supported thermostat modes...
2023-06-28T12:40:51.022Z DRIVER » [Node 011] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      76
                                  └─[ThermostatModeCCSupportedGet]
2023-06-28T12:40:51.030Z DRIVER « [RES] [SendData]
                                    was sent: true
2023-06-28T12:40:51.046Z DRIVER « [REQ] [SendData]
                                    callback id:     76
                                    transmit status: OK
2023-06-28T12:40:51.060Z DRIVER « [Node 011] [REQ] [ApplicationCommand]
                                  └─[ThermostatModeCCSupportedReport]
                                      supported modes:
                                      · Off
                                      · Heat
                                      · Cool
                                      · Fan
                                      · Dry
                                      · Auto changeover
2023-06-28T12:40:51.066Z CNTRLR « [Node 011] received supported thermostat modes:
                                  · Off
                                  · Heat
                                  · Cool
                                  · Fan
                                  · Dry
                                  · Auto changeover

The node seems to be reporting the modes correctly…

Does anybody have any idea why ‘dry’ and ‘fan’ are configured as ‘preset_modes’ instead of ‘hvac_modes’? Happy to share more details if needed.

Thank you!

I think I’ve found where the issue is. It looks like the zwave-js integration is not considering ‘fan’ and ‘dry’ as HVAC modes and therefore they default to presets.

I have raised a PR to fix it: Add Fan and Dry as valid thermostat modes by adrianmo · Pull Request #693 · home-assistant-libs/zwave-js-server-python · GitHub

FYI - the fix was merged a few weeks ago (PR link) and is now live in HA 2023.8.0. I can confirm that my A/C units are now reporting Dry and Fan modes correctly as HVAC modes.