Use Adaptive Lighting for the settings, then choose when the light comes on

For Home Assistant adaptive lighting, start with the Adaptive Lighting custom integration by Bas Nijholt and a single lamp you already control reliably. It calculates changing brightness and white-color settings. Your wall control, dashboard or separate automation still decides when you want light. The project overview describes this division and its separate brightness, color and sleep controls.

Choose this approach when you want the same lamp to feel brighter and cooler during the day, then softer and warmer later. If you only want two fixed looks, a pair of saved scenes may be enough. If you want a lamp to wake you at a particular time, use the separate wake-up-light walkthrough.

Tara’s recommendation is to get one lamp’s manual controls right before adding a room. A gradual color change is less useful if somebody’s reading light keeps dimming against their wishes.

How this guide was prepared: researched from documentation by Home Assistant, HACS and Adaptive Lighting, checked September 27, 2026, including the stable Adaptive Lighting v1.32.0 release. The configuration and household example below were not tested on physical bulbs. The cover is an AI-generated room illustration.

1. Check the lamp and the software first

This walkthrough assumes the lamp’s Home Assistant controls already offer brightness and adjustable white color temperature. An entity is Home Assistant’s named control for something in the house, such as light.reading_lamp. Confirm that both sliders visibly work before installing anything.

Color temperature uses kelvin, written K: lower values look warmer; higher values look cooler. It does not describe how hot the lamp becomes. Stay within the lamp’s supported range. A dimmable light with fixed white color can use brightness adaptation alone; an on/off-only light cannot provide these adjustments. Supported controls and fades depend on the light and its connection, as explained in Home Assistant’s light documentation.

Adaptive Lighting v1.32.0 requires Home Assistant 2025.9 or newer. The settings below use that release as their reference. An older installed release may lack an option or arrange its settings differently; check its release notes before updating.

Use a non-essential reading or table lamp, with other lighting available. Temporarily pause other routines that change this lamp’s brightness or color. Keep its ordinary on/off control available throughout the check.

2. Install the integration and select one light

  1. Make a current backup before adding custom software. If you need the process, follow the existing backup and restore guide.
  2. Open HACS, the Home Assistant Community Store. If it is not installed, follow the official HACS installation instructions for your Home Assistant installation type.
  3. Find “Adaptive Lighting” by Bas Nijholt in HACS and download it. Follow its restart prompt. HACS supplies community integrations; downloading one is separate from configuring it in Home Assistant. See HACS’s integration guide.
  4. Open Settings → Devices & services → Add integration → Adaptive Lighting. Name the configuration Reading lamp, open its configuration/options control and select just the lamp. Do not also create a YAML configuration for the same setup. The project’s installation guide covers both routes.
  5. Find the four new switches. They enable Adaptive Lighting itself, brightness adaptation, color adaptation and sleep mode. Add them and the lamp to an ordinary dashboard Entities card so you can see them during the test.

For this example, turn the main, brightness and color switches on, and sleep mode off. Copy the actual entity IDs from their settings; names may acquire a numbered suffix. The examples below assume switch.adaptive_lighting_reading_lamp and light.reading_lamp.

3. Give the lamp a modest starting range

These are example preferences, not calibrated output or universal recommendations. Assume a lamp that supports 2700–4000 K and dims comfortably to 10%. If yours does not, choose supported values. Save them in the integration’s configuration/options, where they survive a restart.

On a phone, scroll the table sideways to compare the settings.

SettingExample valueReason for this example
min_brightness / max_brightness20 / 70A moderate daily range; choose what works at the chair.
min_color_temp / max_color_temp2700 / 4000Warm evenings and a cooler daytime white within the assumed lamp range.
sleep_brightness / sleep_color_temp10 / 2700A separate, dimmer bedtime setting. Raise 10 if it is uncomfortable or unstable.
only_onceOff / falseAllow ongoing adjustment while the lamp is on.

The configuration reference explains these options. Keep the normal update interval initially; faster updates are not automatically smoother. The example brightness percentages are commands, not measurements of room illumination.

Start with the sun-based timing. If winter sunset makes the lamp too dim before dinner, the integration also offers fixed or bounded sunrise/sunset times. Adjust that after the basic test, one setting at a time. An earlier sunset and your preferred bedtime are different inputs.

4. Make manual changes and scenes keep their settings

In the options, enable take_over_control. Despite its name, this allows another control to take over from Adaptive Lighting. Keep take_over_control_mode at pause_all so a manual choice pauses both brightness and color. Also enable adapt_only_on_bare_turn_on: a turn-on command with an explicit brightness or color can then keep that choice. Leave autoreset_control_seconds at 0 for the first test, so a timeout does not silently end the hold.

With these choices, use a plain on command when you want adaptive settings. Use an explicit reading/movie preset when you want a fixed look. The manual-control documentation explains how a light is marked as manually controlled and how turning it off and back on, or clearing that mark, resumes adaptation.

For a predictable first setup, leave detect_non_ha_changes off. Dimming through a manufacturer app or a directly connected remote may then go undetected; verify those control paths separately. Do not assume every wall control behaves like a Home Assistant command.

