Add fan_speed_presets() for querying available fan speeds #643
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This returns a dictionary {name, value} of the available fan speeds,
the main driver being the need to simplify homeassistant integrations for different devices.
For viomi vacuums this is currently straightforward and hard-coded, but we do special handling
for rockrobo devices (based on info() responses):
If the query succeeds, newer firmware versions (3.5.7+) of v1 are handled as a special case,
otherwise the new-style [100-105] mapping is returned.
If the query fails, we fall back to rockrobo v1's percentage-based mapping.
This happens, e.g., when the vacuum has no cloud connectivity.
Related to #523
Related downstream issues
home-assistant/core#32821
home-assistant/core#31268
home-assistant/core#27268