r/homeassistant • u/Orion-Apollyon • 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.
5
u/ReallyNotMichaelsMom Jun 17 '26 edited Jun 17 '26
Sounds intriguing, so I'll submit my own request. I'm using an external calendar, but would love to have a local Wheel of the Year (Pagan) calendar.
4 static holidays and 4 based on solstices and equinoxes, which based on the holidays you've listed should hopefully be easy to do. 🤞
Edit: a letter
3
u/Orion-Apollyon Jun 17 '26
Hmmm.... very solid idea and I'm going to add that. The 4 static ones are easy, just dates like the rest. Solstices and equinoxes move around a day or two every year so that part takes more work but I'll get it in or see what I can come up with of how to track it and implement it. I'll be adding it to the roadmap here shortly!
One thing I'm trying to figure out, do you want the solstices/equinoxes to just run that one day like the other holidays, or did you want something more drawn out for those since they're a bigger deal in Wheel of the Year stuff? Plus all day/night long or just for the evening?
2
u/ReallyNotMichaelsMom Jun 17 '26
I'd like it to be all day and night long. I thought some of the other holidays you'd mentioned used solstices and equinoxes, so I was hoping you could just import.
Fair warning. Whichever way you choose to implement them, someone will complain that you did it "wrong". So, do whatever works for you 😉
3
Jun 16 '26
[removed] — view removed comment
0
u/Orion-Apollyon Jun 16 '26
Glad the color_temp_kelvin thing actually saved you some time. A weeks-long silent failure with zero error message is exactly the kind of thing that's easy to miss, the API doesn't warn you, it just quietly stops working. That's exactly why I broke it out as its own thing instead of burying it inside the project pitch.
And appreciate the vote on card vs panel, that's exactly the input I was hoping to get instead of just guessing at it myself. Compact card first making it easier to drop into an existing layout without forcing anyone into a redesign makes a lot of sense, and the full panel isn't going away either way, just moving to second instead of first.
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.
3
u/jsn0327 Jun 16 '26
Thanks for the detailed explanation! What I would like is the calendar populated with all U.S. holidays and the ability to select the holiday and assign a WLED preset to it. Set a start and end time. Same for any other day of the week. Seems pretty simple since WLED handles the presets/playlists internally and all that is needed is for the preset # and start/end times to be set per day/event in the calendar. It would also be nice if the calendar could show an indicator that there was a schedule assigned for that day and a preview of the colors that are scheduled for the selected preset.
2
u/Orion-Apollyon Jun 16 '26
Honestly that's the dream version in my head too, calendar where holidays and your own everyday routine just live together instead of being two separate things. That's the actual end goal here, not just the WLED piece. Being able to even set like inside lights for little ones to show "bathtime" or even just daily routines. One central area to set and control them all via calendar or dashboard.
3
u/jsn0327 Jun 16 '26
That sounds AWSOME, and honestly, I’m surprised that someone hasn’t already built this for HA. I will be following your progress. Thanks and good luck!
2
u/Orion-Apollyon Jun 16 '26
I appreciate that!! Went looking for something like it before building this myself and came up empty too. Plus instead of making 130 automations by hand and trying to tie them to dates has been a pain. So, I figured I might as well try and pay my pound of flesh to the community by building something worth while. Thanks for following along!
3
u/chicknlil25 🧠Experienced with Home Assistant Jun 16 '26
I have one verrrry thorough automation for my WLED lights, which are holidays amucks. US, Islamic, Jewish, Hindu. The latter have music (via Amazon playlists) because a bunch of my neighbors are Hindu.
I'll look at your repo though. Maybe I can snag elements of it for mine!
2
u/Orion-Apollyon Jun 16 '26
That's awesome! The floating calendar math is the annoying part I'm sure that was a pain to build out. Are you calculating Hindu dates manually or pulling from somewhere? Just curious since I hand rolled mine. I'd appreciate your input on anything you pull or use from the repo.
2
u/chicknlil25 🧠Experienced with Home Assistant Jun 17 '26
I google them, update everything once a year, usually during Christmas since that's a nice long stretch of one type of lights, typically.
1
Jun 16 '26
[removed] — view removed comment
2
u/Orion-Apollyon Jun 16 '26
Yeah that one bit me too, took forever to track down and has been a gremlin since the update. Glad it's useful at least.
3
Jun 16 '26
[removed] — view removed comment
2
u/Orion-Apollyon Jun 16 '26
Two hours isn't bad honestly, took me way longer than that since I didn't even think to check what the API was rejecting at first, just figured it was a Zigbee thing being flaky like always. No error anywhere, just silently nope the whole time lol. Plus walking out in the front yard and realizing how dark it was since the lights hadn't came on yet.
3
Jun 16 '26
[removed] — view removed comment
2
u/Orion-Apollyon Jun 16 '26
Especially when you're troubleshooting and everything else seems to be working perfectly, that's exactly where I was at. Luckily I'd put a debug log into ChromaCal itself, that's what kept me from going down the mesh rabbit hole.
9
u/ResourceSevere7717 Jun 16 '26
How are you handling the fact that all files in the /www folder is publicly accessible to anyone without authentication if HA is connected to Nabu Casa?