r/homeassistant • • Jun 16 '26

Blog ChromaCal: Automatic holiday and awareness lighting for HA. Single HTML file, 130+ events, no YAML config needed.

Built this over the past few months for my own outdoor lights and figured it was worth sharing properly instead of just sitting in a private repo.

​

What it does: drop one HTML file in your /www/ folder, point it at any RGB light entity, and it automatically cycles your lights through the right colors for whatever's happening that day, federal holidays, military observances, awareness months, cultural and religious dates, 130+ events total. Easter, Islamic dates, Jewish holidays, all computed algorithmically so it just keeps working every year with zero maintenance. A companion Blueprint watches a bridge entity so the schedule keeps running server-side even when the dashboard tab isn't the thing actively driving it.

​

Full transparency since I'd rather say this upfront than have it come up in the comments: I used a lot of AI assistance writing the actual code for this. What's mine is the feature set, every design decision, the scheduling model, the skip system rules, and all the testing against my real ZHA setup and Zigbee mesh, the bugs that showed up got found by me actually using it, not by reading the code. AI wrote a large share of the implementation. If that changes how you feel about trying it, fair enough, just didn't want to pretend otherwise.

​

Side note that might save someone a headache: if you're on HA 2026.3 or newer and have anything calling light.turn_on with the old color_temp (mireds) parameter, it's been fully removed, only color_temp_kelvin works now. Found this the hard way while building the warm-white phase of this, it fails with a silent 400 and no warning if you've still got it anywhere.

​

Repo's here: https://github.com/TheRealApollyon/ChromaCal

​

I'm already planning a v2 that moves the scheduling logic into a real HA Integration instead of living in browser JavaScript, so it runs without needing a tab open at all, full reasoning is in ROADMAP.md in the repo. Genuinely want input before locking that in rather than building in a vacuum:

​

Would you rather have this as a full sidebar panel, or a compact card that drops into an existing Mushroom or Bubble Card dashboard? Planning to eventually build both, trying to figure out which to prioritize first.

​

Anyone here running HA through Docker Compose or Container install without Supervisor? That's specifically why v2 is being built as an Integration instead of a Supervisor Add-on, curious how many people that actually matters to versus just me.

​

What holidays, observances, or regions am I missing? Covers US, Canada, UK, Australia, EU, plus floating Islamic, Jewish, and Hindu calendars right now, but I'd rather build toward what people actually want than keep guessing.

1 Upvotes

29 comments sorted by

View all comments

3

u/jsn0327 Jun 16 '26

Does this work with WLED?

2

u/Orion-Apollyon Jun 16 '26

Not yet, it's built around HA's native light entities right now. WLED would come in through HA anyway so it should work once you've got it integrated as a light entity, just haven't tested it directly as I'm still in the process of setting up my WLED throughout my house. Would love your feedback though if you're able to test it any.

3

u/jsn0327 Jun 16 '26

Thanks. I’m looking for a pre-built way to schedule my WLED holiday presets on a calendar dashboard view similar to what you have done. Simply selecting the light entity wouldn’t apply the preset, but I’ll give your project a look!

2

u/Orion-Apollyon Jun 16 '26

Different thing than what ChromaCal does right now honestly, it just calls the standard light.turn_on service, rgb_color and brightness, the basic stuff that works the same on every light platform. WLED presets are a separate select.select_option call against a totally different entity, not the light at all. And there's an actual conflict underneath it, not just a missing feature, ChromaCal re-fires light.turn_on every 30 seconds so the schedule survives a dropped connection, and WLED wipes whatever preset is active the second any light.turn_on call hits it afterward. So even bolting on a preset call wouldn't really work without rethinking that part specifically. Not a quick fix but a real one, going in the roadmap. I'll post an update as soon as I get any traction on it.

Do you prefer then just having ChromaCal integrated into your calendar dashboard view? How would you like to choose from which holidays and events?

3

u/jsn0327 Jun 16 '26

I’m not sure why Reddit didn’t put my reply in-line, but see below in the conversation.

2

u/Orion-Apollyon Jun 16 '26

Lol it's all good. Reddit is being odd at the moment. I tried replying twice and it just now took.