This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Problem Description
After a climate entity is added to HomeKit, the list of available fan modes is incomplete. For example, the xiaomi.airc.h39h00 climate entity exposes nine fan modes (siid=3, piid=2) in Home Assistant, yet none of them appear in HomeKit.
Figure 1: 9 options of fan mode in climate entity
Reason
HomeKit accepts only the four fan modes "auto", "low", "medium", and "high", written entirely in lowercase. Any other mode is silently ignored.
According to the Home Assistant developer documentation, custom fan modes are allowed in addition to the built-in ones. xiaomi_home generates fan mode names from the device’s fan-level property and translates them into the language configured by the user. If that language is not English, the resulting strings are almost never "auto", "low", "medium", or "high", so HomeKit omits them.
Solution
The description translation can be customized in xiaomi_home/miot/specs/multi_lang.json in which you can change the translation of the fan-level property descriptions. For example, here is the code to change the fan mode options of xiaomi.airc.h39h00 in simplified Chinese and English. Insert the following block at line 2 and keep the trailing comma:
After modifying the file, you need to restart Home Assistant and check the option xiaomi_home > CONFIGURE > Update entity conversion rules. "auto", "low", "medium" and "high" is shown in the fan mode of the climate entity and they will appear in HomeKit.
Figure 2: auto, low, medium and high options are added into the fan mode
More information about multi_lang.json can be found here.