Skip to content

Fix BAF color temperature support on fan-mounted lights - #181422

Draft
JustinStafford wants to merge 1 commit into
home-assistant:devfrom
JustinStafford:patch-1
Draft

Fix BAF color temperature support on fan-mounted lights#181422
JustinStafford wants to merge 1 commit into
home-assistant:devfrom
JustinStafford:patch-1

Conversation

@JustinStafford

Copy link
Copy Markdown

Proposed change

baf chooses its light class from whether the device has a fan:

klass = BAFFanLight if device.has_fan else BAFStandaloneLight

BAFFanLight hardcodes ColorMode.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. aiobafi6 already exposes light_color_temperature (writable), light_warmest_color_temperature and light_coolest_color_temperature. The protocol has no "is tunable" capability bit — Capabilities carries only has_comfort1, has_comfort3 and has_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:

self._attr_max_color_temp_kelvin = device.light_warmest_color_temperature
self._attr_min_color_temp_kelvin = device.light_coolest_color_temperature

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/BAFStandaloneLight are renamed to BAFBrightnessLight/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.

  • Before: supported_color_modes: [brightness], no color temperature available.
  • After: 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_on with color_temp_kelvin, with color_temp_kelvin + brightness together, and driven by Adaptive Lighting). All 86 baf entities loaded, none unavailable.

I have not added tests. tests/components/baf/ currently contains only test_config_flow.py — there is no device fixture or conftest.py to 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

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • I understand the code I am submitting and can explain how it works.
  • The code change is tested and works locally.
  • 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]dev-checklist
  • I have followed the [perfect PR recommendations]perfect-pr
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.
  • Any generated code has been carefully reviewed for correctness and compliance with project standards.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The [manifest file]manifest-docs has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies a diff between library versions and ideally a link to the changelog/release notes is added to the PR description.

To help with the load of incoming pull requests:

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.
Copilot AI balanced review requested due to automatic review settings September 6, 2026 05:42

@home-assistant home-assistant Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @JustinStafford

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!

@home-assistant

home-assistant Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍

Learn more about our pull request process.

@home-assistant

home-assistant Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Hey there @bdraco, @jfroy, mind taking a look at this pull request as it has been labeled with an integration (baf) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of baf can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant mark-draft Mark the pull request as draft.
  • @home-assistant ready-for-review Remove the draft status from the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign baf Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant update-branch Update the pull request branch with the base branch.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) on the pull request.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BAF Lights that are fan integrated don't expose color temperature

3 participants