Skip to content

Feature: Attribute-scoped manual control (freeze only what I changed) #1273

@viprapp

Description

@viprapp

TL;DR
When manual control is detected, freeze only the attribute(s) I touched (brightness or color), and keep adapting the other.


Problem

Currently, if I manually change a light while take_over_control is enabled, the light is marked “manually controlled” and all adaptation stops until reset/off-on — even if I only tweaked brightness (or only color).

This means:

  • If I dim a light at night, the color temp stops adapting too.
  • If I shift color manually, brightness adaptation also stops.
  • To work around this, people toggle the global adapt_brightness / adapt_color switches or reset manual control via automation.

This breaks the “it just works” feeling and adds complexity.


Proposed behavior

Let Adaptive Lighting detect which attribute changed and only freeze that one:

  • If brightness changes → keep adapting color.
  • If color changes → keep adapting brightness.
  • If both change → behave as today (full manual).

Optional configuration (default keeps current behavior):

manual_control_policy: "all" | "changed_only" | "brightness_only" | "color_only"
# default: "all"

Example:

adaptive_lighting:
  - name: living_room
    lights: [light.living_room]
    take_over_control: true
    detect_non_ha_changes: true
    manual_control_policy: changed_only

Why this helps

  • Matches intuition: “I dimmed it; keep the circadian tone.”
  • Avoids constant resets or extra automations.
  • Backwards-compatible by default.
  • Makes Adaptive Lighting feel smarter and more natural.

What exists today (for context)

  • When manual control is detected, AL disables all adaptation until reset/off-on.
  • Separate switches (…_adapt_brightness / …_adapt_color) exist but are global, not per-light or per-change.
  • Users have asked for “keep adapting color when I change brightness” behavior in discussions and issues, showing clear demand.

In short:
Give Adaptive Lighting the ability to respect what was changed manually instead of turning off everything.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions