alexylem / jarvis

Jarvis.sh is a simple configurable multi-lang assistant.
http://openjarvis.com
MIT License
806 stars 197 forks source link

Plugin Jeedom pour Jarvis #209

Closed azertigrou closed 7 years ago

azertigrou commented 7 years ago

Bonjour,

Y a t'il une possibilité d'interfacer Jarvis et Jeedom? Quelqu'un a t'il déjà une expérience dans cette intégration?

dud29 commented 7 years ago

Bonjour, oui via l'utilisation de requêtes http. Dans le menu de Jarvis il faut aller dans Commands et créer la commande suivante : (*)== say "$(curl "http://ip_jeedom/core/api/jeeApi.php?apikey=your_api_key&type=interact" --data-urlencode "query=$order")" ça fonctionne bien chez moi, il me reste juste à peaufiner le réglage du micro et se sera presque parfait.

alexylem commented 7 years ago

Un volontaire pour créer un plugin Jeedom? Je n'ai pas Jeedom à la maison mais bcp de personnes posent la question. Si vous êtes intéressés je pourrai faire le plugin moi même mais il me faut quelques informations sur le protocole...

@dud29 un plugin dans lequel on configure une apikey et un ip_jeedom suffirait? Si oui je peux le faire assez rapidement et le publier sur le store...

dud29 commented 7 years ago

Bonjour, je ne maîtrise pas le fonctionnement des plugins pour en faire un, par contre je sais que l’équipe de Jeedom en a fait un, cependant il n'est pas encore au point. Quoi qu'il en soit il ne faut pas plus que la ligne de commande de mon précédent poste pour interagir avec Jeedom, donc oui un plugin ou l'on configure l'adresse IP de Jeedom et son apikey devrait suffire. Le reste se fait dans l'interface (partie interaction) de Jeedom. Jarvis s'occupe de la partie STT envoie l'ordre à Jeedom qui fait le reste. dud29. Edit: merci pour ton travail qui m'a permis de 'parler' à ma maison et qu'elle me réponde.

alexylem commented 7 years ago

Ok donc je vais proposer une premier version du plugin et libre aux Jeedom boys de l'améliorer. Par contre j'aurais surement besoin de ton aide pour m'aider à tester / documenter l'utilisation du plugin côté Jeedom, si tu es partant!

dud29 commented 7 years ago

Oui, je suis pas trop dispo en ce moment, mais je ferai de mon mieux. dud29

elem-bee commented 7 years ago

Si besoin, j'ai un jeedom up to date sur un RPI2, et un raspbian + jarvis sur un RPI3 avec micro usb (via webcam) et HP. Pour l'instant, j'ai eu le bonjour et le retour voix (plutôt correct), mais pas réussi a aller plus loin via jeedom. dispo pour tests si besoin.

alexylem commented 7 years ago

Merci @elem-bee je fais la première version et je vous la mets à dispo pour testing

alexylem commented 7 years ago

Jeedom Plugin on now available on the Store: image http://domotiquefacile.fr/jarvis/plugins/jeedom Please install, test it and let me know if it works!

elem-bee commented 7 years ago

Bonjour @alexylem, Installation du plugin Jeedom dans Jarvis avec les token bing/snowboy/jeedom ok Training reconnaissance magic word ok Pour la suite, pas ok

pi@raspberrypi:/opt/jarvis $ ./jarvis.sh ./jarvis.sh: ligne 416: stt_engines//main.sh: Aucun fichier ou dossier de ce type ./jarvis.sh: ligne 262: stt_engines//main.sh: Aucun fichier ou dossier de ce type ok herbert: Yo ! () ok herbert: Waiting to hear 'ok herbert' Monsieur: ok herbert

Avec trois bips graves, et on boucle là-dessus.

alexylem commented 7 years ago

stt_engines//main.sh On dirait qu'un de tes STT est mal défini. Tu peux vérifier dans Settings > Voice Reco ? Je te conseille de repasser le wizard pour être sûr que tout est bien installé: $> ./jarvis.sh -i

elem-bee commented 7 years ago

Merci, ça ne boucle plus, mais ça ne l'éclenche pas l'intéraction

pi@raspberrypi:/opt/jarvis $ ./jarvis.sh Ok Herbert: Yo ! () Ok Herbert: Waiting to hear 'Ok Herbert' Monsieur: Ok Herbert Ok Herbert: Oui Monsieur: active l'alarme Ok Herbert: Je ne comprends pas Monsieur: ??? Ok Herbert: Waiting to hear 'Ok Herbert' Monsieur:

Es ce que le plugin Jarvis de Jeedom doit toujours être présent dans Jeedom ? Je l'ai enlevé, mais d'un coup je suis moins sûr.

