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.
Le 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.
Une 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 🙂