Astronomical event triggers (meteor showers, eclipses, moon phases, aurora) #20
Labels
No labels
area/ai
area/backend
area/frontend
area/infra
area/scheduler
area/wled
good-first-issue
priority/high
priority/low
priority/medium
type/bug
type/chore
type/ci-cd
type/docs
type/feature
type/qa
v1.0.0
v1.1.0
v1.2.0
v2.0.0
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/Iris-WLED#20
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Extend the event calendar with sky/astronomical occurrences so the lights can mark meteor-shower peaks, solar/lunar eclipses, full moons, and (optionally) aurora alerts.
Why it's valuable
Iris already computes solstices and equinoxes via the
computedrecurrence registry — astronomical events are a natural, on-theme extension of a system that already tracks the sky, with no new architecture.Sketch
computedfunction registry (e.g. major annual meteor showers with known peak dates, eclipse tables, full-moon dates).Acceptance criteria
Proposed enhancement (brainstorm follow-up).
Landed in #127 (squash-merged to
main).What shipped
astralrather than tabulated. That matters for #61: they add nothing to the lookup-table horizon and keep working indefinitely.AURORA_ENABLED, off by default) polling NOAA's planetary K-index, showing an aurora scheme aboveAURORA_MIN_KPand restoring the scheduled scheme when it subsides. Edge-triggered so a continuing storm doesn't restart the effect every fifteen minutes and stutter the strip.Two things worth recording
The moon tests assert astronomy, not dates — that each returned day really is full, that gaps are whole synodic months, that the answer moves year to year. A function returning a fixed date would pass a weaker test, and this is exactly the kind of code that looks right while being wrong.
One of my own test premises was wrong: I asserted consecutive named moons are 28–31 days apart, and May 2026 has two full moons (the 1st and the 31st). Picking one per calendar month necessarily skips one, so that gap is two synodic months. The test now asserts whole synodic multiples and documents the blue-moon case.
Eclipses are not in this — split to #126. They need an ephemeris and a per-observer visibility calculation: a lunar eclipse over the Indian Ocean means nothing to a roofline in Texas, and solar totality varies over a few hundred kilometres. A worldwide eclipse event would be wrong most of the time, and that's a heavier dependency than the image should carry after #60. It deserved its own decision rather than a guess inside this one.
Verified:
ruffclean,mypyclean, 610 tests passing, CI green.