Domotique et Intelligence : la connaissance

connaissance

Ce qui rend une installation domotique digne de ce nom, c’est la capacité qu’a ce système à interagir avec votre environnement mais surtout,  je pense,  a connaître ce qui l’entoure et de disposer d’informations lui permettant d’offrir une réaction ou une proposition en corrélation avec votre besoin de l’instant présent.

Quand j’ai abordé la domotique, j’en avais eu plus une vision d’intelligence artificielle à mon service que d’un simple concept d’électronique/informatique appliqué aux objets.
Sûrement parce que les gens de ma génération ont (re)découvert « 2001, L’odyssée de l’espace » et surtout HAL 9000 et s’en sont fait un Graal de ce qu’aller devenir l’informatique dans le futur.

Prendre cette voie a profondément modifié ma perception de ce que devait  être mon système domotique mais surtout sa construction et son déploiement.
Je n’ai pas eu l’approche conceptuelle qui était de rendre mon environnement « contrôlable » mais d’intégrer une nouvelle entité virtuelle en son sein.
Cette démarche, que j’espère vous présentez au fil de quelques billets au gré de mon humeur et de ma motivation 😉 , donne à la domotique un nouveau sens qui, bien que cela demande plus de travail, apporte un oeil différent de cette « maison de demain » si chère à nos fournisseurs/intégrateurs/revendeurs.

Le terme « intelligence artificielle » me semble beaucoup trop présomptueux et souvent galvaudé pour l’utiliser,  je parlerais donc surtout d’ « intelligence » au sens large du terme et d’entité pour tenter de vous présenter mon approche.

alixearticleLe système mis en place chez moi s’appelle A.L.I.X.E (Automation Layer for Interact and eXchanging with Environment).