alexylem commented 7 years ago

Heu... oui j'ai entendu parler d'un plugin Jarvis de Jeedom mais je crois que ca n'a aucun rapport, surement un autre Jarvis... Oui désactive le, juste Jarvis + Plugin Jeedom et Jeedom ca doit le faire. Essaye de lancer en mode troubleshooting et colle moi le résultat pour que je vois ce que ca donne. Merci!

elem-bee commented 7 years ago

Le plugin de Jarvis dans Jeedom permet d'utiliser Jarvis pour notifier en TTS. Les logs sont partis par mail.

alexylem commented 7 years ago

Je crois que tu as une commande perso qui est restée dans commands et qui match tout (*)

$> say "$(/opt/jarvis/jeedom.sh \"${BASH_REMATCH[1]}\")"

Du coup je pense qu'elle "masque" le plugin dans le sens ou elle capte toutes les commandes avant qu'elles ne soit envoyées au plugin. Essaye de la virer puis retente 😉

dud29 commented 7 years ago

J'ai testé le plugin, il y a un petit bug dans le fichier config.sh la variable jv_pg_jd_apikey n'est pas bonne j'ai du la modifier dans le fichier initial elle est notée jv_pg_ig_apikey. Sinon une fois corrigé pas de soucis, ça fonctionne correctement. Après c'est un détail il n'y a plus de menu administration (c'est un petit engrenage et on a bien la clé api dans le sous menu Configuration) Vincent Edit le plugin JARVIS de l’équipe jeedom doit permettre d'installer et de paramêtrer JARVIS directement dans l'interface Jeedom, mais pour le moment il n'est pas encore tout à fait au point.

alexylem commented 7 years ago

Merci @dud29 c'est corrigé, mettez à jour.

dud29 commented 7 years ago

Pour moi c'est bon, il n'y a plus qu'a voir si ça fonctionne pour d'autres personnes.

alexylem commented 7 years ago

Si ca marche pour vous n'hésitez pas à laisser une bonne note sur le plugin: http://domotiquefacile.fr/jarvis/plugins/jeedom Merci 👍

controlom commented 7 years ago

Il y a bien un plugin dans Jeedom mais c'est juste Jarvis intégré directement dans leur solution donc c'est pas vraiment un plugin pour utiliser un remote Jarvis il me semble.

elem-bee commented 7 years ago

Tu as le choix. En mode déporté, il installe "ton" Jarvis sur un RPI avec un raspbian sans avoir besoin d'un jeedom en local. Mais pour l'instant, je n'ai pas réussi à le faire fonctionner.

alexylem commented 7 years ago

On a un problème. Un utilisateur a raisé ce problème: https://github.com/alexylem/jarvis-time/issues/2 C'est parce que le plugin Jeedom "capte" toutes les commandes (pattern: *) et il est passé en premier par rapport à son nom (Jeedom < Time). Une solution simple est de changer le pattern à (*JEEDOM*) mais il faudra dire: "Jeedom allume la lumière"... Et je suis un peu inquiet pour la reconnaissance par Bing du mot Jeedom...

alexylem commented 7 years ago

Sinon je peux m'arranger pour renommer le plugin afin qu'il passe en dernier (ou mettre en plus un système de poids)

dud29 commented 7 years ago

A mon avis changer le nom du plugin devrai suffire, dans le principe on envoie un ordre à Jeedom que si notre demande n'est pas prévu directement dans Jarvis, donc en dernier. Un système de poids serai super intéressant pour les autres plugins (si jamais on a des demandes qui peuvent être prises en compte de façon différente en fonction du plugin qui l'intercepte) , mais peut être plus compliqué à réaliser.

HoLengZai commented 7 years ago

j'ai du mal a comprendre l'utilite final du plugin sur Jarvis? Encore plugin sur Jeedom pour remote control de Jarvis ok...

Comme @dud29 disait, avec requette http avec l'api de jeedom, on peut le faire sans souci.

Apres effectivement, si dans les param de jarvis, on a un fichier de conf pour mettre la clé API de Jeedom... gain de temps et fichier de commande plus simple à lire...?

On peut m'eclairer sur ce post?

dud29 commented 7 years ago

Pour moi c'est exactement le principe de la fin de ton post, simplifier la manip pour un utilisateur qui comme moi ne maîtrise pas la programmation. Avec le plugin on met l'ip, la clé API et hop c'est bon. Pour info pour trouver la syntaxe exact (*)== say "$(curl "http://ip_jeedom/core/api/jeeApi.php?apikey=your_api_key&type=interact" --data-urlencode "query=$order")" ,et je ne suis pas sur que se soit la meilleur méthode pour faire le travaille (il y a d'autre personne qui utilise le wget...) il m'a fallut presque une journée de recherche dans divers forums, donc si on peut simplifier la vie des autres utilisateurs pourquoi pas ;). dud29

