Dec.16

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” !

Microsoft TechDays 2014

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 Sourire

Delà est né le projet “The Mirror” (… parce que “ça claque bien en anglais” dixit Mr Catuhe):

Logo The Mirror

“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

Le laptop d'origineLe laptop démonté

La carte mère et son écran 15 poucesLa carte mère et l'écran

Ensuite, nous fabriquerons un miroir grâce à du film miroir sans tain :

Le cadre d'origineLe marouflage du film miroir sans tain

Création du miroirInstallation du papier canson noir

Miroir simple

Nous pouvons ensuite fixer l’écran et la carte mère en ajoutant un bouton poussoir pour gérer l’allumage

Ouverture pour l'écranInstallation d'un bouton poussoir

Soudage du bouton poussoir sur la carte mère

Installation d'un bouton poussoirInstallation de l'alimentation

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.

Installation de la KinectVue arrière

The Mirror V2 (à gauche) et The Mirror V1 (à droite)

Pour résumer :

Into the Mirror

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 :

Installation du miroir The Mirror dans l'entrée

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.

Schéma simplifiée de la Constellation

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 !

Gestion du Wake On Lan

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 :

[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 :

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 :

Gestion de la sonnette

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 !

S-Car, connecteur OBD pour la Constellation

Itinéraire routier, trafic et essence

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 !

HighTech,Domotique,TechDays 2014,Constellation
Share this Story:
  • facebook
  • twitter
  • gplus

Comments(13)

  1. Simplearetenir
    588 days ago

    Excellent mise en bouche, j’ai hâte de découvrir la suite…

  2. Jérôme Fafchamps
    583 days ago

    La partie Software sera t-elle redistribuée?

  3. Sebastien
    583 days ago

    Bonjour,
    Oui, je communiquerai sur la plateforme COnstellation et l’ouvrirai prochainement 😉
    Bien à vous,

  4. Vincent
    578 days ago

    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

  5. Sebastien
    574 days ago

    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 🙂

  6. david
    572 days ago

    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.

  7. Steve
    540 days ago

    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.

  8. Trackback: The Mirror V3, le miroir re-boosté | Sebastien.warin.fr

  9. Niacbuster
    478 days ago

    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 !

  10. Trackback: S-Sound : la solution audio multi-room connectée dans la Constellation - Sebastien.warin.fr

  11. Sebastien
    415 days ago

    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,

  12. 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

  13. 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

Leave a comment

Comment