Contexte
Extension du milestone v10.0.0 — Éclairage ambiance, une fois le cœur livré et validé.
Constat du cadrage — pourquoi ce n'est pas dans le cœur
L'idée d'origine (#182) évoquait une synchronisation sur le countdown. L'audit a montré que
rien n'existe pour s'y accrocher :
- Le protocole LED du projet n'a ni durée ni animation pilotée au tick — toutes les animations
sont autonomes côté firmware (protocol.LEDSetPayload, internal/protocol/messages.go:751, ne
porte aucun champ de durée).
OnTimerTick et OnCountdownTick (internal/game/engine.go:242-252) ne déclenchent
aucune LED aujourd'hui.
COUNTDOWN n'a même pas de rendu LED propre : la phase partage le cas groupé
PhaseStopped/PhasePrepare/PhaseReady/PhaseCountdown de sendLEDSetForBuzzerNormal.
Câbler l'éclairage sur le minuteur reviendrait donc à créer un mécanisme de déclenchement
entièrement nouveau — exactement ce que la contrainte de cadrage (« réutiliser la logique
d'événements existante plutôt que dupliquer ») demandait d'éviter dans le lot cœur.
Portée
- Éclairage évoluant pendant le décompte (progression de couleur, pulsation accélérée).
- Débit : c'est le point dur. Une animation au tick multiplie les écritures HTTP vers le pont
séquentielles, à l'opposé de la coalescence « dernier état gagnant » que le cœur impose
précisément pour protéger le matériel et le timing de buzz. Un mécanisme d'effet autonome
côté ampoule serait à privilégier sur un pilotage image par image depuis le serveur.
Dépendances
Milestone v10.0.0 livré. À réévaluer selon le pilote effectivement retenu.
Note du 2026-09-03 — issue mise à jour après l'abandon du BLE au profit du pont Hue en REST
local. Le raisonnement sur le débit est inchangé : Philips recommande ~10 commandes/s sur
/lights, et l'écrivain de #205 coalesce précisément pour rester sous ce plafond. Un mécanisme
d'effet autonome côté ampoule reste préférable à un pilotage image par image.
Contexte
Extension du milestone v10.0.0 — Éclairage ambiance, une fois le cœur livré et validé.
Constat du cadrage — pourquoi ce n'est pas dans le cœur
L'idée d'origine (#182) évoquait une synchronisation sur le countdown. L'audit a montré que
rien n'existe pour s'y accrocher :
sont autonomes côté firmware (
protocol.LEDSetPayload,internal/protocol/messages.go:751, neporte aucun champ de durée).
OnTimerTicketOnCountdownTick(internal/game/engine.go:242-252) ne déclenchentaucune LED aujourd'hui.
COUNTDOWNn'a même pas de rendu LED propre : la phase partage le cas groupéPhaseStopped/PhasePrepare/PhaseReady/PhaseCountdowndesendLEDSetForBuzzerNormal.Câbler l'éclairage sur le minuteur reviendrait donc à créer un mécanisme de déclenchement
entièrement nouveau — exactement ce que la contrainte de cadrage (« réutiliser la logique
d'événements existante plutôt que dupliquer ») demandait d'éviter dans le lot cœur.
Portée
séquentielles, à l'opposé de la coalescence « dernier état gagnant » que le cœur impose
précisément pour protéger le matériel et le timing de buzz. Un mécanisme d'effet autonome
côté ampoule serait à privilégier sur un pilotage image par image depuis le serveur.
Dépendances
Milestone v10.0.0 livré. À réévaluer selon le pilote effectivement retenu.