Preserve the reading hold at bedtime: in v1.32.0, set reset_manual_control_on_sleep_mode_change to false. Its default is true, which clears manual control when sleep mode changes. The release notes document this option. If your version lacks it, leave the main adaptation switch off during a manual hold until you can verify an equivalent policy.

Existing routines can still send their own light commands. For a pause that covers those routines too, use the broader manual-override pattern.

5. Test one evening before expanding the setup

This is a hypothetical acceptance test for the profile above. It gives you observable pass/fail behavior without requiring a whole house of lights.

  1. Start with the lamp off in Home Assistant. Keep electrical power supplied. In Developer tools → Actions, select light.turn_on, target only the reading lamp and leave brightness and color fields unset. The lamp should turn on with the current adaptive values.
  2. Choose your reading level. While it is on, use Home Assistant’s brightness slider to set a noticeably different level, such as 60%. In Developer tools → States, inspect the main Adaptive Lighting switch’s manual_control attribute. It should include the lamp. Do not edit its state there.
  3. Allow time for several updates. With the documented default 90-second interval and 45-second transition, allow about four minutes. Your manual brightness should remain. If it changes, inspect other routines and the manual-control options before adding more lamps.
  4. Turn the sleep-mode switch on. With the sleep-reset option set to false, the manually held reading lamp should retain your choice. After you explicitly resume adaptation, it should use the example sleep settings: 10% and 2700 K, subject to the lamp’s limits.
  5. Turn sleep mode off when the sleep period ends. Then use a plain off/on cycle or the resume script below. Confirm normal adaptive settings return. Restore any paused routines one at a time and repeat the manual-choice check.

Sleep mode remains on until its switch is turned off, and its state is restored after a Home Assistant restart. If you automate bedtime later, provide both an on rule and an off rule. This switch chooses bedtime light settings; it is not a command to switch the physical lamp off.

A “resume adaptation” script that leaves an off lamp off

Open Settings → Automations & scenes → Scripts, create a new script and choose Edit in YAML. Replace its contents with this example, then replace both entity IDs with yours. This is a complete UI-script definition: do not add an outer script: line. The Home Assistant script guide explains this reusable sequence.

On a phone, scroll the code sideways to read full lines.

alias: "Reading lamp - resume adaptation"
mode: single
sequence:
  - action: switch.turn_on
    target:
      entity_id: switch.adaptive_lighting_reading_lamp
  - action: adaptive_lighting.set_manual_control
    data:
      entity_id: switch.adaptive_lighting_reading_lamp
      lights:
        - light.reading_lamp
      manual_control: false

Run it while the lamp is manually held on: the hold should clear and the current adaptive settings should apply. Turn the lamp off in Home Assistant, run it again, and confirm it stays off. The brightness and color adaptation switches must remain enabled, with only_once false, for continued adjustment.

Applying values once and resuming ongoing adjustment are different actions. The project’s service documentation separates them. The script enables the profile and clears the manual mark. In v1.32.0’s implementation, clearing that mark already reapplies settings to lights reported on, so a separate apply step is unnecessary. It skips lights reported off; an incorrect device state can still produce an unexpected result. It deliberately leaves sleep mode unchanged. Keep this profile limited to the test lamp; enabling a shared profile can affect its other lights.

If the result is wrong, check the matching cause

Scroll sideways on a phone to read the next step.

What you seeCheck firstNext step
Nothing adaptsMain/brightness/color switches, selected lamp, manual-control mark.Try the resume script on the one on lamp. If normal light controls fail too, fix that connection first.
The lamp stays dim in daytimeSleep-mode switch and manual hold.Turn sleep mode off, then resume. Do not increase every brightness limit to hide a stuck mode.
A movie or reading preset is overwrittenManual takeover, explicit-value turn-ons, competing routines.Repeat the manual-choice test. Pause the profile while locating the conflicting command.
The lamp flashes, ignores off, or comes back onReported state versus the physical lamp; transition support.Turn the main adaptation switch off and test ordinary controls. Consult the exact bulb’s documented limitations before changing transition options.

The project’s troubleshooting guide documents state-reporting, transition and device-specific limitations. Adding more frequent commands can expose an unreliable connection. A light group also changes which control is tracked; keep the first check on an individual lamp, and review the project’s grouping guidance before expanding.

Common questions

Is Adaptive Lighting built into Home Assistant?

No. This guide uses Bas Nijholt’s community-maintained custom integration, commonly installed through HACS. Plan to maintain it alongside Home Assistant and check compatibility before updates.

Will it make a cloud-connected bulb local?

No. It changes the commands Home Assistant sends through the bulb’s existing integration. The bulb’s control path still determines whether internet access or a vendor account is needed.

Does it need to turn on every light at sunset?

No. Keep your existing on/off routine separate. The setup here selects adaptive values when you request light and adjusts an on lamp; it is not a sunset turn-on schedule.

For a new room, plan its light controls and manual fallback together. Tara’s smart lighting kit page explains that planning path.