alexylem commented 7 years ago

@LengZai la réponse à ta question est celle de @dud29 😄 Je vais tenter une approche de poids pour les plugins, je pense que ca vaudra le coup pour les autres plugins du même genre. Par contre pas de drag & drop dans la console... faudra être créatif pour que ca reste facile pour l'utilisateur lambda (ma priorité numéro 1)

elem-bee commented 7 years ago

@alexylem Merci, pour moi, c'est fonctionnel.

alexylem commented 7 years ago

Oui @elem-bee car tu n'utilises probablement pas d'autres plugins. J'ai créé #220 pour adresser le problème de l'ordre des plugins. On continue la discussion la bas. Pour le reste je pense qu'on peut ferme ce ticket car déjà plusieurs utilisateurs ont reporté que le plugin fonctionne. Merci à tous pour votre support et vos idées, on n'en serait pas la aujourd'hui sans vous! ❤️

alexylem commented 7 years ago

@dud29 je t'ai rajouté dans la liste des auteurs du plugin, en effet j'ai juste copié collé ton code 😄 image

HoLengZai commented 7 years ago

@dud29, @elem-bee

Je voulais apporter une information à ce sujet pour les utilisateurs de Jeedom... Tu n'as rien à programmer car Jeedom te fournit (génère) la ligne complètement Dans l'interface web, tu as un menu pour voir la ligne (http) pour le bouton (action, on, off, etc) que tu as crée donc tu as juste à copier coller dans les commandes de jarvis c'est tout. C'est marqué sur la doc de Jeedom.

Après, j'avais pensé à la même idée @alexylem et d'avoir un menu dans jarvis pour gérer les API externe simplement mais bon, après ca dépend de l'appli =/ Ca serait plus pour pouvoir créer des "user_attribut", comme des variables qu'on peut réutiliser dans les commandes du style (jeedoomApikey:1232645765856) mais il me semble que créer "des variables" est déjà possible sur Jarvis)

alexylem commented 7 years ago

Merci pour ces précisions @LengZai Oui on peut déjà créer des variables/fonctions dans les plugins dans les plugins (fichier functions.sh. Pour utiliser des variables/fonctions dans les commandes utilisateurs (menu Commands) c'est un peu plus compliqué, mais possible, voir: #215

dud29 commented 7 years ago

@LengZai, merci pour l'info, je ne connaissais pas cette astuce, mais le but du plugin c'est justement de ne pas avoir à copier coller chaque commande dans Jarvis, mais d'envoyer un ordre vocal, traduit par Jarvis en texte à la partie interaction de Jeedom, et la je ne suis pas sur que Jeedom nous donne la requête http toute faite. Si c'est le cas je n'ai pas suffisamment cherché dans Jeedom, mais au vu des différents forums je ne serai pas le seul. Ps : Merci @alexylem d'avoir pris en compte ma modeste contribution :)

HoLengZai commented 7 years ago

Yes, merci @alexylem

@dud29, @elem-bee Je vous ai retrouvé le lien qui parle de l'URL direct https://jeedom.github.io/documentation/core/fr_FR/api_http.html

Tout en bas de la page vous verrez comment l'obtenir pour chaque bouton de Jeedom (je te l'accord, la doc est un peu fouilli dans le sens, maj bizarrement et y a meme pas de moteur de recherche)

@alexylem Il semblerait qu'il y a un problème sur le lien vers Jarvis, je ne sais pas si c'est toi qui administre cette page: https://jeedom.github.io/documentation/plugins/jarvis/fr_FR/index.html Quand tu cliques dessus, la redirection est fouareuse et on reçoit un 404 Not Found :P image

alexylem commented 7 years ago

Non ce n'est pas moi (je n'étais même pas au courant de ce plugin avant que vous m'en parliez ici) je vais les contacter pour corriger ca. Merci.

dud29 commented 7 years ago

@LengZai pour info le lien URL ne fonctionne pas chez moi, mais je pense c'est du au fait que je n'ai pas rempli la configuration reseau, de jeedom.

HoLengZai commented 7 years ago

Ok @dud29 , je suppose oui, car de mon coté, c'est comme cela que je l'utilise dans les commandes de Jarvis et ca marche nickel ;-), délai de 3-5sec au minimum par bing et 1-2sec minimum par commande direct avec snowboy

azertigrou commented 7 years ago

J'ai testé également. Fonctionne bien: 3 secondes par bing avec jeedom en local. Beau boulot