KNX climate: fan_speed_mode: "percent" renders discrete dropdown instead of continuous slider (HA 2025.11.3)

Hi all,

I’m integrating a Zennio KLIC-DI v2 (Daikin gateway) that uses true percentage fan objects (DPT 5.001).
According to the official docs, this configuration should give a continuous 0–100 % slider:

knx:
  climate:
    - name: "Kal's Office AC"
      temperature_address: "3/5/7"
      temperature_step: 1.0
      min_temp: 17.0
      max_temp: 27.0
      on_off_address: "5/0/15"
      on_off_state_address: "5/1/15"
      target_temperature_address: "5/4/5"
      target_temperature_state_address: "5/5/5"
      controller_status_address: "5/2/5"
      controller_status_state_address: "5/3/5"
      fan_speed_address: "5/6/5"
      fan_speed_state_address: "5/7/5"
      fan_speed_mode: "percent"   # ← explicitly set
      fan_zero_mode: "off"
      swing_address: "5/6/6"
      swing_state_address: "5/7/6"

What I actually get in the entity state:

fan_modes: off, low, medium, high   ← discrete strings → dropdown in UI
supported_features: 441

From what I understood looking at the code, the KNX climate platform hard-codes _attr_fan_modes = [“off”, “low”, “medium”, “high”] whenever fan addresses are present, regardless of fan_speed_mode: “percent”. This overrides the expected behaviour and contradicts the documentation, which explicitly says “uses a slider in the UI (continuous 0–100 %)”.

Is this intentional, or a documentation/implementation mismatch that should be addressed? Many Daikin/Zennio users would prefer the actual continuous slider (or at least an option to get it).

Home Assistant Core: 2025.11.3
Installation method: Home Assistant OS

Thanks in advance!

Hi :wave:!
A HA climate entity doesn’t support numeric fan speeds. Only string modes. Climate entity | Home Assistant Developer Docs

Thanks a lot for the prompt response, @farmio!
It makes sense (as much as it is a bit restrictive :wink:).

In this case, the KNX integration documentation is a bit misleading, because it suggests that fan_speed_mode: "percent" sets the “percentage”, which implies continuous configuration.

Do you think it is worth submitting a PR to update the documentation to state something like “renders as discrete modes with percentage-mapped payloads”?

Well, it does set a percent value…
But sure, you are very welcome to improve the docs.
If you also like to change UI strings, those would be found in the core repo at components/knx/strings.json.

1 Like