[Early Release] HCL Lighting - Human Centric Lighting for Home Assistant
Hey everyone!
I’ve been working on a Human Centric Lighting (HCL) integration for Home Assistant and wanted to share an early version with the community for feedback.
What is it?
This integration automatically adjusts your lights’ brightness and color temperature throughout the day to match natural circadian rhythms, based on the DIN SPEC 67600 standard for biologically effective lighting.
Key Features
Smooth, biologically-inspired light curves using cubic Hermite spline interpolation (no harsh transitions!)
Morning activation: gradual warm-up from 2200K → 6500K
Midday regeneration dip: brief reduction around 12:30 PM
Afternoon re-activation: second focus peak
Evening wind-down: smooth transition back to warm tones
Flexible targeting - Control lights by:
Individual entities
Devices
Areas
Groups (automatically expanded)
Smart compatibility handling:
Automatic detection of light capabilities (color temp, brightness-only, etc.)
Extended warm white simulation using XY color for lights that don’t support very low Kelvin values
Optional “Smart Transition” mode to prevent visual artifacts on incompatible lights
Configurable brightness limits - Set custom min/max brightness ranges to match your preferences
Instant application - Lights that turn on automatically receive HCL settings immediately (no color flash)
How it works
The integration uses a 24-hour curve with key control points throughout the day. Instead of abrupt jumps between values, it uses smooth mathematical interpolation to create natural, flowing transitions that feel comfortable and biologically appropriate.
Current Status
This is an early alpha release (v0.1.0). Core functionality is working, but I’m looking for feedback on:
Real-world compatibility with different light types (Hue, IKEA, Zigbee, Z-Wave, etc.)
User experience with the configuration flow
Performance with large numbers of lights
Edge cases I haven’t considered
Installation
Copy the custom_components/hcl_lighting folder to your Home Assistant custom_components directory
Restart Home Assistant
Go to Settings → Devices & Services → Add Integration → “HCL Lighting”
Select your target lights/areas and configure options
To give you a direct answer: In the current version, the curve (including the “siesta” / regeneration dip at 12:30 PM) is fixed to the clock time and based on the DIN SPEC 67600 standard. It is not yet country-specific or configurable via the UI.
However, I am currently working hard on the v0.2.0 release, which lays the groundwork for exactly this feature.
What’s happening right now: I am finalizing v0.2.0, which focuses heavily on robustness and performance:
Manual Override Detection: The system will now intelligently pause HCL when you manually change a light, so it doesn’t fight against you.
High Performance: I’ve refactored the engine to handle large groups of lights simultaneously without any “popcorn effect” (delays).
Internal Refactoring: I have separated the math logic from the entity logic.
What does this mean for you? While v0.2.0 will still have the fixed curve, the internal code is now ready to handle dynamic parameters. As soon as v0.2.0 is out (very soon!), my full focus will shift to v0.3.0, which will introduce a UI to customize the curve, allowing you to shift the “siesta” time or adjust wake/sleep times to fit your location and schedule.
I’m excited to announce v0.2.1 (currently Beta 10). This isn’t just a bug-fix release; it’s a massive leap forward in making this integration “spouse-approved” and production-ready.
What’s in it for you?
1. No More “Blinding Flash” at Night (Instant-On) This is the biggest game-changer. Previously, if you turned on a light at 3 AM, it might flash at 100% brightness for a split second before dimming. Now: The integration calculates the correct brightness and color the millisecond you hit the switch. Your lights turn on gently at the right level immediately.
2. It Plays Nice With Manual Changes (Smart Override) I know there are times you want to manually dim the lights or set a mood. Now: If you manually change a light (brightness >5% or Kelvin >200K), the HCL automation automatically “backs off” for that specific light. It won’t fight you. It waits until you turn the light off and on again to resume the circadian schedule, or until 4 hours have passed since the change.
3. Gentle on Your Network Smart homes with many Zigbee or Z-Wave devices can get congested. Now: I added smart thresholds. It stops spamming your network with invisible updates. Commands are only sent if the lighting change is actually visible to the human eye (>1% brightness or >50K color temp).
4. It Just Works (Rock-Solid Stability) I spent the last few days strictly focusing on reliability. Even with unstable integrations or unreliable lights, this integration handles the situation for you.
Self-Healing: If a light drops off the network or sends bad data (like missing attributes), the integration won’t crash. It handles errors gracefully and keeps running for your other devices.
How to get it
This integration is available via HACS (add as a Custom Repository).
Make sure to enable “Show beta versions” in HACS to see the latest Pre-Release.
Important for Beta Testers: If you were testing Beta 8 or Beta 9, please update to Beta 10 (or later) immediately. Those previous two versions had critical startup issues that are now fully resolved.
Give it a try and let your lights work with your biology, not against it!
I’ve been working hard on the v0.3.0 update for the HCL Lighting integration, specifically focusing on the new “Dynamic Curve” logic that adapts to your personal schedule (Wake, Midday, and Sleep times).
One challenge with Circadian/HCL lighting is that it’s often hard to visualize exactly how the light will behave throughout the day just by looking at configuration numbers. You often have to wait a whole day to see if the transitions feel right.
To solve this, I’ve built a Live HCL Simulator that runs in your browser!
It uses the exact same math (Cubic Hermite Splines & Elastic Intervals) as the Home Assistant integration, ported 1:1 to JavaScript. This allows you to:
Visualize the Curve: See the exact path for Color Temperature (Kelvin) and Brightness over a 24-hour period.
Test Your Schedule: Adjust “Wake Time,” “Social Midday,” and “Sleep Time” sliders to see how the curve stretches and compresses dynamically.
Check Brightness Limits: Instantly see how your Min/Max brightness settings affect the curve’s peaks and dips.
Feedback Wanted!
I’d love for you to give it a spin. Does the curve behavior match your expectations? Are the transitions around the “Midday Dip” or “Wind-Down” phases smooth enough for your needs?
Let me know what you think or if you spot any weird behavior in the graph!
Unlock the full potential of your circadian lighting with the biggest update yet!
U am thrilled to announce the release of HCL Lighting v0.4.0. This update transforms the integration from a backend logic engine into a fully interactive, drag-and-drop experience. No more guessing coordinates in YAML—visualize and sculpt your perfect day directly in your Dashboard.
What’s New?
1. Interactive Dashboard Card
The core of this release is the new HCL Curve Card.
Drag & Drop: Simply grab the handles on the Brightness or Color Temperature charts and drag them to adjust your schedule.
Visual Feedback: See exactly how your lights will behave throughout the day.
Glassmorphism UI: A stunning, modern design that fits perfectly into any dashboard.
Touch Friendly: Works seamlessly on mobile and desktop.
2. Science-Grade Math (PCHIP)
I’ve overhauled the math engine.
Old Way: Standard interpolation could create “overshoots” (lights getting brighter than 100% or dipping weirdly).
New Way: PCHIP (Piecewise Cubic Hermite Interpolating Polynomial) guarantees smooth, natural transitions that never swing outside your control points. It’s the same math used by professional lighting engineers.
3. Visual Editor & Validation
Presets: One-click profiles like Early Bird, Night Owl, Focus (Home Office), and Relax.
Safety Checks: The card analyzes your curve in real-time. If you set a night too bright or a transition too steep, you’ll get a helpful warning zone overlay.
Test & Revert: Hit “TEST” to feel the lighting immediately. If you don’t like it, “REVERT” wipes the slate clean.
Getting Started
Installation
Update via HACS to v0.4.0.
Restart Home Assistant.
You’ll see a Repair Issue guiding you to add the card.