Hack du Hue Motion
Dans ce nouvel article de la série trucs, astuces et conf. maîtrisez Home assistant je vous propose de nous intéresser au Hue motion. Je vous en avais déjà parlé ici, le Hue motion est un petit boîtier permettant d’allumer automatiquement vos lampes en fonction de la luminosité et des mouvements dans une pièce. Il utilise donc un détecteur de luminosité ainsi qu’un détecteur de mouvement. Ce qu’on sait moins c’est qu’il dispose aussi d’une sonde de température !
Nous avons donc ici un périphérique plutôt complet et intéressant. Le problème est que, de base, il n’est pas possible d’agir sur un autre système que les lampes Hue ni même de récupérer les informations. Notre but sera à l’aide d’Home assistant de récolter toutes ces données – y compris la température – et de les utiliser afin de mieux suivre votre domicile. De plus, nous allons voir comment transformer ce boîtier en « alarme ».
Prés-requis
Tout d’abord, vous devez être un minimum équipé. Voici les différents éléments indispensables :
- Un système Hue fonctionnel (voir ici pour plus d’info)
- Un boîtier hue motion (entre 30 et 40€ )
- Une installation home assistant (si vous n’en avez pas, cette série est consacrée à la mise en place complète d’un tel système)
Accédez au mode développeur hue
Dans un premier temps, identifiez l’adresse IP de votre matériel Hue. Pour ma part, je passe par ma box pour la connaître. Ensuite dans votre navigateur tapez http://<Adresse_IP>/debug/clip.html
. Ainsi, vous accéderez ainsi à un client REST permettant de faire des requêtes sur votre pont Hue.
C’est le moment de paramétrer un utilisateur. Tapez seulement /api
dans URL et remplissez Message Body comme ce qui suit en remplaçant pseudo par ce que vous souhaitez.
Maintenant, cliquez sur POST. Vous devriez normalement recevoir l’erreur suivante.
Appuyez sur le bouton présent sur votre bridge hue et cliquez de nouveau sur post. Cette fois-ci, vous devriez avoir un message contenant un champ username. Conservez-le, nous allons l’utiliser tout au long de cet article.
Capturer la température et la luminosité
Les sensors Hue
Tout d’abord, nous allons tenter de récupérer les valeurs de luminosité et la température mesurée par votre hue motion. Pour ce faire, nous avons besoin en premier lieu d’identifier les sensors. Retournez sur le client rest que nous avons vu dans le chapitre précédent, entrez l’url comme ci-dessous, en remplaçant username par celui que vous avez obtenu précédemment.
Vous devriez trouver dans l’encart Command response une réponse plutôt verbeuse, surtout si vous possédez plusieurs sensors (équipement Hue autre que les lampes et ampoules). Parmi ces informations, identifiez les parties concernant la température Hue temperature et la luminosité Hue ambient light et notez leurs id(sur l’exemple ci-dessus, pour le sensor daylight il s’agit de l’id 1).
Pour vous assurer que tout est ok, vous pouvez relancer une requête comme précédemment en ajoutant l’id de votre sensor. Vous ne devriez ainsi obtenir que les informations de ce dernier.
La configuration home assistant
Il est maintenant temps de configurer Home assistant. Nous allons ajouter de nouveaux sensors. Pour ce faire, ouvrez le fichier de configuration et ajoutez les lignes suivantes.
https://gist.github.com/quentinchap/d1b2cdfa30f8e4caca57d7b0ca9dfc5a
Après redémarrage voici ce que j’obtiens en page d’accueil de Home assistant.
et dans la partie history
Détecter les mouvements
Configuration Hue
Pour la détection de mouvement, nous devons tout d’abord créer un élément virtuel du côté de notre installation Hue. Retourner sur la page http://<Adresse_IP>/debug/clip.html
et paramétrer le client comme ci-dessous. Cliquez sur post et votre sensor virtuel sera créé. Conservez bien son id qui est renvoyé en réponse.
Ensuite, de la même manière que dans le début de l’article, identifiez votre capteur physique. Pour le repérer, fiez vous au type, il devrait ressembler à ZLLPresence. De mon côté l’id est le 6, je l’utiliserai donc dans les exemples qui suivent.
Nous allons maintenant définir les règles auxquels le capteur répondra. Dans un premier temps, voyons celle qui gère la détection. Configurez votre client comme l’exemple ci-dessous et cliquez sur POST.
Retrouver le code ci-dessous sur github
Maintenant, voyons la règle qui permettra de réinitialiser le capteur. Configurez votre client comme l’exemple ci-dessous et cliquez sur POST. Vous pouvez bien entendu modifier la valeur PT00:05:00, cela aura pour effet de modifier le temps avant que le reset intervienne.
Retrouver le code ci-dessous sur github
Configuration Home assistant
Maintenant que tout est en place, il ne reste plus qu’à paramétrer notre sensor côté Home Assistant. Pour ce faire, retournez dans votre fichier de configuration et ajoutez le code ci-dessous en remplaçant bien Adresse_IP et username.
https://gist.github.com/quentinchap/c7f7209cb1946991b884d753767b0ca5
Un petit redémarrage de Home assistant et nous y voilà. Vous devriez avoir un indicateur de ce type en page d’accueil. Le chiffre 1 devrait s’afficher en cas de mouvement et il devrait laisser sa place à un 0 au bout de cinq minutes sans activité.
Notification
Super, nous sommes maintenant capables de détecter un mouvement. Le top serait d’être averti de ce dernier afin de repérer un éventuel intrus !
La solution que j’ai retenue, mais il en existe d’autres, est d’envoyer un message via telegram afin de recevoir une notification. Pour ce faire, je vais passer par IFTTT. Nous n’allons pas voir en détail chaque étape, mais nous allons nous appuyer sur cet article.
Configuration de IFTTT
Dans un premier temps, créez un applet:
if Maker then Telegram
Pour le composant marker, j’ai choisi de réagir à l’event HASS_MOTION_DETECT et pour le composant Telegram j’ai choisi send a message.
Ce qui nous donne quelque chose comme ça :
Configuration de home assistant
Maintenant dans la partie automation ajoutez la configuration suivante :
https://gist.github.com/quentinchap/7a4a9715aa588b5049bb0d0bfa14bd38
À partir de maintenant chaque mouvement détecté donnera lieu à l’envoie d’un message sur Telegram et donc d’une notification.
Conclusion
C’est tout pour aujourd’hui, vous pouvez maintenant tirer parti de toutes les possibilités du Hue motion. Pour le moment, chaque mouvement donne lieu à une notification, mais vous pouvez très simplement déclencher cette automation seulement dans certaines conditions. Par exemple, si vous avez mis en place le tracking décrit dans cet article, vous pouvez limiter les notifications aux moments où vous n’êtes pas chez vous.
Cadre en informatique dans une multinationale je suis un touche-à-tout passionné de nouvelles technologies.
Bonjour Quentin,
Super cet article c’est exactement ce que je cherchais. Cependant je ne comprends pas la partie « créer un élément virtuel du côté de notre installation Hue »
A quoi cela sert il ? Si tu pouvais m’éclairer sur ce point.
Je découvre cet accessoire et je veux en faire la base de mon système domotique. Pour la partie, messagerie je me base sur Raspbian+Gammu avec un dongle GSM, le tout sur onduleur. Je veux un système de détection fonctionnel même sur absence de courant.
Merci
Bonjour,
Intéressant comme projet 🙂 N’hésite pas à nous en dire plus à l’occasion !
L’élément virtuel, ou pour être plus précis le state virtuel va pouvoir être requêté via l’API REST. Cela va nous permettre de passer outre la limitation du Hue Motion qui ne peu pas être consulté directement. Sans ce state, jusqu’à maintenant, il n’est pas possible d’obtenir l’état du capteur.
En espérant t’avoir apporté des réponses à tes questions 🙂
Bonne soirée
Bonjour !
Excellent article, très clair et qui va donner envie d’acquérir ce motion sensor dans la panoplie Hue ^^
J’aurai une petite question côté utilisation, je me suis procuré des prises Osram Smart+ compatible Hue sur lesquelles j’ai branché des radiateurs, est-ce que tu sais si avec le sensor et le capteur de température, on pourrait déclencher les prises et inversement ? Exemple, si il capte que la pièce est en dessous de 18° ça allume la prise, donc le radiateurs, et une fois les 20° ça stoppe la prise ! Le sensor deviendrait une sorte de thermostat intelligent 🙂
Merci d’avance !
Bonjour,
Merci de ces retours. Je ne connais pas en détails Osram Smart+ donc ma réponse va rester approximative. Il est je pense impossible de faire ce montage uniquement en comptant sur la compatibilité du produit avec hue. En effet, le thermomètre est une fonction caché du hue motion et donc inaccessible de manière « simple ». Cependant, en trouvant une plateforme qui est compatible avec Osram Smart+ et qui est capable de communiquer avec des API il est surement possible de bricoler quelque chose.
Côté communication avec des API, comme l’article le montre, Home assistant le gère très bien. Cependant concernant la prise connecté il faudrait tester ceci: https://home-assistant.io/components/light.osramlightify/. Ensuite il est possible de créer des scripts d’automation qui pourront convenir à votre cas d’utilisation.
A bientôt.
Bonne Journée.
Bonjour et merci pour cet article bien utile !
J’arrive bien à interroger les capteurs, par contre pour la création d’un nouveau capteur pour la présence, cela ne fonctionne pas chez moi (retour = body contains invalid json). J’ai revérifié moult fois ce que j’ai écris dans le json sans trouver d’erreur.
Bonjour,
Merci de vos retours 🙂 D’après l’erreur renvoyé par le client REST de Hue, c’est au niveau du body qu’il y a un souci. Pouvez-vous joindre les paramètre que vous avez saisis pour la requête qui pose problème? Sans ces éléments c’est compliqué de vous aider :s
Bonne journée.
Bonsoir, désolé je n’avais pas vu votre réponse. Et bien le body du json est celui-ci :
{
« name »: « sdb.presence »,
« type »: « CLIPGenericStatus »,
« modelid »: « PHA_STATE »,
« manufacturername »: « Philips »,
« swversion »: « 1.0 »,
« uniqueid: « sdb.presence »,
« recycle »: false
}
J’ai repris votre texte en changeant le name et uniqueid, je n’explique pas pourquoi il n’arrive pas à interpretter cela.
il s’agit d’une toute petite erreur de syntaxe je pense. Il semble que vous ayez oublier » après uniqueid.
Arf, dire que je l’ai relu et relu sans voir l’erreur, merci 😉
Il n’y a pas de quoi, j’ai mis un moment avant de le repérer aussi 😉 Pour éviter ce genre de problème vous pouvez utiliser un IDE tel que visual Studio code (la coloration syntaxique aide bien) ou des validateurs json tel que https://jsonlint.com
Hello, des la première étape je n’ai pas le même message que toi :'( j’ai celui ci
[
{
« error »: {
« type »: 6,
« address »: « /devidetype »,
« description »: « parameter, devidetype, not available »
}
}
]
Bonjour,
peux-tu m’indiquer exactement l’URL et le Body que tu as utilisé ?
Merci
Bonjour, merci pour cet article. Question de novice : Il est indiqué que pour ajouter la temperature des sensors, il faut rajouter des lignes dans un fichier de configuration de home assistant. Ou trouver ce fichier svp ?
Bonjour,
Concernant ce fichier et comment l’utiliser vous trouverez plein d’information dans cette article: https://devotics.fr/installez-home-assistant/ si vous êtes sous home-assistant et celui-ci pour hass.io https://devotics.fr/installer-configurer-utiliser-hass-io/
Bonne journée.
bonjour, est-il possible, juste avec google home et l’assitant virtuel de google de faire la même chose s’il vous plait (donc sans Home Assitant). je vous remercie pour votre retour
Bonjour, à ma connaissance ce n’est pas possible étant donné que c’est un détournement du fonctionnement normal du produit. Google assistant n’est pas très ouvert et ne permet pas des « bricolages » de ce genre.
Bonjour,
Merci pour ce beau tuto. Par contre depuis que IFTTT est devenu payant serait il possible de le mettre en place avec une autre application comme tasker par exemple ?
Merci
( J’espère ne pas avoir fait un double poste j’ai eu un soucis avec mon navigateur )
Bonjour,
En effet plus de IFTTT gratuit donc personnellement je n’utilise plus le service (de plus je préfère favoriser les service « cloudless »). J’ai donc choisi de me passer de service externe tel que telegram et j’utilise les notifications de l’application mobile Home assistant. Cela marche bien 🙂