Il y a quelques mois je vous présentais les ampoules LED colorées Philips Hue.
Quoi de plus stressant qu'un réveil qui vous interrompt votre nuit de sommeil ?
J'ai eu l'idée de créer un script de simulateur d'aube. En effet le corps humain de met en route plus naturellement avec une arrivée progressive de la lumière qu'avec un réveil qui sonne brusquement dans la pénombre.
Fonctionnement
J'utilise ma plateforme de domotique sous Domoticz qui tourne sur un Raspberry Pi, mais vous pouvez utiliser n'importe quelle machine capable d'envoyer une commande Linux.
Il vous faut au minimum :
- une machine GNU/Linux
- une ampoule Hue (autre que Lux)
- un pont Hue (bridge)
Votre pont Hue doit être en dhcp static ou disposer d'une IP fixe.
Nous allons utiliser l'API du pont pour piloter l'ampoule. Fonctionne avec toutes les version du pont, v1 et v2.
Etape 1 : créer un accès sur l'API
Le pont accepte uniquement les ordres venant de périphériques enregistrés (comment). Allez sur :
http:///<ip-pont>/debug/clip.html
Si vous ne connaissez pas l'adresse IP locale de votre pont allez ici :
https://discovery.meethue.com/
Un périphérique/utilisateur enregistré n'est rien d'autre qu'une chaine alphanumérique présente en liste blanche sur le pont (whitelist).
Création d'un utilisateur whitelist (cf doc) :
- URL: /api/
- Message Body: {"devicetype": "hue_BM#domoticz"}
- Bouton: POST
Le pont vous informe que vous n'avez pas appuyé sur son unique bouton :
Presser le bouton puis dans les secondes qui suivent appuyez à nouveau sur POST (20 secondes environ) :
Cette fois c'est bon, notez précieusement notre username :
3b6d2f9634466347f4f47faba3685b.
J'en profite pour vous donner quelques commandes qui peuvent être utiles.
Pour lister tous vos username disponibles il faut le faire à partir d'un username valide :
- URL: /api/<username>
Ex : /api/3b6d2f9634466347f4f47faba3685b - Bouton: GET
Pour supprimer un username (username2 sera supprimé) :
- URL: /api/<username>/config/whitelist/<username2>
Ex : /api/3b6d2f9634466347f4f47faba3685b - Bouton: DELETE
Doit renvoyer : "success": "/config/whitelist/<username2> deleted"
Exemple en bonus pour faire clignoter votre lampe :
- URL : /api/xxxxxxxxxxxxxxxx/lights/1/state
- {"alert":"select"}
- bouton : PUT
Autre possibilités de clignotement :
{"alert": "select"} : clignote une fois
{"alert": "select", "hue": 50000} : clignotte une fois puis couleur violet
{"alert": "lselect"} : clignote pendant 30 secondes
{"alert": "lselect", "hue": 50000} clignote 30 secondes puis couleur violet
Présentation du script bash
Le script bash que j'ai créé supporte plusieurs arguments facultatifs permettant à Domoticz de l'utiliser facilement.
▶️ Récupérez le script reveil.sh
Si aucun argument n'est précisé c'est une couleur verte à l'intensité maximum (255) avec une transition d'une minute qui commence :
pi@domoPi ~/scripts_bm $ ./reveil.sh Couleur: vert Intensite: 255 Duree: 1 min { "on":true, "bri":255, "xy":[0.214,0.709], "transitiontime":600 } http://192.168.0.20/api/3b6d2f9634466347f4f47faba3685b/lights/1/state [{"success":{"/lights/1/state/transitiontime":600}},{"success":{"/lights/1/state/on":true}},{"success":{"/lights/1/state/xy":[0.2140,0.7090]}},{"success":{"/lights/1/state/bri":254}}]
Si vous obtenez "success" alors c'est que tout s'est bien passé. Sinon un message d'erreur vous dira ce qui pose problème. Exemple : "body contains invalid json".
C'est pour cette raison que j'affiche systématiquement les arguments en console, si l'un d'entre-eux est vide alors il y a un souci dans vos arguments. Aucun contrôle n'est fait par le script, c'est à vous de faire attention.
La liste des couleurs supportées par le script sont : orange, bleu, chartreuse, chocolat, cyan, vert (par défaut), magenta, marron, rouge, rose, jaune, violet, blanc. Vous pouvez modifier le script si vous souhaitez une autre couleur XY. L'application Android Hue Pro (payant) permet facilement de récupérer une valeur précise facilement.
Une fois que tout fonctionne comme prévu, passons à l'intégration dans domoticz.
Intégration dans domoticz
Je pars du principe que vous avez déjà appairé votre Hue à Domoticz pour la faire apparaître dans les dispositifs (très simple).
Contrairement à mon billet sur le pilotage de mon ampli Yamaha je n'ai pas crée d'interrupteur virtuel mais un scénario. La raison est simple : nous n'avons pas d'état OFF.
Je veux que l'ampoule 3b6d2f9634466347f4f47faba3685b.
Dans Scénarios > Créer un scénario :
- Nom : "Réveil progressif 8h10 15m (Bash)"
- Type : scène
- Protégé : non coché
- Action On: script:///home/pi/scripts_bm/reveil.sh orange 255 15
- Action Off: vide
- Description : <couleur> <intensité> <durée d'allumage en minute>
Aucun dispositif d'activation. En revanche nous allons utiliser un délai d'extinction pour que l'ampoule s'éteigne après un certain temps, j'ai fixé ce délai à 20 minutes. Je considère après 20 minutes que je n'ai plus besoin d'éclairer la pièce dans laquelle je dors car je n'y suis plus.
Choisir dans Dispositifs l'ampoule Hue :
- Dispositif : votre ampoule Hue
- Commande : Off
- Délai d'allumage : 0
- Délai d'extinction : 1200 secondes (20 minutes)
- Couleur : noir, Nuance : 0, Luminosité : 0, RGB
Vous pourriez très bien choisir une commande sur "On" pour choisir une autre couleur et intensité, comme le blanc pour éclairer la pièce normalement. A vous de voir !
Planification du scénario
C'est un jeu d'enfant. Cliquez sur Scénarios puis sur "planning" en bas de votre scénario :
Choisir les jours et l'heure de déclenchement.
Vous pouvez créer plusieurs programmations de déclenchement dans le même scénario (semaine, weekend, etc).
Conclusion
Ce billet n'a aucun lien avec une quelconque étude de santé, il s'agit d'une expérience personnelle. Il s'agit d'un script qui peut être amélioré avec des données plus précises comme la température de la lumière et différents paliers.
C'est donc un résultat très subjectif. Personnellement je trouve que ce système permet d'émerger plus facilement le matin, de façon moins brutale. La façon dont on se réveille me semble important pour aborder le reste de la journée.
Si le nombre d'heures de sommeil est suffisant c'est la lumière qui me réveille (avant le réveil). C'est pourquoi je ne la déclenche pas trop tôt, je ne veux pas me lever 30 minutes avant ! Si vous avez une dette de sommeil alors c'est bien votre réveil qui va vous sortir brutalement du réveil, et vous verrez la lumière à son maximum. Ce qui est plutôt bon car l'organisme se "met en route" dès que la lumière est présente. Tout dépend si vous avez un sommeil léger et qu'un simple détail vous réveille ou bien si au contraire vous dormez sans problème dans un environnement changeant.
Mine de rien ce petit script permet de se réveiller en utilisant un autre sens que l’ouïe. Il qui démontre une fois de plus que ces ampoules Hue peuvent servir à bien des usages et ne se limitent pas à l'effet waouh 🙂
note : si vous souhaitez piloter vos systèmes Hue en Python sachez que la librairie Qhue existe
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
9 commentaires
Bonjour,
J'ai récemment testé votre script. Sur la fin vous avez parlé d'ajouter de possible paliers et changement de température. Je serai intéressé par le moyen d'y arriver pour obtenir le même effet que leur simulateur d'aube, c'est-à-dire que la lumière commence à s'allumer dans une température "chaude" (orange) pour finir sur une température "froide" (blanc) au fur et a mesure que l'intensité augmente.
J'aimerai bien quelques pistes pour créer ce type de comportement (si possible) à partir de votre script.
Cordialement.
@Jinha: personnellement la couleur Orange me satisfait, il faudrait enchainer plusieurs fois le même script avec des couleurs différentes pour faire des paliers
Bonjour,
Merci pour cet article très clair. Pour info, j'ai remarqué que le paramètre "transitiontime" n'est pas supporté par le modèle de lampe BLOOM de la gamme HUE et donc le script ne peut pas fonctionner avec ces lampes. Dans la pratique, la lampe passe des le départ au maximum d'intensité sans aucune transition. Par contre, cela marche parfaitement avec les lampe LIGHTSTRIP PLUS par ex (bande de led).
Ps: Dans ton tableau des couleurs, toutes sont nommées en Français, sauf le rouge qui est codé "Red" 🙂
Cordialement
Merci pour l'info, j'ai corrigé le petit bug de traduction
Hello,
Il y a une fonction simulateur d'aube avec l'application Hue.
Pourquoi ce script, est-ce qu'il y a un avantage ?
@Stouffy: A l'époque l'application de première génération ne le permettait pas 🙂
Bonjour,
J'essaie d'adapter votre script à mon utilisation car je ne peux pas ajouter directement le pont hue dans mon Domoticz pour un problème d'adresse IP (mon pont Hue est branché en Ethernet sur mon Pi car je n'ai pas de box internet, si je l'ajoute dans Domoticz tous mes capteurs disparaissent ! J'ai font un bridge de connexion entre mon pi et le pont philips). J'ai créé un interrupteur virtuel avec dans Action On : script:///home/pi/dev-domoticz/scripts/php/test.sh orange 254 1
La lampe ne s'allume pas pourtant j'ai enregistré un utilisateur valide dans le pont Hue et j'ai adapté les adresses IP à mon réseau.
Cela ne fonctionne pas. J'ai essayé différentes solutions trouvé sur d'autres forum.
Existe-t-il un moyen d'allumer les ampoules Hue en envoyant des requêtes http ? Il me semble que oui d'après ce que j'ai lu un peu partout. J'ai essayé avec du php, du bash mais rien n'y fait ! Avez-vous une idée pour m'aider SVP ?
Merci d'avance pour les éventuelles réponses que vous pourrez m'apporter.
@Buchi_Blanc: bonjour, tu dois passer par un switch pour relier les deux ensemble ou par un RJ45 croisé. Ensuite il te suffira de mettre une IP fixe sur les deux, dans le même réseau bien entendu, pas besoin de passerelle
Bonjour,
Merci pour ce script.
J'ai besoin d'aide 🙂
J'ai lancé le script et aucune ampoule chez moi ne c'est allumé mais j'ai l'erreur suivante :
pi@raspberrypi:~/domoticz/scripts $ ./reveil.sh
Couleur: vert
Intensite: 255
Duree: 1 min
{ "on":true,
"bri":255,
"xy":[0.214,0.709],
"transitiontime":600 } http://192.168.2.242/api/vz2dSiD-xxxxxxxxxxx/lights/1/state
./reveil.sh: ligne 78: /var/log/reveil-sh.log: Permission non accordée
Autre question, comment determine-t-on quelle ampoule(s) est concernée ?
Je ne veux appliquer ce script que dans la chambre.
Merci d'avance de vos réponses.