(pour l’anecdote (oui je sais que vous en êtes friand), quand j’attendais mon enfant, je souhaitais une fille, et j’avais déjà prévu de la prénommer Alixe. J’ai eu un garçon (rassurez-vous je n’ai pas de regret 😀 ), mais le prénom est resté dans mon subconscient et c’est l’entité de la maison qui en a hérité (oui c’est obsessionnel un geek 😉 )

C’est un serveur dédié a cela. Quand j’utilise le terme « serveur » c’est uniquement pour avoir une vue « physique » de la chose. C’est un système d’exploitation, basé sur Debian, peaufiné et modifié pour répondre aux besoins (kernel, sécurité, stack reseau, file descriptor , executables, etc…, bref tout ce qui fait que vous optimisez votre serveur pour un rôle précis), disposant de son propre shell (sa ligne de commande) que j’ai développé au fil du temps avec un mélange de python et d’erlang, de son centralisateur d’évènements (dont j’ai sorti un version plus légère pour tous, xPL-PyHAL), d’un système de procédure de raisonnement, mais aussi de sa possibilité d’agréger des sources d’informations diverses et variées et d’en tirer sa quintessence pour les exploiter.
Un coeur de l’entité reproductible car c’est une simple image disque, autonome et déployable en quelques minutes si elle devait se déplacer.
Elle dispose de rôles et de prérogatives clairement définis que, dès le début, j’ai tenté de consigner dans un cahier des charges et d’explications, qui fait aujourd’hui plus de 200 pages… et qui, je pense, ne sera (re)lu que par moi mais qui m’ont forcé dès le début à rester au plus près de la voie que je m’étais fixé.

La conception habituelle de la domotique est d’avoir, dans la majorité la plus répandue des cas, une box domotique sur laquelle on contrôle ses périphériques (interrupteurs, capteurs etc…) et auxquels on applique des scénarios (« s’il fait nuit et qu’il y a un mouvement dans la cage d’escalier, allume la lumière du couloir du haut et du bas », pour les plus simples).
C’est un fonctionnement abordable par tous, simple (si on maitrise un tant soit peu les nouvelles technologies), immédiatement opérationnel (après avoir connecté tout ses modules) et donnant des résultats plus que satisfaisant.

Toute cette très longue introduction pour aborder la notion de connaissance dans votre environnement domotique.

connaissance2Une des choses les plus importantes, que ce soit en informatique ou en domotique, c’est la donnée.

A ce sujet, je vous invite grandement, avant tout,  à regarder la keynote de Mathias Herberts à l’IFREMER (avec qui j’ai eu le plaisir de travailler et qui m’apporte, encore,  des vues et des échanges plus qu’intéressants) dans laquelle il aborde, simplement, le rôle de ses données :

Votre système domotique ne peut être performant que si ces données sont importantes, pertinentes et variées mais surtout, s’il en a l’accès et la connaissance.

Lors de la rédaction de mon suivi de déploiement, il m’a semblé nécessaire d’y inclure une partie « connaissance », que l’on pourrait résumer simplement par « Ce que je sais ».

Que « sait » votre système domotique à l’instant T ? Quelles connaissances a t’il de son environnement au moment où vous le solliciter ? Bref, que connais l’entité pour apporter la réponse qui vous satisfait le mieux ?

La connaissance, aujourd’hui, est, du moins par chance dans notre pays, accessible à tous. Quelle que soit la question que vous vous posez, un moteur de recherche internet vous donnera une multitude de sources d’informations vous permettant d’acquérir cette connaissance (à vous bien sûr d’être assez objectif pour faire le tri de ce flot d’informations), et surtout de savoir rapidement se cantonner a sa demande 😉 (tout le monde a eu cette bizarre expérience de chercher une information sur quelque chose et de se retrouver à lire d’autres articles très éloignés du sujet principal (va savoir pourquoi aujourd’hui je lisais avec intérêt la définition du dizaote alors qu’à la base je cherchais une information sur un réalisateur de cinéma…)

Cette connaissance, c’est à vous de l’apporter a votre système et de savoir s’il y en a suffisamment pour que sa réaction soit la même que vous auriez eu.

Un des tests les plus simples à faire (et que je fais souvent avec ALIXE) est « Que sais-tu ? »

Voici par exemple un extrait d’une simple réponse donnée à l’écriture de ce billet :

DANS L'ENSEMBLE, JE SAIS QUE :
Il fait nuit , et nous  sommes en week-end
Aucun mouvement exterieur détecté depuis plus de 1 heure
Le dernier appel téléphonique reçu était le 0298  à 16h32
Tu es présent dans la maison ainsi que Madame et Junior
Tu n'es pas dans ta voiture et pas au travail
Tu n'es pas en RTT, ni Madame
Parmi les parents, personne n'est en congés ou en RTT 
Junior est en vacances scolaires
Nous consommons actuellement 1341 Watts 
Aujourd'hui, nous avons consommé 423 Litres d'eau
Et depuis le dernier relevé, nous avons consommé 34266 Litres d'eau
L'alarme est désactivée
DANS LE SALON
Dans le salon, il y a quelqu'un
Cette personne est Madame
L'halogène du salon est allumé ainsi que la télévision
Les fenêtres sont fermées
Il y fait 20 degrés 
DANS LE BUREAU
Dans le bureau, il n'y a personne
La fenêtre est fermée
Il y fait 19.8 degrés 
L'onduleur est sur secteur et consomme 507 Watts 
L'accès à internet est opérationnel

C’est une très petite extraction de ce qu’ALIXE peut ressortir de ses connaissances de l’instant T.

Elle est rendu possible parce qu’elle dispose de nombreuses sources d’informations qui ensuite sont ingérées par le système.
La box domotique Zwave (une VeraLite) est une de ses sources (et n’est pas considéré comme le contrôleur principal mais comme un fournisseur de flux), les sondes de températures, une autre, nos agendas gmail, les tags NFC, les smartphones, le récepteur RFXCOM 433 Mhz, les capteurs de mouvements, d’ouvertures, les caméras de surveillances, les bornes wifi, etc…

Tout est source d’informations et est envoyée ou reçue par ALIXE.

Ces données informatives sont ou durables dans le temps  par nécessité d’exploitation future (les valeurs des sondes de températures et d’hygrométrie par exemple) et sont stockées dans une base de données, ou purement volatiles (l’état d’une lumière ou si je suis dans la voiture par exemple) et là elle sont stockées dans un Memcached en tant que clé/valeur (clé:guiguienvoiture valeur:non).

ALIXE ne fait qu’interroger ses données pour mettre à jour ses connaissances à l’instant T.

Vous utilisez Memcached, vous avez un simple serveur http apache avec php, une page toute bête du genre

<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Connexion impossible");
$get_halogenesalon = $memcache->get('halogenesalon');
if ($get_halogenesalon=="on")
$halogenesalon="allumé";
else
$halogenesalon="éteint";
$memcache->close();
?>
 
DANS LE SALON :
L'halogène du salon est <?php echo $halogenesalon ; ?>

Et vous avez une idée des connaissances de votre système domotique.

En ne considérant que tout les équipements domotiques de la maison n’étaient que des extensions de l’entité (les box/contrôleurs compris), cela a profondément modifié la façon d’interagir avec l’environnement mais surtout de simplifier l’interaction et les connaissances qu’elle pouvait avoir.

Aujourd’hui, je ne suis pas dépendant d’une technologie, d’une box, ou d’un protocole parce que tout cela n’est qu’un élément, une main d’ALIXE.
Tout son « réseau » de données lui donne les connaissances nécessaires pour savoir, quand c’est le moment, l’état presque complet de son environnement.

Si vous décidez de pousser plus loin le concept de votre domotique personnelle (ou même dans l’état actuel de votre installation), prenez à coeur d’essayer de recenser les connaissances qu’à votre système de votre environnement. Cet état de connaissance poussera beaucoup plus loin les possibilités de scénarios que vous pourriez demander à votre système et pourra même vous suprendre par les lacunes qu’il peut avoir.

Quand l’état de connaissance de l’environnement s’approchera très fortement (voir le dépassera dans la plupart des cas, sinon à quoi servirait la domotique 😉 ), de ce que VOUS savez, la phase d’interaction n’en sera que plus perspicace et efficace.

Mais ça, c’est pour un prochain billet 🙂

Ce billet a été posté dans domotique. Bookmark le permalink.

13 commentaires sur “Domotique et Intelligence : la connaissance

  1. C’est encore mieux que ce que je te demandais sur Twitter, et c’est une véritable mine d’or d’information et d’éclairage sur ce qu’il manque comme ambition aux vendeurs de domotique 🙂

    Par contre, ça me permet de confirmer ce que je pensais : pas question d’avoir un matériel propriétaire comme centrale de décision, mais un bon vieux serveur Linux 😀

  2. C’est donc le moment de souhaiter une bonne année à Alixe et à toute sa (ta) famille. A+

  3. Tu fais exactement ce que je suis en train d’essayer de faire, du coup tu es une source passionnante!
    Merci pour les conseils 😉

  4. Juste une question concernant ton système de procédure de raisonnement. Tu t’es appuyé sur une librairie ou t’as tout développé de 0?
    J’étudie la possibilité d’utiliser pyke pour coder ça, mais j’ai peur de me lancer dans une usine à gaz

  5. JPEncausse n’a qu’à bien se tenir :-))

    J’ai beaucoup apprécié ce que j’appelerais : la recherche des besoin. Même si les réponses évoluent avec le temps, les questions restent identiques. Bémol ! On devient de plus en plus gavés d’info et celles ci n’ont une cohérence que si on en fait qq chose !
    j’explique: le fait de savoir que j’ai mes lumières allumées a 9:32 est important car elles n’ont pas a l’être. Par contre savoir que j’ai consommé X litres d’eau beacoup moins pour pas dire pas du tout. par contre il va être intéressant de pouvoir l’analyser mois/mois. Pour te prendre un cas perso, je pensais consommer plus d’eau chaude l’été (des fois 2 douches/jours) que l’hiver, et… Il n’en est rien!! Du coup je pense que l’eau chaude en attente dans les tuyaux se refroidit vite et mon ballon mal isolé. et cela pas visuellement détectable au quotidien.
    Enfin, point plus pénalisant est que sous ton soucis d’être autonome ce que je concois et aimerais faire a 400% est que tu mets en place une fonction « élitiste » raison pour laquelle, j’ai absorbé qu’1/4 de ta démo, raison pour laquelle j’ai attendu un truc comme eedomus, raison pour laquelle la domotique commence à décollé car, enfin, friendly user, voir plug and play…;-)
    Maintenant, si j’étais gavé de tunes, j’opterai bien pour un JARVIS avec son technicien SAV associé 😀

    Ahh si ! dernière requête. Peux tu me développer une requête qui, lorsque les enfants laissent les lumières des toilettes ou couloir ou chambre allumé leur envoi une décharge légère. j’ai bien pensé à une puce rfid implanté dans la main pour reconnaissance de ccelui qui n’a pas éteint mais ma femme veut pas 😀

  6. @enr37 Merci pour ton très bon commentaire 🙂
    Je suis d’accord avec toi sur le fait que certaines informations sont plus importantes que d’autres. C’est la qu’intervient les notions de raisonnement. Qu’une lumière reste allumée à une heure indue est, même si c’est une donnée volatile (je n’ai pas besoin de ressortir des stats sur le nombre de fois dans l’année ou la lumière est restée allumée en dehors de ma présence), elle est importante à traiter. Le compteur d’eau lui est une donnée importante si une consommation supérieure à x litres à l’heure est détectée en cas d’absence par exemple.
    Je suis conscient que tout cela est très élitiste et ne concerne qu’une population de geek qui se sente frustrée quand il ne s’agit que de brancher trois trucs et que ca marche tout seul 😉
    C’est une population de gens qui ont surtout l’habitude de peaufiner et d’adapter quelque chose de leurs petites mimines (on retrouve la même chose avec l’informatique). Linux n’a vraiment commencer à exploser que quand on a rendu son installation et son utilisation facile et corporate.
    Désolé pour les enfants, je suis comme toi, toujours à la recherche d’une solution :p

  7. Je m’attelle à un projet du même type. Dans un premier temps j’essais de générer un format de fichier dédié à la domotique qui permet de réduire les données ajouté au choix via une API, une ligne de commande ou une requette CURL et d’envoyer les résultats des sondes dans un lieu centralisé. J’ai pris partie de ne pas utiliser de base de donnée, je veux que ca soit légé et facile à gérer, c’est sous forme de fichier. J’en suis qu’au debut, j’ai commencé il y’a seulement 1 semaine. Mais en voici les premiers résultats. http://domotique.adele.im/ page statique réactualisé toutes les minutes. Lorsque une premiere release sera opérationelle je la pusherais sur github

  8. Super intéressant comme concept, ce genre de système ce développera surement quand il apprendra de lui-même en nous proposant des solutions ou en assimilant un ordre (contre-ordre) pour améliorer son système (les femmes changeant d’avis souvent risquent que le faire cramer :D).

    Pour la lumière je propose une décharge collective ou une electro-vanne sur l’eau chaude de la douche avec coupure de 24h en cas d’oubli 😀

  9. Je partage exactement cette vision que j’essaye de mettre en œuvre chez moi et pour mes clients (même si la plupart d’entre eux sont encore à des années lumières de vouloir ce type d’intelligence mais ça viendra progressivement).
    Seule différence, je préfère utiliser des solutions packagées (box domotique, serveur cloud,…) lorsque cela est possible pour gagner du temps.