Aller au contenu

Un assistant domotique intelligent JARVIS avec un Raspberry Pi !


Messages recommandés

Bonjour à tous,

Je travaille depuis pas mal de temps sur la création d'un assistant domotique type "JARVIS" dans iron man, avec un Raspberry Pi.

Mais, contrairement à beaucoup de projets, j'ai pris le problème à l'envers ! En effet, en général quand on pense à un Jarvis on pense souvent à la reconnaissance vocale :

C'est à dire que l'utilisateur pose une question "Dois je prendre un parapluie ?" => Et l'assistant répond !

Mais le problème, c'est que la reconnaissance vocale en 2014 n'est pas encore au point, et encore moins sous linux...

Alors j'ai pris le problème dans l'autre sens: et si au lieu que ça soit l'utilisateur qui sollicite l'assistant, ça soit l'assistant qui sollicite l'utilisateur au bon moment pour l'aider ? C'est à dire que ce n'est plus l'utilisateur qui pose des questions, c'est l'assistant qui en permanence analyse l'environnements de l'utilisateur, et lui fournit des remarques, rappels, pour l'aider !

Mais prenons un exemple !

- Il est 8H, Jarvis me réveil car il sait qu'à 9H je dois aller travailler, et que je mets, selon mes préférences, 1 heure pour me préparer et aller au boulot. Il a vu grâce à une API de météo qu'il pleut dehors, il en profite pour me le signaler au réveil. Dès que je sors de mon lit, il détecte un mouvement dans la pièce et coupe le réveil, allume la lumière, et lance une playlist/la radio.
- Il est 8H45, je sors de chez moi pour aller travailler, jarvis détecte que je ne suis plus là, il coupe lumière, musique, etc...
- Cependant, après le boulot, je sors chez des amis, et reste dormir chez eux. Jarvis sait que je ne suis pas rentré (pas de mouvement), et désactive donc le réveil du lendemain, car pas besoin de sonner si je ne dors pas chez moi, et que mon appartement est vide !
- Le lendemain, 8H, Jarvis m'envoie une notification sur mon portable pour me rappeler qu'a 9H je dois être au bureau.
- 19H, je rentres du bureau, Jarvis allume la lumière, me souhaite la bienvenue, et me notifie les messages que j'ai reçu en mon absence.

Ce scénario est réaliste, car toutes les technos utilisées ci-dessus existent : il suffit juste de les inter-connecter. Et pour l'instant, une grande partie du scénario ci-dessus est fonctionnel chez moi !

J'ai regroupé tout l'avancement de mon projet sur mon blog : http://intelligenceonline.synergize.co/

Merci à tous ceux qui me suivent, ou vont me suivre ;)

Bonne journée,

Lien vers le commentaire
Partager sur d’autres sites

En plein projet domotique de mon coté aussi, je vais suivre tout ça de prés.

Une question: tu comptes multiplier les RPI pour faire remonter toutes les infos ?

Perso, mon moteur domotique tourne sur un RPI avec le moteur domoticz et un RFXtrx433. La solution la plus simple et le plus versatile que j'ai trouvé sera de mettre des émetteurs et/ou des récepteurs RF433 sur des arduino mini pro pour en faire ce que je souhaite. On peux facilement en faire un capteur de température, de présence ou de luminosité par exemple. Ou lui adjoindre une petite carte relais pour commander un appareil. L'encombrement étant très réduit en plus.

Ca reste très économique comme solution si on se fournit en Chine.

Lien vers le commentaire
Partager sur d’autres sites

@Arcy Oui ! HAL c'est l'assistant intelligent dans l'Odyssée de l'espace ;)

@Tom23 Pour l'instant je n'ai qu'un Raspberry connecté, mais c'est envisagé d'avoir plusieurs RPIs : Un RPI "maître" avec JARVIS qui tourne dessus, et des RPIs "esclaves", qui ne font qu’exécuter les ordres du maître, et lui faire remonter les informations !

