Fix SmartIR fan state restore on restart + oscillation toggle behavior#1508
Open
mode0192 wants to merge 1 commit intosmartHomeHub:masterfrom
Open
Fix SmartIR fan state restore on restart + oscillation toggle behavior#1508mode0192 wants to merge 1 commit intosmartHomeHub:masterfrom
mode0192 wants to merge 1 commit intosmartHomeHub:masterfrom
Conversation
* Treat `delay` config as a float (`cv.positive_float`) and cast in `__init__` to avoid string delays reaching the controller. * Fix state restoration after Home Assistant restart by restoring from `percentage` when `speed` is not present, and falling back to `last_on_speed` when HA restores `state=on` without attributes. * Fix oscillation handling for toggle-style IR codes: send the `oscillate` command only when the requested oscillation state differs, and avoid sending oscillate commands from `send_command()` (prevents speed changes from toggling oscillation). * Improve power sensor behavior: * Always register the power sensor listener when configured (even when no restored state exists). * Avoid setting `speed=None` on remote power-on (keeps percentage/commands stable). * Use a synchronous `@callback` handler for the sensor event. Testing: * Verified fan restores as ON after HA restart when previously ON. * Verified changing speed does not toggle oscillation, and oscillation toggles only when requested. * Verified power sensor remote ON/OFF updates entity state without breaking percentage.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 PR fixes several issues in
custom_components/smartir/fan.pythat can lead to incorrect state after restart and incorrect oscillation behavior for toggle-style IR codes.What changed
percentagewhenspeedis not available (HA versions may persist percentage instead of speed). If HA restoresstate=onwithout speed/percentage, fall back tolast_on_speed(or first speed).oscillatecommand that toggles oscillation. The integration now sends the oscillate command only when the desired oscillation state changes, and no longer lets oscillation “override” speed commands.speed=Nonewhen the sensor indicates the device is turned on externally (prevents breaking percentage/commands).delayas a float (cv.positive_float) and cast to float before passing to the controller.Why
percentageinstead ofspeedin some cases).Nonebreaks percentage/command logic.How to test