Fix BAF color temperature support on fan-mounted lights - #181422
Fix BAF color temperature support on fan-mounted lights#181422JustinStafford wants to merge 1 commit into
Conversation
Select the light class from the reported color temperature range rather than from whether the device has a fan, and correct the inverted Kelvin bounds.
There was a problem hiding this comment.
It seems you haven't yet signed a CLA. Please do so here.
Once you do that we will be able to review and accept this pull request.
Thanks!
|
Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍 |
|
Hey there @bdraco, @jfroy, mind taking a look at this pull request as it has been labeled with an integration ( Code owner commandsCode owners of
|
There was a problem hiding this comment.
🟢 Approval recommended
The focused changes correctly use the library’s reported temperature range without introducing unresolved issues.
Pull request overview
Updates BAF lights to expose color-temperature support based on device-reported capabilities rather than fan presence.
Changes:
- Selects the light entity class from reported temperature bounds.
- Corrects minimum and maximum Kelvin bounds.
- Renames light classes to describe their capabilities.
File summaries
| File | Description |
|---|---|
homeassistant/components/baf/light.py |
Adds capability-based color-temperature support and corrects Kelvin bounds. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 0
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Proposed change
bafchooses its light class from whether the device has a fan:BAFFanLighthardcodesColorMode.BRIGHTNESS, so any light kit attached to a fan is brightness-only regardless of what the hardware can do. This is wrong for tunable-white light kits such as the one on the i6, where color temperature is adjustable in the BAF app but absent in Home Assistant.Nothing below the integration is missing.
aiobafi6already exposeslight_color_temperature(writable),light_warmest_color_temperatureandlight_coolest_color_temperature. The protocol has no "is tunable" capability bit —Capabilitiescarries onlyhas_comfort1,has_comfort3andhas_light— so the presence of a reported warmest/coolest range is the available signal, and this PR selects on it instead.This also corrects inverted Kelvin bounds in the color temperature class. The existing code assigns:
In Kelvin the warmest end is the lower number. My i6 fans report warmest=2200 and coolest=6500, which yields min=6500, max=2200. The two changes are not separable: enabling color temperature on these devices without correcting the bounds produces an unusable entity.
BAFFanLight/BAFStandaloneLightare renamed toBAFBrightnessLight/BAFColorTempLight, since they now describe capability rather than form factor.Devices that do not report a color temperature range fall through to brightness-only, which is their current behaviour.
Tested on 5x Big Ass Fans i6 (firmware 3.3.5) running HA core 2026.8.2 with aiobafi6 0.9.0; 3 of the 5 have light kits.
supported_color_modes: [brightness], no color temperature available.supported_color_modes: [color_temp],min_color_temp_kelvin: 2200,max_color_temp_kelvin: 6500.Verified the read path (device-reported color temperature surfacing as
color_temp_kelvin) and the write path (light.turn_onwithcolor_temp_kelvin, withcolor_temp_kelvin+brightnesstogether, and driven by Adaptive Lighting). All 86bafentities loaded, none unavailable.I have not added tests.
tests/components/baf/currently contains onlytest_config_flow.py— there is no device fixture orconftest.pyto extend — so covering this would mean building that scaffolding from scratch. Happy to do so if a maintainer would like it as part of this PR.Type of change
Additional information
Checklist
ruff format homeassistant tests)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.To help with the load of incoming pull requests: