alexylem / jarvis

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

Faire parler Jarvis depuis Jeedom #273

Closed parrain27 closed 7 years ago

parrain27 commented 7 years ago

ya t'il moyen de faire parler jarvis par jeedom

c'est ta dire crée une interaction sur jeedom et choisir la sortie voix de jarvis

parrain27 commented 7 years ago

que je m'explique bien mdr a long terme je veux mettre des rpi jarvis dans toutes les chambres et avoir un réveil avec température extérieur et interieur en me servant de mes sondes sur jeedom pour le moments j'utilise un scénario et push bullet mais pas terrible lol sans titre

alexylem commented 7 years ago

Je ne connais pas jeedom, mais est-ce que tu peux lui faire lancer une commande shell ou une requête http?

parrain27 commented 7 years ago

une requête http oui en get http je le fessai avec tasker avant mais une vrai galère et en shell je connais pas comme je dit je suis novice en linux

jeedomclaude commented 7 years ago

Très bonne idée,je serais moi intéressé.

dud29 commented 7 years ago

Bonjour, pour info Zerat9w, a crée un script qui permet de faire parler Jarvis via Jeedom, à priori tu peux aussi régler le volume allumer ou éteindre Jarvis. Voilà le lien de la discusion https://www.jeedom.com/forum/viewtopic.php?f=60&t=21842&start=220 script

parrain27 commented 7 years ago

oui mais étant une quiche profonde lol pas réussi

dud29 commented 7 years ago

Je pense que le plus simple c'est d'utiliser le plugin API de jarvis, et ensuite d'envoyer une requête http pour faire parler Jarvis. Par contre je ne sais pas comment traduire curl -d '{"say":"Hello World"}' http://XXX.XXX.X.XX:8080 en http://XXX.XXX.X.X:8080 jarvis.sh -s "Hello world" j'ai essayé plusieurs syntaxes sans succès. Je continue de chercher. Le script de Zerat9w nécessite de faire des modifs sur Jarvis (rajout de fichier, génération de clef ssh) que je ne préfére pas faire. Pour l'instant Jarvis et jeedom sont sur le même orange PI, donc je ne veut pas prendre le risque de voir jeedom planter (il pilote le chauffage).

alexylem commented 7 years ago

Il y a 2 méthodes:

Je serais très étonné que Jeedom je puisse pas lancer de requête HTTP...

dud29 commented 7 years ago

@alexylem le problème c'est que ce qui est logique pour vous, devient compliquer pour nous, c'est pour ça que je suis le premier à utiliser les plugins, parce que toucher ou créer du code, c'est du chinois.. J'ai essayer de faire parler Jeedom via Jarvis en utilisant shell_exec, résultat j'ai fait planté mon PI (73° et load à plus de 11). Donc si je ne peut pas faire un copier coller des commandes pour les utiliser directement, je préfère éviter. Et dans le cas qui nous concerne si je copie colle curl -d '{"say":"Hello World"}' http://XXX.XXX.X.XX:8080 dans le plugin script de Jeedom, ça ne donne rien. Par contre en modifiant le script de Zerat9w j'ai réussi, mais la encore c'est du bricolage et je ne veux pas refaire planter le PI. Petite question quand même (je pense faire des tests sur un RPI que j'ai en stock) comment peut on faire passer une variable dans curl ex : curl -d '{"say":ma variable}' http://XXX.XXX.X.XX:8080 Merci.

alexylem commented 7 years ago

@dud29 Ok je comprends. Je vais t'aider. Tu peux me donner un exemple de requête HTTP qui marche dans Jeedom? afin que je l'adapte pour utiliser Jarvis?

Sinon en cherchant un peu sur google, il y a un plugin Script pour Jeedom qui permet de lancer des requêtes HTTP: https://www.youtube.com/watch?v=FRbQILAogX0

Je n'ai pas Jeedom donc pas testé, mais Jarvis/Jarvis-API attend du POST et je ne sais pas si le plugin Jeedom/Script le permet... Je pourrais toujours adapter Jarvis/Jarvis-API pour supporter le GET (d'ailleurs ca serait bcp plus simple je ne sais pas pourquoi je suis parti sur le POST...)

Alex.

alexylem commented 7 years ago

Pour répondre à ta question, ca va dépendre de tes connaissances en bash

var="Coucou les amis"
curl -d '{"say":"$var"}' http://XX.XX.XX.XX:8080

Juste au cas ou... il faut bien entendu mettre l'IP du raspberry pi où Jarvis est installé et le port paramétré dans le plugin jarvis-api (8080 par défaut), si c'est en local:

curl -d '{"say":"coucou les amis"}' http://localhost:8080

Si je fais le changement de POST en GET que j'ai mentionné ci-dessus, ca serait alors:

curl "http://localhost:8080/?say=coucou les amis"
alexylem commented 7 years ago

Bon je viens de relire ton message et tu parlais déjà du plugin Script... désolé 😄 Je viens de lire la doc du plugin en question: https://github.com/jeedom/plugin-script/blob/master/doc/fr_FR/configuration.asciidoc

En type de script il y notamment http et script.

Conclusion, il faut que je change jarvis-api pour pouvoir utiliser Jeedom/Script avec la requête: http://localhost:8080/?say=coucou les amis

@dud29 et @parrain27 j'attends votre Go avant de faire le changement, car je vais impacter pas mal de choses, alors je voudrai pas le faire pour rien 😄

dud29 commented 7 years ago

Merci pour tes réponses, moi je suis d'accord pour le changement, mais attends d'avoir plus de retour, ce serai dommage de changer ton code pour une ou deux personnes, d'autant plus si d'autres personnes l'utilisent déjà en l'état et que ça leurs convient. Dud29

alexylem commented 7 years ago

Je pense pouvoir supporter les 2 méthodes. Je laisserai une période avant de désactiver l'ancienne méthode (avec un message automatique pour ceux qui l'utilisent). Allez c'est parti!

dud29 commented 7 years ago

Merci, je viens d'essayer var="Coucou les amis" curl -d '{"say":"$var"}' http://XX.XX.XX.XX:8080 et le résultat n'est pas concluant il me dit 'dollars var'... Donc merci de faire la modif 😄

alexylem commented 7 years ago

N'oublies pas de remplacer les XX.XX.XX.XX par l'IP du raspberry ou est installé Jarvis. Si c'est le même:

curl -d '{"say":"coucou les amis"}' http://localhost:8080

Si tu utilises le type "script" de Jarvis/Script, il faut mettre du php:

<?php
echo shell_exec("curl -d '{\"say\":\"coucou les amis\"}' http://localhost:8080");
?>

Il faut bien sûr avoir Jarvis lancé avec le plugin Jarvis-Api installé...

dud29 commented 7 years ago

Merci ça y est, voila la syntaxe qui fonctionne pour moi

 curl -d '{"say":"'$msg'"}' http://xxx.xxxx.x.xx:8080

je ne sais pas pourquoi il faut rajouter ' ,c'est un des gros soucis que je rencontre, la syntaxe...

alexylem commented 7 years ago

Tu as réussi à le faire marcher? Tu peux coller une copie d'écran de ton Jeedom/Script? En attendant je travaille sur la modif en GET ca évitera l'arrachage de cheveux avec les guillemets 😄

dud29 commented 7 years ago

image ça c'est la partie script interface jeedom image et ça c'est le bricolage que j'ai fait à parti du script de Zerat9w, j'ai juste modifier la fin (partie msg)

alexylem commented 7 years ago

Au secours, c'est carrément du bricolage!!! Merci pour le partage!

Sachez que j'ai prévu de reprendre le plugin Jarvis de Jeedom (oui il existe) afin d'y intégrer l'interface web Jarvis-UI pour contrôler Jarvis: http://domotiquefacile.fr/jarvis/plugins/jarvis-ui

image

image

En attendant tu peux continuer ton script, mais il faudra merger à un moment donné 😄

dud29 commented 7 years ago

Euh, je vais rien merger du tout moi, je vais attendre que les pros fassent le boulot 😄et mettent à jours les plugins. ça reste le meilleur moyen pour moi de garder mon matériel en bon état. Comme tu l'as constaté je ne fais que du bricolage et sur linux ça peut faire des gros dégâts. Donc je limite mes modifs quand j'ai beaucoup de temps devant moi et sans prendre trop de risques. Edit si tu arrives a intégrer ton interface web à Jeedom tu vas faire un paquet d'heureux !

alexylem commented 7 years ago

Presque fini:

image

🎁 Bonus: ça marche même dans le navigateur direct:

image

Et bien sûr ca dit "hello" Je fais quelques tests et je pousse la mise à jour du plugin jarvis-api

dud29 commented 7 years ago

Merci rapide et efficace, là il faut 6 heures pour trouver une syntaxe, d'autres mettent 30 minutes pour changer un plugins...pfff pas facile la vie de noob 😄.

alexylem commented 7 years ago

Voila c'est implémenté. Mettez à jour Jarvis et vos plugins:

$> ./jarvis.sh -u
dud29 commented 7 years ago

Chez moi c'est bon, ça fonctionne dans l'interface jeedom et dans un navigateur web.

alexylem commented 7 years ago

Super! Pour info j'ai aussi mis à jour le README du plugin pour toutes les options de l'API: http://domotiquefacile.fr/jarvis/plugins/jarvis-api

@dud29 pour documentation, tu pourrais coller un screenshot de ton plugin Jeedom/Script? Idéalement avec l'utilisation de la variable #message#.

J'imagine que c'est qqchose dans le genre:

http://localhost:8080/?say=#message#

Merci!!

dud29 commented 7 years ago

image Voilà

parrain27 commented 7 years ago

je comprend pas je met pareil mais moi une erreur ouin ouin ouin mdr ezrzrzr

dud29 commented 7 years ago

Bonjour, à priori il y a des "+" dans ton message que le script ne supporte pas. essaye avec le même message en remplaçant les "+" par des espaces. Dud29

parrain27 commented 7 years ago

les + montre la ou j'ai des espace lol

dud29 commented 7 years ago

Ah bah là je sais plus... essaye éventuellement directement de lancer la commande depuis un navigateur internet, pour voir ce que ça donne.

alexylem commented 7 years ago

@parrain27 On dirait qu'il y a un espace entre ? et say dans ton URL...

parrain27 commented 7 years ago

bon ça marche mais il me lance la phrase jarvis me répond oui après et me relance la phrase mdr

alexylem commented 7 years ago

Tu essayes de faire quoi exactement? Lui faire dire quelque chose? Tu peux coller l'URL (requête que tu as défini dans Jeedom) dans un navigateur pour voir ce qu'il affiche?

parrain27 commented 7 years ago

je lance un scénario avec le script ça marche une fois après j'ai ça

[2016-12-11 13:32:04][ERROR] : Erreur execution de la commande [test][jarvis parle ][parle ] : Echec de la requête http : http://192.168.1.5:8080/?say=marie+c%27est+l%27heure+de+prendre+ta+pilulle Curl error : Failed to connect to 192.168.1.5 port 8080: Connection refused

parrain27 commented 7 years ago

test1 test2

alexylem commented 7 years ago

Curl error : Failed to connect to 192.168.1.5 port 8080: Connection refused

Essaye d'abord dans un navigateur. Vérifie aussi que Jarvis et lancé et que l'IP/Port est bien ce qui est affiché au démarrage de Jarvis au niveau de Starting jarvis-api at http://192.168.1.5:8080...

parrain27 commented 7 years ago

bon j'en suis toujours au même point il me répète la phrase 3 fois

jbperrin88 commented 7 years ago

Bonjour ,

Je tiens à te remercier Énormément pour ton petit outil magique !

Je commence à m'en servir pour ajouter un contrôle vocal à ma domotique (avec jeedom).

J'ai lu dans ce thread que tu avais repris le plugin Jarvis de Jeedom.

Il me semble que celui-ci n'est pas du tout à jour .

J'aimerais t'aider si cela est possible pour améliorer ça configuration , mettre à jour la documentation ,etc...

Et j'ai quelque petite question. Cependant , je ne pense pas qu'elle doivent être place dans ce sujet.

Bonne journée

alexylem commented 7 years ago

@jbperrin88 oui j'avais entrepris de le faire mais malheureusement je n'ai pas eu bcp de temps pour avancer dessus. Je ne serais pas contre un peu d'aide si tu es partant. L'idée de base serait de faire un simple "wrapper/iframe" du plugin Jarvis-UI déjà disponible qui permet de contrôler/configurer Jarvis depuis un navigateur.

D-Kalck commented 7 years ago

