The Mirror – Votre miroir domotique connecté – Geek is in da House 2014
Près d’un an après la session Geek is in da House des Microsoft Techdays 2014 que j’ai pu animer en Février dernier aux côtés de David Catuhe, Stanislas Quastana et Laurent Ellerbach , retour en détail sur mon projet “The Mirror” !
Si vous n’avez pas pu entrer dans la salle complètement pleine ou suivre le live sur internet, vous trouverez la rediffusion complète de la session ci-dessous :
The Mirror
L’idée du projet “The Mirror” est d’avoir une interface de centralisation de mes différents équipements connectés de la maison :
- La “domotique” au sens large : contrôle des volets, luminaires, prises, etc… Le tout sur un réseau basé sur la technologie ZWave que j’ai pu présenter dans mon article “Piloter sa maison, c’est facile” à l’été 2012
- L’alarme et DVR : détecteurs de présence, d’ouverture, de fumée, de gaz, caméra de surveillance, etc…
- La météo : capteurs de température, d’humidité, de vent, d’hydrométrie, etc.. (NetAtmo, Z-WAve, custom basé sur Arduino ou RPi)
- Le multimédia : home-center XBMC, TV & ampli connecté, mon système audio multi-room maison “S-Sound” que je présenterai prochainement
- Mes serveurs (VM ou physiques), ordinateurs et onduleurs
- Divers objets connectés : balance connectée Fitbit, thermostat Nest, Raspberry et autre Arduino, etc..
- La voiture : box Gadgeteer équipée d’un GPS, d’un module GPRS et Bluetooth connecté au port OBD pour la remonté des infos techniques de la voiture sur mon serveur
- etc..
Pour unifier cela, j’ai développé une plateforme logicielle de fédération des données, nommée “Constellation” que je présenterai prochainement.
Elle me permet également d’agréger de la données produite à l’extérieure comme :
- Les prévisions météo (dois-je prendre mon parapluie aujourd’hui ?)
- L’état du trafic routier (quand partir de chez moi pour à être à l’heure à mon RDV)
- Le programme TV (y a t il quelque chose susceptible de m’intéresser ?)
- Mon agenda (connecté à l’Exchange)
- Les services de bus/métro et vélo (Vlille)
- etc…
Pour retrouver l’essentiel de ces informations sur une seule et même interface, je voulais un dispositif accessible 24h/24 au même endroit et utilisable pour tous ! C’est là qu’est née l’idée de faire une sorte de “Control panel” dans mon entrée car c’est le point de passage obligatoire lorsqu’on part ou rentre de la maison ! Bien sûr, dans l’idée d’avoir quelque chose de ”WAF Compliant”, le projet aurait pu être une simple tablette tactile accrochée au mur avec un support mural mais il fallait cacher la bête et avoir quelque chose de plus sexy
Delà est né le projet “The Mirror” (… parce que “ça claque bien en anglais” dixit Mr Catuhe):
“The Mirror” c’est l’idée d’un miroir connecté à l’ensemble des services de la maison et à disposition de l’ensemble de la famille. Un majordome disponible 24h sur 24h !
Démo en vidéo
Le hardware
Matériellement, “The Mirror” n’est un ordinateur caché dans un miroir !
La première étape consiste donc à désosser un ordinateur portable pour récupérer l’écran et la carte mère
Ensuite, nous fabriquerons un miroir grâce à du film miroir sans tain :
Nous pouvons ensuite fixer l’écran et la carte mère en ajoutant un bouton poussoir pour gérer l’allumage
Pour finir, j’ai ajouté une Kinect pour donner des yeux et des oreilles au miroir ainsi qu’une Slightbox V2 pour pouvoir créer des halos de lumière derrière le miroir en fonction de certaine notification.
Pour résumer :
Ayant la chance d’avoir un garage derrière mon entrée, j’ai pu percer le mur de l’entrée pour envoyer le câble réseau et d’alimentation dans le garage pour une intégration discrète et parfaite :
Le software
C’est là que ça devient intéressant ! La plateforme Constellation (qui fera prochainement l’objet d’un article) me permet d’unifier l’ensemble des objets connectés, physiques ou virtuels… Chaque entité peut produire de la donnée (des “StateObjects” dans la terminologie Constellation) et la mettre à disposition de tous et exposer des méthodes. Par exemple, l’objet “Alarme” de la Constellation produit à la fois des “StateObjects” (statuts de l’alarme, état des zones, etc.) et expose des méthodes comme la possibilité d’armer ou désarmer le système.
De ce fait tout est interconnecté dans la Constellation : camera, alarme, voiture, calendrier, thermostat, lumières, volets, amplis, TV, XBMC, etc… Et même le miroir ! En effet, il est lui-même un objet de la Constellation lui permettant d’interagir avec les autres objets.
Par exemple, prenons le cas de l’allumage ! Afin de permettre au miroir d’être toujours allumé lorsque l’utilisateur est présent dans l’entrée tout en économisant de l’énergie lorsqu’il ne l’est pas, c’est la Constellation qui va gérer son allumage !
La règle est simple : si une présence est détectée dans l’entrée alors on réveille le miroir ! Comme l’alarme est un objet de la Constellation de même que l’objet “WakeOnLan” en est un autre objet. On “bind” ces deux packages par le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [StateObjectLink("Paradox", "ZoneInfo12")] public StateObjectNotifier MouvementEntree { get; set; } public override void OnStart() { this.MouvementEntree.ValueChanged += (s, e) => { // Si le capteur de l'entrée est "ouvert" if ((bool)e.NewState.DynamicValue.IsOpen) { // Envoyer un ordre de Wake up this.SendMessage("WakeOnLan").WakeUp(new { Host = "pc-mirror.ajsinfo.loc", MacAddress = "44:8a:5b:a3:15:db" }); }; }; } |
J’ai très légèrement simplifié le code ci-dessus en ne prenant pas en compte l’état du miroir. En réalité, j’ai une variable qui est “bindée” sur l’état du Miroir dans la Constellation pour savoir si le miroir est connecté ou non. S’il l’est, on ne renvoie pas un WoL qui ne servait à rien !
Pour l’extinction, j’ai une “background task” qui tourne dans la Constellation (toutes les minutes par défaut), pour vérifier qu’il n’y ait plus d’activité de plus de deux minutes (variable de configuration) et que la porte d’entrée et le détecteur de mouvement sont bien fermés. Dans ce cas, un ordre est envoyé à la machine du miroir de se mettre en veille :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | this.AddBackgroundTask(() => { if (this.EclairageEntree.DynamicValue != null && this.PorteEntree.DynamicValue != null && this.MouvementEntree.DynamicValue != null) { // Si l'entrée bien fermée et que plus de mouvement depuis du timeout, on met en veille le miroir if (theMirrorState == true && (bool)this.MouvementEntree.DynamicValue.IsOpen == false && (bool)this.PorteEntree.DynamicValue.IsOpen == false && DateTime.Now.Subtract(lastAction).TotalSeconds >= PackageHost.GetSettingValue("TheMirror.Timeout")) { PackageHost.CreateScope(MessageScope.ScopeType.Machine, "PC-MIRROR_UI").Proxy.Sleep(); } } }); |
En quelques lignes de C#, grâce à la Constellation, mon miroir est toujours disponible !
Une fois le miroir démarré, vous avez accès à l’ensemble des fonctionnalités exposées par la Constellation. La vidéo de démonstration ci-dessus vous a présenté quelques un des usages les plus courants.
Avec le temps, nous utilisons ce miroir plutôt comme un “control panel” pour voir l’état des différents systèmes/objets de la maison en un coup d’œil : temps de trajets pour aller au travail, RDV de la journée, portes ou fenêtre laissées ouvertes, prévision météo, etc..
Le contrôle domotique n’a plus grand intérêt car il est directement géré par Constellation. Gestion du chauffage et éclairages en fonction de la présence (elle même déduite par l’alarme), etc.. Pas besoin de dire au miroir d’allumer le chauffage quand je rentre, il le sait déjà !
La liste des courses et les messages vidéo sont cependant très utiles pour en finir avec les post-it ! Autre fonctionnalité intéressante, l’affichage de la caméra extérieure quand une personne sonne :
La sonnette déclenche un module Fibaro qui est capté par la Vera Lite qui à son tour change l’état d’un objet dans la Constellation. De ce fait, un ordre de WoL par au miroir qui affichage le flux vidéo du DVR ! En arrivant dans l’entrée, je vois qui est à la porte !
Pour le fun, j’ai une mini-box dans ma voiture, à base de .NET Gadgeteer, qui communique en Bluetooth à un connecteur OBD branché sur la voiture pour récupérer les infos techniques. Ces données sont alors envoyées par le modem GPRS dans la Constellation. Cela me permet par exemple d’afficher la quantité d’essence disponible sur le miroir !
Pour finir, grâce à la Kinect, il y a une reconnaissance faciale de la personne en face du miroir. Cela me permet par exemple d’afficher les informations personnelles de l’utilisateur en question, comme la courbe de poids, masse graisseuse, etc. (via la balance Fitbit, elle-même connectée à la Constellation).
Conclusion
Loin d’être un gadget de Geek, le miroir est aujourd’hui installé dans notre entrée et nous rend service au quotidien. Toujours disponible et allumé quand nous sommes dans l’entrée, le miroir nous rapporte ce qu’on a besoin de savoir lorsque l’on part ! Est-ce que tout est bien fermé dans la maison? Quel est l’état du trafic ou de l’essence qu’il nous reste? Quel est mon agenda du jour et des taches à réaliser ? Les fêtes ou anniversaire du jours, la météo, etc.. etc.
Avec un peu de matériel dont un simple cadre, un vieux PC et quelques notions de bricolage, The Mirror sera le compagnon idéal pour votre maison connectée.
Enfin, depuis l’an dernier le miroir a bien grandi ! En effet, le simple “laptop” recyclé ne me suffisait plus… Dans un prochain article vous découvrirez “The Mirror V3”, le miroir de compétition… Stay tuned !
Simplearetenir
Excellent mise en bouche, j’ai hâte de découvrir la suite…
Jérôme Fafchamps
La partie Software sera t-elle redistribuée?
Sebastien
Bonjour,
Oui, je communiquerai sur la plateforme COnstellation et l’ouvrirai prochainement 😉
Bien à vous,
Vincent
Bonjour,
C’est du beau travail en effet, tu utilises S.A.R.A.H pour la reco vocale et gestuelle ? Je suis impatient de pourvoir lire ton article sur ton serveur Constellation et le tester aussi.
Bonnes fêtes à toutes et à tous
Sebastien
Bonjour Vincent,
Non ce n’est pas basé sur SARAH mais comme Sarah, j’utilise essentiellement le Microsoft Speech couplé à la Kinect pour la reconnaissance !
Bonnes fêtes également 🙂
david
Bonjour et meilleur voeux pour 2015.
Je me lance dans la domotique depuis peu et decouvre grace aux differents blog toutes les possibilitées offertes aujourd hui pour se creer un petit systeme sympa..
L une de mes premieres questions a été de savoir comment piloter tous les differents protocoles (zwave, objet connecté wifi bluetooh etc etc) dans une seule et unique interface.
felicitation pour ce projet. Je suis tout ca de tres pres.
Steve
Bonjour Sebastien,
Félicitation pour ta réalisation, c’est vraiment propre, un super projet.
Peux-tu me dire quel référence de film as-tu pris ? Je galère à en trouver qui est bien réfléchissant.
Merci d’avance.
Trackback: The Mirror V3, le miroir re-boosté | Sebastien.warin.fr
Niacbuster
Hello Sebastien,
Je fais un UP sur la question de Steve juste au dessus 🙂 je voudrais mettre cela dans une salle de bain, et je voudrais savoir si ton film est bien net quand tu es de prêt ?
L’idée est de se raser sans mal voir 🙂
Merci pour ta réponse !
Trackback: S-Sound : la solution audio multi-room connectée dans la Constellation - Sebastien.warin.fr
Sebastien
Hello,
J’utilise un film de la marque « reflectiv » acheté chez LRM. L’effet n’est pas aussi « prorpe » qu’un véritable miroir mais c’est satisfaisant pour une entrée (je ne le mettrais pas dans ma SdB). La grande difficulté est de bien maroufler le film pour éviter les bulle d’air ou autre poussière !
Pour un meilleur effet, il faut acheter un vrai miroir sans tain mais par contre çà explose le budget (env. 200€ pour un miroir de 50x50cm) et le poid (environ 4 kg le miroir).
Bien à vous,
Trackback: S-Panel : une interface domotique et IoT multi-plateforme avec Cordova, AngularJS et Constellation–ou comment créer son dashboard domotique mural - Sebastien.warin.fr
Trackback: S-Opener : connectez et sécurisez votre porte de garage avec la plateforme Constellation et un Raspberry Pi – La porte de garage intelligente ! - Sebastien.warin.fr