Effectivement vu le prix des composants lorsqu'on les achète en chine, et le prix d'un RPI, c'est très économique comparé à des boxs domotique, et beaucoup plus performant.

Lien vers le commentaire
Partager sur d’autres sites

C'est relativement encombrant un RPI dans le cas de la domotique non ?

Et ça porte un paquet de composants inutiles comme les ports audio/vidéo dans le cas présent. Un arduino pro mini est bien plus simple à cacher derrière une prise de courant ou un interrupteur...

Lien vers le commentaire
Partager sur d’autres sites

Si c'est juste pour gérer un seul capteur, oui ! C'est un peu utiliser un char pour écraser une mouche...

Mais pour moi c'est un véritable ordinateur que je recherche, connecté en wifi à internet, avec toute la partie intelligence, stockage dans une base de donnée, etc...

Mais si c'est juste pour placer un bête capteur je suis entièrement d'accord, un arduino suffit amplement ;)

En fait pour compléter mon commentaire précédent, on peut voir l'architecture de cette manière :

  1. Un Raspberry Pi "Maitre" qui gère tout, mais de très haut niveau ( il réfléchit juste aux actions, sans penser à comment les réaliser, c'est à dire qu'il se dit dans sa 'tête' => réveiller Marie ,car il est 8H, qui est en train de dormir dans la chambre n°3, et il envoie au RPI esclave qui se trouve dans la pièce, et qui est connecté à la chaîne Hifi (voir la télé), l'ordre de réveiller Marie )
  2. Des Raspberry Pi "Esclave" qui collectent les données des capteurs, et exécutent les ordres du maître.
  3. Des arduino pour tout ce qui est de bas niveau, sans aucunes intelligence, et qui communiquent avec les RPIs esclaves en 433Mhz
Lien vers le commentaire
Partager sur d’autres sites

C'est relativement encombrant un RPI dans le cas de la domotique non ?

Et ça porte un paquet de composants inutiles comme les ports audio/vidéo dans le cas présent. Un arduino pro mini est bien plus simple à cacher derrière une prise de courant ou un interrupteur...

Une petite avancée du raspberry Pi qui va justement améliorer ce point en le rendant moins encombrant :

http://www.raspberrypi.org/raspberry-pi-compute-module-new-product/

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Même si le projet est sympa sur le papier, je suis surpris du contre pieds.

Ex: à mon levé l'assistant allume ma playlist en cours, mais voilà hier soir c'était un peu arrosé et je ne veux pas de musique ce matin ! Je sors de chez moi je sais qu'il pleut (ben oui j'ai des fenêtres) ce qui m'intéresse c'est éventuellement s'il ne pleut pas et que la météo en prévoit pour la journée. De plus si j'ai vu la météo la veille au soir, je n'ai pas envie que l'on me la redonne le matin. Et inversement je veux bien qu'on me la donne si je ne l'ai pas vue la veille.

Bref mes journées ne ressemblent pas à des automatismes (même s'il y en a j'en convient). Et je ne supporterais pas de me voir imposer telles choses, parce qu'à un moment donné il a bien fallut que je valide des actions types. Alors même si je le répète ton projet est plus que sympa, pour moi c'est à l'utilisateur d'initier la demande et pas l'inverse. Mais ça reste purement personnel, et félicitations pour le boulot ;)

Lien vers le commentaire
Partager sur d’autres sites

Le programme que je propose reste un programme type ! A chacun d'imaginer ce qu'il veut ;)

Ce que j'entend par "c'est l'assistant qui va vers l'utilisateur", c'est que l'assistant n'attend pas une commande pour agir (vocale, commande clavier) : il agit!

Si tu ne veux pas de musique certains matins, tu peux configurer Gladys pour que si tu rentres après un certain horaire, elle en déduise que tu ne veux pas de musique le lendemain par exemple ! C'est entièrement au souhait de l'utilisateur :) Je comprends que tu puisse ne pas te reconnaître dans ce programme, c'est un peu un programme modèle d'une journée "basique", mais pour les situations plus personnel il est tout à fait possible de configurer Gladys.

