• Share on Google+

Depuis quelques temps, je m’intéresse beaucoup à la domotique. J’ai donc acheté une Raspberry, persuadé que j’allais en faire tout un tas de trucs. Le souci avec ce genre de machine, c’est qu’on désire vraiment en avoir une vu les possibilités qu’elles offrent, mais on ne sait pas exactement quelle utilisation on va en faire. Donc, après être passé par le media-center, la station de jeux rétro, le serveur web, l’avertisseur de mail … J’ai décidé d’en faire un assistant domotique !

Sommaire

  • 1 – Introduction, pourquoi, comment ?
  • 2 – Le front, reconnaissance et synthèse vocale coming soon !
  • 3 – Le back, socket.io, appels d’API et reconnaissance du langague coming soon !
  • 4 – Installation sur la Raspberry coming soon !
  • 5 – Fonctions domotique coming soon !

JARVIS, fais-moi un café !

J’ai donc décidé de me lancer dans un petit projet sympa : construire un assistant domotique qui puisse m’aider à faire des tâches simples. Avec beaucoup d’originalité, j’ai décidé de l’appeler JARVIS (pour ceux qui ne connaissent pas, JARVIS est l’assistant virtuel de Tony Stark dans Iron Man > https://www.youtube.com/watch?v=ZwOxM0-byvc). Bon, comme on ne s’appelle pas Tony Stark, on va faire faire des tâches très simples à notre robot, comme :

  • Répondre quand on l’appelle par son prénom, puis commencer à écouter
  • Lui demander la météo, sur la semaine, dans une heure, demain …
  • Lui demander les actualités sur tel ou tel site
  • Nous avertir quand on reçoit un nouveau mail, avec des infos complémentaires (s’il s’agit d’un mail de boulot, un mail personnel …)
  • Nous rappeler nos rendez-vous
  • Lui demander un itinéraire en métro ou combien de temps pour aller à tel endroit

Pour ce qui est de la domotique, on peut imaginer :

  • Lui demander de mettre de la musique
  • Allumer / éteindre des appareils dans l’appart (télé, lumière …)
  • Détecter notre présence avec des capteurs de mouvement
  • Pourquoi pas nous réveiller le matin avec de la musique ou la radio
  • Déclencher des évenements à partir de tags NFC

Pourquoi ré-inventer la roue ?

Bref, on peut imaginer beaucoup beaucoup de choses ! À ce stade, vous vous dites surement que beaucoup de projets de ce type existent, et que c’est un peu idiot de ré-inventer la roue alors que d’autres l’ont déjà fait avant. Dans une certaine mesure, c’est vrai ! On peut citer, par exemple, l’excellement Gladys > http://gladysproject.com/, que je vous encourage à suivre. Cependant, comment souvent, l’intérêt d’un projet comme celui-ci n’est pas nécessairement dans le résultat final mais dans le chemin qu’on fait pour y arriver.

Il est fort problable qu’une fois votre JARVIS terminé, vous ne l’utilisiez qu’occasionnellement pour vous la pêter au près de vos potes. Mais au moins, vous aurez appris tout un tas de choses sur tout un tas de technos. Ré-inventer la roue, parfois (et même souvent), c’est idiot, mais dans certains cas, c’est fun et ça permet de progresser !

Comment ça va se passer ?

Voila donc la façon dont ce tuto va se dérouler :

Dans cet article, on ne va rien développer (oooh …). Nous allons juste voir quelles technos utiliser et commencer à réfléchir à tout ça. Dans le prochain article, on verra comment mettre en place la reconnaissance et la synthèse vocale. Puis, on mettra en place la partie serveur, qui fera office de « cerveau », avec laquelle ce qu’on peut appeler le « visage » communiquera en real-time. Pour finir, on migrera tout ça sur une Raspberry Pi, et on s’occupera de la partie purement domotique.

C’est parti ! Tout d’abord, le stack technique

Pour ce qui est du stack, on se basera là-dessus :

  • Une interface « front », qui s’occupera de la synthèse et de la reconnaissance vocale. On utilisera donc la WebSpeech API pour la reconnaissance vocale, et la SpeechSynthesis API pour la synthèse vocale. Ce sont 2 technos Google présentes dans Chrome, mais aussi dans Chromium (très important quand on va décider de passer tout ça sur Raspberry !). Cette interface front peut être vulgarisée comme le « visage » de notre JARVIS. Il ne réflechit pas, il ne fait que transmettre les infos au serveur.

  • Une partie « serveur », qui se chargera d’interpêter ce que le front lui enverra. Cette partie serveur sera codée en NodeJS, et communiquera avec le front grâce à socket.io. Inutile de vous dire pourquoi j’ai choisi Node : facile à exporter sur raspberry, très rapide, plein de packages NPM pour nous simplifier la vie (et éviter de ré-inventer la roue sur des sujets qui n’en ont pas besoin !). On utilisera aussi une base de données, sûrement du SQLite pour sa facilité d’utilisation.

Et la domotique alors ?

Pour ce qui est de la domotique, voici quelques pistes :

  • Une Raspberry Pi, qui servira à faire tourner JARVIS
  • Un petit écran (type écran de caméra de recul pour voiture, c’est pas cher !) pour afficher l’interface JARVIS
  • Des tags NFC, pour déclencher des actions quand on déposera notre téléphone à tel ou tel endroit
  • Des détecteurs de mouvements et les récépteurs 433Mhz qui vont avec
  • Une arduino pour soulager un peu la Raspberry et ses ports GPIO pour ce qui est de la domotique
  • Pourquoi pas des ampoules connectées (il y en a des beaucoup moins chères que les Phillips Hue), des prises connectées type Wemo, des capteurs de températures et d’humidité … Sky is the limit !

En gros, le coût de votre installation domotique peut aller de 50€ à 200€ en fonction de tout ce que vous compter intégrer dessus (c’est vraiment pas cher par rapport aux prix des installation officielles !).

Inutile de faire chauffer la CB dès maintenant, on va tout d’abord développer la base de JARVIS, s’assurer que tout est bien fonctionnel directement sur desktop, puis déployer tout ça sur une Raspberry. Je n’ai moi même pas encore acheté une bonne partie de ces éléments, je ferai le crash-test pour vous avant, et on verra si ça en vaut vraiment la peine !

Et maintenant ?

Et maintenant, on va pouvoir commencer à coder. Mais ça sera dans un prochain article ! N’hésitez pas à me dire sur twitter si le sujet vous intéresse, ça sera plus motivant pour faire les prochains articles !

EDIT : Depuis la rédaction de cet article, de nombreux projets similaires ont vu le jour, souvent beaucoup plus avancés. Je mets donc cette série d’articles en standby, et vous invite à consulter ce repo : https://github.com/alexylem/jarvis