💡 Combined Lights – Progressive Zone-Based Lighting Control

A Home Assistant custom integration that transforms fragmented individual light entities into an intelligently unified lighting system using configurable zone-based progressive activation.

TL;DR

You have several lights in one room. You want one control that turns them on gradually:

  • Dim: Only ambient light
  • Medium: Ambient + task light
  • Bright: All lights on

The Problem

You’ve got multiple light zones scattered across your space. You want a single unified control that doesn’t just turn everything on at once or keep them all in sync at the same brightness. Instead, you want progressive activation—different lights coming online at different brightness thresholds to create natural lighting zones.

But here’s the catch: when someone flips a physical wall switch or uses a dimmer, your automation logic breaks because the unified control doesn’t know what happened. The combined light entity and individual switches fall out of sync.

How Combined Lights Solves This

Combined Lights creates a single virtual light entity that intelligently manages up to 4 individual light zones. Each zone activates at a configurable brightness threshold and has its own brightness curve (linear, quadratic, or cubic).

The key differentiator: bidirectional sync. When you adjust a physical switch, Combined Lights automatically recalculates the overall brightness based on the current state of all zones and updates itself. Your automations always see accurate state, whether controlled digitally or physically.

Architecture

The integration divides the brightness spectrum (0-100%) into four progressive stages:

Stage 1 (0-100%):   Always on, uses full brightness curve
Stage 2 (30-100%):  Activates at 30%, uses full curve from 30%
Stage 3 (60-100%):  Activates at 60%, uses full curve from 60%
Stage 4 (90-100%):  Activates at 90%, uses full curve from 90%

Each stage’s brightness is calculated using a configurable curve function (linear, quadratic, or cubic), giving you precise control over how each zone ramps.

Real-World Example: Living Room Setup

Stage 1 – Ambient (LED Strip):
  Light: light.led_strip
  Curve: Quadratic
  Purpose: Soft background light, ramps gently

Stage 2 – Task (Reading Lamp):
  Light: light.reading_lamp
  Curve: Linear
  Purpose: Task lighting, consistent brightness increase

Stage 3 – General (Ceiling Main):
  Light: light.ceiling_main
  Curve: Linear
  Purpose: Main lighting, activates at medium brightness

Stage 4 – Boost (Corner Spot):
  Light: light.corner_spot
  Curve: Linear
  Purpose: Maximum brightness when needed

Result:

  • 0-30%: Only LED strip on, brightening smoothly
  • 30-60%: Reading lamp activates, both ramp up
  • 60-90%: Ceiling light turns on
  • 90-100%: Corner spot activates for full brightness

Bidirectional Sync in Action

Physical Switch Flip → Individual light changes state
                    ↓
Combined Lights detects change
                    ↓
Calculates aggregate brightness from current zone states
                    ↓
Updates combined_lights entity
                    ↓
Automations see normal light adjustment (not multiple changes)

This means your automations can listen to light.combined_lights without caring about individual switch interactions.

Integration & Usage

Installation (HACS)

1. Add custom repository: https://github.com/recallfx/combined_lights
2. Install "Combined Lights"
3. Restart Home Assistant
4. Settings → Devices & Services → Add Integration

Configuration (Config Flow – No YAML Required)

  • Step 1: Select light entities for each stage
  • Step 2: Choose brightness curve type for each stage

Interactive Visualizer

Experiment with different brightness curves and see exactly how your zones will respond: Combined Lights Visualizer

GitHub & Documentation

Repository: GitHub - recallfx/combined_lights: Combine and control multiple Home Assistant light entities as a single adaptive lighting group, with zone-based brightness and advanced configuration.

Full technical documentation, advanced configuration options, and architecture details available in the README.


Feedback welcome. Looking forward to seeing what zone setups the community builds with this.

2 Likes

This looks impressive and I will definitely try it out when I have a bit more time on my hands.

1 Like

This actually looks great - a much cleaner implementation of something i was hacking together for living room use case .

I will have to give it a go next week while I have some down time …

1 Like