Pour la météo le matin pareil, à toi de régler quelles prévisions tu veux !

Merci pour tes critiques, de toute façons il en faut bien pour que le projet progresse :)

Lien vers le commentaire
Partager sur d’autres sites

Le jour ou un ordinateur se permettra de faire un jugement (typiquement ne pas faire sonner le reveil parce que tu t'es murge la veille) par lui-même (et non base sur des statistiques ou des règles), je pense qu'on aura des problèmes et un prix Nobel.

En attendant pour que cela fonctionne correctement il faut donner a l'IA un maximum d'information pour qu'il puisse réagir correctement : le calendrier lui dit que demain c'est samedi et que t'a rien de prévu donc grasse mat + respect d'un set de règles "grasse mat" qui implique pas de réveil, pas de musique, notification en silencieux (sauf important).

Si tu as vu la meteo la veille, comment l'IA peut le savoir ? et comment il peut determiner que ce n'es pas la peine de te le rappeller le matin ? Donc soit il doit surveiller ton activite, soit tu lui dit, ensuite le matin si tu le coupe au moment ou il te l'annonce il peut noter que tu as coupe prematurement et faire le recoupement avec l'activite de la veille pour ne plus te le proposer le matin. (machine learning + statistiques).

Je n'ai pas encore inspecte le projet mais de ce que j'ai compris Gladys n'est pas ça, mais simplement un framework de service a activer.

Lien vers le commentaire
Partager sur d’autres sites

En fait Gladys est composé de 2 parties : une partie "framework de service" comme tu dis! (réalisé en PHP) , et une partie "cerveau" de Gladys, en JavaScript avec NodeJS, qui tourne en permanence et réalise des actions.

L'IA a le maximum d'infos à son service : emploi du temps de l'utilisateur, mail de l'utilisateur, position de l'utilisateur. Et couplé à ça et à des paramètres prédifinis, elle peut en déduire plein de choses. Après ça reste des règles, il est clair que ça n'est jamais une vraie âme pensante ^^

Quand je disais "Pour la météo le matin pareil, à toi de régler quelles prévisions tu veux ", c'était pour rebondir sur le post de Kori qui disait qu'il préfère avoir les prévisions de la journée plutôt que le temps qu'il fait dehors !

Lien vers le commentaire
Partager sur d’autres sites

Venant de réinstaller ma Ubuntu je pense me laisser tenter par ce projet qui semble avoir une vision de l'assistant personnel assez pertinente et bien construite. Il y a cependant quelques points qui me chiffonnent : 1) Ton projet ne devrait jamais avoir besoin de tourner en root (d'autant plus que sur ma Buntu je vais faire tourner plusieurs sites sur l'Apache et qu'il ne faut pas qu'Apache tourne en root !), ensuite tu te bases sur des technos Web, c'est très bien, mais tu devrais utiliser les fonctions GET et POST pour les automations avec le serveur et ainsi pouvoir déporter tes capteurs de manière plus simple encore (La technologie iBeacon par exemple avec du BT 4 peut servir pour localiser l'utilisateur et nombre d'apps sur iOS et Android savent utiliser ceci pour faire une requête http vers un serveur automatiquement), de même il pourrait être intéressant de se tourner vers des standards (bon là du coup iBeacon est pas vraiment standard…) type Zigbee etc pour tes capteurs, voir même avec GET et POST t'interfacer avec les ampoules Philips HUE et même pousser le vice à jouer avec des Arduino etc.

Je vais également regarder du coté de Deezer pour la musique, ils ont une API en JavaScript et il existe des applications en NodeJS pour y accéder, à voir si elles font la lecture aussi.

Déjà je dois remonter tous mes services avant de m'attaquer à Gladys :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...