Add zwave_js speed configurations for GE/Jasco 12730 and 14287 fans #60517
+176
−37
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.
Breaking change
This may change which fan speed is selected at certain percentages for the GE/Jasco 12730 and 14287 fan controllers.
Proposed change
Explicitly support the speed ranges used by the GE/Jasco 12730 and 14287 fan controllers, using (and extending) the mechanisms added in PR #59697.
I got the fan speed info from freshcoast on this thread:
https://community.home-assistant.io/t/requesting-info-on-speed-ranges-for-various-z-wave-fan-controllers-e-g-ge-jasco-leviton/360075/3
Type of change
Additional information
I did something a little unusual with the fixtures:
To adequately test the zwave_js fan component, we need to keep at least one fixture for a device where we don't have explicit speed information defined, to ensure that the fallback to 0-100% selection is working. The current suite of tests uses
in_wall_smart_fan_control_state.json, which is actually a GE/Jasco 12730, which this PR adds speed support for.Somewhat interestingly, we actually have two different fixtures for the 12730:
fan_ge_12730_state.json, andin_wall_smart_fan_control_state.json. Onlyin_wall_smart_fan_control_state.jsonwas actually being used, so here's what I did:in_wall_smart_fan_control_state.jsontofan_generic_state.json, and mangled the manufacturer/product IDs so that it wouldn't be recognized as a GE/Jasco 12730. So this'll permanently be a "generic fan" fixture, representing all fan controllers that we don't have speed info for. This continues to be used for the main test intest_fan.py.fan_ge_12730_state.jsonfor additional tests for fan speed configuration.Checklist
[~] The code change is tested and works locally.
I verified that HA starts, and I've verified that the
FixedFanSpeedDataTemplateworks by temporarily applying it to my FC200+, but I haven't tested with the actual GE/Jasco controllers.Local tests pass. Your PR cannot be merged unless tests pass
There is no commented out code in this PR.
I have followed the development checklist
The code has been formatted using Black (
black --fast homeassistant tests)Tests have been added to verify that the new code works.
If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest.requirements_all.txt.Updated by running
python3 -m script.gen_requirements_all..coveragerc.The integration reached or maintains the following Integration Quality Scale:
To help with the load of incoming pull requests: