Closed parrain27 closed 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
Je ne connais pas jeedom, mais est-ce que tu peux lui faire lancer une commande shell ou une requête http?
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
Très bonne idée,je serais moi intéressé.
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
oui mais étant une quiche profonde lol pas réussi
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).
Il y a 2 méthodes:
Si vous avez accès au terminal de la machine ou est installée Jarvis pour exécuter des commandes (possible en PHP via shell_exec
):
$> path/to/jarvis/jarvis.sh -s "hello world"
A distance vous pouvez installer le plugin jarvis-api et lancer des requêtes http. Soit via une commande shell:
$> curl -d '{"say":"Hello World"}' http://XXX.XXX.X.XX:8080
Soit en javascript (utilisé par le plugin jarvis-ui):
$.post({
url: "http://XXX.XXX.X.XX:8080"
data: {"say":"Hello World"}
});
Je serais très étonné que Jeedom je puisse pas lancer de requête HTTP...
@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.
@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.
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"
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
.
http
ne supporte que le GET. Il faut donc que j'adapte jarvis-api.script
permet d'écrire du php
. Mais écrire du php
pour faire un shell_exec
et parser la réponse ressemble plus à vouloir écraser une mouche avec un marteau... mais c'est possible...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 😄
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
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!
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 😄
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é...
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...
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 😄
ça c'est la partie script interface jeedom et ça c'est le bricolage que j'ai fait à parti du script de Zerat9w, j'ai juste modifier la fin (partie msg)
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
En attendant tu peux continuer ton script, mais il faudra merger à un moment donné 😄
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 !
Presque fini:
🎁 Bonus: ça marche même dans le navigateur direct:
Et bien sûr ca dit "hello"
Je fais quelques tests et je pousse la mise à jour du plugin jarvis-api
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 😄.
Voila c'est implémenté. Mettez à jour Jarvis et vos plugins:
$> ./jarvis.sh -u
Chez moi c'est bon, ça fonctionne dans l'interface jeedom et dans un navigateur web.
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!!
Voilà
je comprend pas je met pareil mais moi une erreur ouin ouin ouin mdr
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
les + montre la ou j'ai des espace lol
Ah bah là je sais plus... essaye éventuellement directement de lancer la commande depuis un navigateur internet, pour voir ce que ça donne.
@parrain27 On dirait qu'il y a un espace entre ?
et say
dans ton URL...
bon ça marche mais il me lance la phrase jarvis me répond oui après et me relance la phrase mdr
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?
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
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...
bon j'en suis toujours au même point il me répète la phrase 3 fois
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
@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.
@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.
@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.
@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 ?
Je préfères que tu créé un nouveau ticket sur ce repo ou sur le nouveau repo: https://github.com/alexylem/jeedom-jarvis
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!
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.
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!
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
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 ?
Oui J'ai remarqué que j'ai le même problème quand j'envoie une commande en "execute" depuis jarvis-UI
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