@alexylem @jbperrin88 Bonjour, Effectivement, le plugin Jarvis de Jeedom est totalement obsolète. Je suis développeur PHP, j'aimerai aider si possible. N'ayant jamais codé de plugin pour Jeedom, le début sera peut-être un peu laborieux. @alexylem Serait-il possible d'ouvrir un repo pour ce plugin ? Histoire qu'il y ai un début. En attendant, je vais essayer de mon côté de m'inspirer du vieux plugin pour l'achitecture et de jarvis-ui pour les fonctionnalités.

alexylem commented 7 years ago

@D-Kalck j'ai forké le plugin original Jarvis pour Jeedom vers un nouveau repo chez moi et t'y ai mis en contributeur pour que tu puisses avoir tout la liberté de développement: https://github.com/alexylem/jeedom-jarvis Ce qui serait génial ca serait vraiment d'embedder Jarvis-UI afin de limiter le double développement. Je suis en contact avec l'auteur du plugin original pour le remplacer à terme sur le store de Jeedom.

D-Kalck commented 7 years ago

@alexylem Ok, merci, j'ai commencé à regarder la doc sur les plugins jeedom, j'ai aussi cloné le plugin s.a.r.a.h. pour regarder ce qu'ils ont fait. Pour discuter du développement, on continue ici, ou est-ce qu'il y a un meilleur endroit ?

alexylem commented 7 years ago

Je préfères que tu créé un nouveau ticket sur ce repo ou sur le nouveau repo: https://github.com/alexylem/jeedom-jarvis

SebLeKlatz commented 6 years ago

Bonjour à tous,

Je ne parviens pas à lancer la commande localhost:8080/?say=hello depuis le navigateur du raspberry, ni avec l'adresse complète http://192.168.1.XX:8080/?say=hello, que jarvis soit démarré ou non...(Jarvis sur le même Raspberry)

Je ne sais pas si je peux en parler ici ou que j'ouvre un autre ticket plus spécifique, mais je cherche à faire parler Jarvis avec Déclencheur sur Jeedom (sur le même raspberry), du genre si <déclencheur Jeedom> alors

Je galère à trouver en ligne la synthaxe nécessaire pour envoyer ce genre de commande sans avoir à installer Jarvis sur Jeedom.

Objectif final : si présence détectée via Capteur Jeedom alors Jarvis donne la météo du jour avec le Plugin Wunderground.

Je pensais mettre sur jeedom une commande HTTP du détecteur du genre : localhost:8080/? jarvis.sh -x "meteo" , mais mes recherches tournent en rond.

Merci d'avance pour vos précieux conseils!

Sh1n1x commented 6 years ago

As-tu installé jarvis-api? car sans c'est logique que cela ne fonctionne pas ^^. Ensuite, pour que le lien fonctionne il faut que jarvis soit démarré ainsi que jarvis-api.

SebLeKlatz commented 6 years ago

ah ben oui forcément ça marche mieux...! Par contre en local localhost:8080/?say=hello pas de probleme, mais en IP http://192.168.1.XX:8080/?say=hello Jarvis ne pronnonce que la 1e lettre.

je vais faire mes essais, je risque de demander un peu d'aide prochainement.

Merci bien en tout cas pour m'avoir mis le pied à l'étrier hue!

SebLeKlatz commented 6 years ago

alors @Sh1n1x , c'est tout bon, je simule des ordres vocaux à Jarvis via des commandes HTTP dans le plugin "Script" de Jeedom.

cool.

par contre, Jarvis ne "dit" pas les réponse, il les épèle!! Alors là je suis sec, je ne vois pas d'où peut venir le problème.

dernière précisions, je lis ces lignes sur le terminal:

192.168.1.18 - - [07/Jan/2018 15:40:26] "GET /?order=bonjour HTTP/1.1" 200 - 192.168.1.18 - - [07/Jan/2018 15:40:26] "GET /favicon.ico HTTP/1.1" 400 - ERROR: Don't know what to do with: {}

A quoi correspondrait la 2e ligne??

merci

Sh1n1x commented 6 years ago

La deuxième ligne c'est rien d'important, vu que c'est une requête http il va chercher le favicon (icône du site) mais ce n'est pas important ici. Par contre c'est bizarre que ça ne fonctionne pas et que ça épele le mot. as-tu essayé de faire via ton navigateur web l'ordre "bonjour" ? ça épele aussi ?

SebLeKlatz commented 6 years ago

Oui J'ai remarqué que j'ai le même problème quand j'envoie une commande en "execute" depuis jarvis-UI