Watchue
actif · depuis 2026Une surveillance auto-hébergée pour Philips Hue. Elle enregistre chaque lumière qui s'allume ou s'éteint et prévient sur Telegram ou Discord.
- ▸Go 1.27, Echo v5
- ▸Vue 3, TypeScript
- ▸SQLite (100% Go, sans cgo), sqlc, goose
- ▸Flux d'événements Hue CLIP v2
- ▸Docker (image à binaire unique)
- ▸code source ↗
- ▸licence: MIT


Ce que ça fait
On choisit les zones, pièces ou lampes qui comptent depuis son pont Hue, et Watchue enregistre chaque allumage et chaque extinction, puis prévient sur Telegram ou Discord, selon ce qui est configuré. Une ressource peut être mise en sourdine : son historique continue de se remplir, elle arrête simplement de notifier. Un interrupteur global coupe tout le canal sans rien perdre.
La détection se fiche de l'origine du changement. L'application Hue officielle, un interrupteur mural, une autre automatisation : tout remonte, parce que Watchue écoute le pont lui-même plutôt que d'interroger sa propre API.
L'appairage est la partie pénible de tout ce qui touche à Hue : le pont ne donne
sa clé applicative qu'après une pression sur son bouton physique. Plutôt que de
documenter une commande curl, Watchue embarque un assistant /setup : on
démarre sans clé, il détecte l'appui tout seul, stocke la clé et redémarre. Le
fournisseur de notifications a droit au même traitement, avec un message de test
avant de valider.
Comment c'est fait
Go pour le backend, Vue 3 pour l'application web, les deux livrés en un seul
binaire avec le frontend embarqué (go:embed), sur un unique fichier SQLite. Le
même squelette que Postr
: Echo v5, sqlc pour les
requêtes, goose pour les migrations, un driver SQLite en Go pur pour garder une
image légère.
Ce qui est intéressant, c'est la tuyauterie entre deux flux d'événements. Le pont expose son propre flux CLIP v2 (SSE) que Watchue garde ouvert, avec reconnexions, et c'est ce qui fait qu'un interrupteur actionné à la main remonte ici. Chaque événement est enregistré, confronté à la liste de surveillance, puis poussé vers le navigateur sur un second flux SSE : le tableau de bord suit la maison en direct, sans le moindre rafraîchissement de page. Les fournisseurs de notification sont derrière une interface ; Telegram et Discord n'en sont que deux implémentations, et une seule peut être active à la fois : configurez les deux et l'application refuse de démarrer plutôt que d'en choisir une en douce.
Pourquoi
Une petite question, vraiment utile : est-ce que quelqu'un a laissé la lumière du garage allumée ? Ce qui valait le coup de le construire, c'est que ça fait un joli petit système événementiel : un flux en entrée, du stockage, une redistribution, un flux vers le navigateur, assez petit pour tenir dans la tête et pour être terminé.