Coder Social home page Coder Social logo

jarvis-api's People

Contributors

alexylem avatar oliv4945 avatar quentincg avatar unixfox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

jarvis-api's Issues

Expecting , delimiter

hi,

i installed Jarvis-API and it started in 8005 port as i configured. but, when i try to get "http://localhost:8005/?say=ciao" but i get {"error": "Expecting , delimiter: line 1 column 56 (char 55)"}
how can i resolve?

thank you.

Vincenzo

Ne fonctionne pas avec jarvis-web-answers

Bonjour,

Le travail fourni pour jarvis est génial.

Je constate que l'api ne fonctionne pas avec jarvis-web-answers. En effet, celui-ci retourne un premier message "Je cherche.." Et après la réponse.

Si vous avez des idées pour corriger cela que je puise testé?

Url du dépôt : https://github.com/lakadev/jarvis-web-answers

Un serveur socket, à la place d'une webapi, ne pourrait-il pas ressourdre le problème? (Socket.io étant disponible sur plein de platform même python)

Cela est dommage pour une conversation de n'envoyer qu'un bloc de phrase et non une phrase par une phrase.

Cordialement

Problème avec Jarvis-API

Bonjour,

Chez moi, l'API ne semble pas fonctionner.
Quand je lance Jarvis, le serveur est bien lancé:
Starting RestAPI server on http://192.168.1.102:8082

Et quand je lance une requête:
curl "http://192.168.1.102:8082?say=Hello World"

<title>Error response</title>

Error response

Error code 400.

Message: Bad request syntax ('GET /?say=Hello World HTTP/1.1').

Error code explanation: 400 = Bad request syntax or unsupported method. Idem avec pi@domoticz:~/jarvis$ curl "http://127.0.0.1:8082?say=Hello World"

Idem lorsque je change le port.

{"error": "[Errno 2] No such file or directory"}

Bonjour. Tout d'abord bravo pour tout le travail effectué. J'utilise Jarvis et son api depuis presque 1 an et c'est la seule solution que j'ai trouvé efficace pour mon utilisation. Je me permets un petit message car cela fait plus de 24H que je seche totalement pour la première fois sur jarvis.

En gros ma config : j'ai un téléphone (galaxy S9) avec tasker et je me suis bidouillé un assistant vocal hors ligne pour remplacer google. Quand ma requete a besoin d'une aide extérieur (petit domotique pour chez moi, température de chez moi quand je suis en déplacement ou traduction), tasker envoi une requete sur open jarvis via jarvis-api sur un serveur chez moi (en local ou via un vpn quand je suis en déplacement).
Jarvis traite la demande et si il voit pas quoi faire (domotique), il envoie la requette a jeedom qui s'execute ou renvoi qu'il n'a pas compris si lui même est perdu.

Tout fonctionnait à merveille

Cependant, mon serveur étant une petite bécane un peu vieille gérant plein d'autre truc, jeedom à parfois des coupures et jarvis aussi. J'ai alors décidé de tout migrer sur un raspberry pi 4 que j'ai depuis noel.

J'ai réussi a tout migrer, jeedom et jarvis. Mais j'ai un gros soucis avec jarvis-api. Ca ne fonctionne plus. Que ca soit en réinstallant tout ou en copiant/collant la même config que j'ai sur le serveur j'obtiens le même résultat. Lors d'une requette telle que "http://192.168.0.150:5555/api?order=test" j'obtiens en réponse "{"error": "[Errno 2] No such file or directory"}"

Je ne sais pas trop la procédure pour vous envoyer plus d'infos. j'ai tenté de regarder les logs de jarvis mais meme en rajoutant les options de debug de jarvis en le lancant rien n'apparait d'aujourd'hui.

Merci d'avance pour votre réponse. Je reste à l'écoute pour vous filer toutes les infos qui pourrait m'aider à débloquer tout cela.

Commande imbriquées suite a requete JSON

Bonjour,

J'aimerais que lorsque l'on envoi une requête JSON à jarvis qui contient un ordre qui correspond à une requête imbriquée qu'il soit possible d’interagir après en mode clavier

ex :

    MUSIQUE==say "Voulez-vous un peux de musique ?"
    >OUI==(lance la musique)
    >NON==say "Ok va pour le silence"

Merci

Ne fonctionne pas en mode conversation

Hello,
Voilà j'essaie de faire en sorte que a un moment donné Jarvis me pose la question via le lien :
&order=Allume la lumiere&mute=true&action=listen qui en gros donne "quelle pièce veux-tu que j'allume ?" ensuite je suis censé pouvoir répondre mais impossible.

Même si je fais deux requêtes (une pour l'order et l'autre pour listen) il ne reconnait plus la question qu'il m'avait posé.

PS: autre petit bug si on met mute=true sur l'action listen ça ne fonctionne pas :/

PS2 par contre en log il attend bien une réponse : {"answer":"Je n'ai pas compris: Allume la lumiere"},{"debug":"*SALON *BUREAU L*APPARTEMENT|*TOUTE"}]

No JSON object could be decoded

Coucou,
Quand je vais sur http://localhost:8080/?say=test, j'obtient ceci comme réponse :
{"error": "No JSON object could be decoded"}
J'ai la même erreur avec le plugin jarvis-ui qui a comme dépendance jarvis-api

Comment régler ce problème ?

IP is empty: Starting RestAPI server on http://:8080

Bonjour,

Je me suis mis récemment a la configuration de Jarvis sur mon Raspberry.
Le fonctionnement de base est fonctionnel, en voulant aller plus loin en expérimentant avec jarvis-api des soucis commencent à se poser.
Au démarrage de Jarvis, je suis notifié d'un souci au lancement du serveur embarqué :

Starting RestAPI server on http://:8080
nohup: redirection de la sortie d'erreur standard vers la sortie standard
Starting User Interface on http://:8080
nohup: redirection de la sortie d'erreur standard vers la sortie standard

J'ai regardé un peu la configuration du plugin au cas ou, mais seul le port y est référencé.
C'est curieux que l'adresse IP du raspberry ne soit pas récupérée

Merci d'avance pour votre retour ;)

API & Commandes imbriquées : précisions et.ou évolution possible ...

Dans le cadre de mon intégration de JARVIS avec mon écosystème domotique, je souhaite pouvoir déclencher une commande imbriquée directement à partir de l'API, via une requête HTTP - GET ad-hoc.

Exemple :

1- détection par la domotique d'un mouvement dans une pièce théoriquement inoccupée à cet instant

2- requête http de la domotique vers l'instance de JARVIS attachée à la pièce pour déclencher une commande "BONJOUR INCONNU" définie comme suit

BONJOUR*INCONNU*==say "Etes vous toto ?" 
>OUI*TOTO*==say "Bon retour à la maison ..." && jv_curl "xxxxxxxxx"
>NON==say "qui êtes vous alors ? "

3- échanges d'informations entre JARVIS et l'inconnu par le canal oral et remonté d'informations de JARVIS vers la domotique via des requêtes http ad-hoc

Suite à une lecture attentive du fil #2 , pas de soucis pour lancer une instance de JARVIS à partir de ma console, avec la bonne commande ...

Par contre, impossible de faire cohabiter cette exécution ponctuelle avec une autre instance de JARVIS ; les 2 instances accèdent à la même ressource micro ....

rec FAIL formats: can't open input `default': snd_pcm_open error: Device or resource busy
ERROR: rec command failed
HELP: Verify your mic in Settings > Audio > Mic

Et en plus, pas idéal par rapport au mode de fonctionnement que je vise, à savoir disposer d'une seule instance par PI traitant à la fois :

  • des appels directs à une commande = commande activée à partir du micro via le hortword puis interactions vocale selon un scénario pré déterminé

  • des appels 'indirects' à cette même commande = commande activée via l'API donc sans hortword puis interactions vocales comme dans le premier cas

Question : est-ce faisable avec la version actuelle de l'API ? J'ai lu et relu plusieurs fois la documentation mais pas trouvé de réponse ...

Sinon, est-il possible de faire évoluer l'API dans ce sens ? Dans un premier temps, la seule information en retour dont j'ai besoin est le résultat du traitement / le code retour. Je n'ai pas identifié à date l'intérêt d'avoir le détail du scénario dans le JSON.

Par avance merci.

Cordialement,
Laurent.

Sécurisation de l'API par token

Passer par une api sécurisée. Il faudrait un token généré par le serveur et a mettre dans la commande pour sécuriser les actions de jarvis.
Ceci permettra d'appeler l'API au travers d'internet

API bloque le mode écoute

bonjour,
Je me sers de Jarvis pour (entre autres) faire du TTS : jarvis me donne la météo avec une commande say avec une URL construite sur un autre appareil.

Mais après Jarvis ne répond plus au mot magique : je suis obligé de relancer jarvis...

concrètement :
`josette: Waiting to hear 'josette'
seb: (listening...)
DEBUG: models=josette
INFO:snowboy:Ticks: [2, 20, 5, -1]
DEBUG: using cache /dev/shm/temperature_de_6_a_13_degres_61_millimetres_de_pluie_vent_de_15_kilometres_heure_bonne_journee.mp3
192.168.86.236 - - [01/Nov/2019 19:50:11] "GET /?say=température%20de%206%20a%2013%20degrés,%206.1%20millimetres%20de%20pluie%20vent%20de%2015%20kilometres%20heure%20bonne%20journée HTTP/1.1" 200 -

`

Je voudrais savoir quel commande envoyer pour remettre Jarvis en mode écoute ( je ne parle pas de l'action listen : http://IP:8080/?action=listen)

Merci !

PS : je n'utilise plus la météo de Jarvis, wunderground, qui fait planter le plugin face, mais c'est une autre histoire

Jarvis ne détecte pas toujours qu'il est déjà lancé - du coup il plante micro car micro occupé

@alexylem, je te propose de te remonter quelques problèmes rencontrés sur l'api.

Actuellement, j'utilise beaucoup jarvis à partir de mon téléphone pour joindre l'api.

En premier, si je démarre mon terminal pour lancer jarvis en service, la plus-part des actions sur l'api est retransmise sur mon terminal:

XXXXXXXX - - [27/Nov/2016 20:15:49] "GET /lib/codemirror/lib/codemirror.js HTTP/1.1" 200 -
XXXXXXXX- - [27/Nov/2016 20:15:49] "GET /lib/codemirror/mode/shell/shell.js HTTP/1.1" 200 -
XXXXXXXX - - [27/Nov/2016 20:16:06] "POST / HTTP/1.1" 200 -
XXXXXXXX - - [27/Nov/2016 20:17:00] "POST / HTTP/1.1" 200 -

Je croyais en tenir une autre mais j'ai du mal à la reproduire.

Dès que je suis sûr de moi je te la remonte.

Retour en erreur sur certaines commandes.

Salut Alex,
Je fais des tests dans le cadre de l'appli iOS, et en voulant tester avec le plugin jarvis-lemonde, je rencontre le problème suivant:

Requête passée en entrée de l'API jarvis:
http://192.168.0.14:8080/?order=%22actualités%20de%20la%20rubrique%20politique%22

Retour:
{"error": "No JSON object could be decoded"}

J'ai comme l'impression que l'API n'aime pas certains retours.

Par contre, si je passe l'ordre suivant (même plugin):
http://192.168.0.14:8080/?order=%22liste%20des%20rubriques

le retour est ok pour moi au niveau de l'appli
[{"answer": "Il y \u00e0 12 rubriques : international, politique, soci\u00e9t\u00e9, \u00e9conomique, culture, id\u00e9es, plan\u00e8te, sport, sciences, pixels, campus, le mag."}]

J'aimerais donc avoir ton avis sur ça. Problème au niveau de l'API, ou du plugin?
Seb

Wrong boolean handling for mute and verbose

Hi,

Thanks to @NikoS34 here I discovered how you handle verbose and mute variables: the current code only detects if the variable is set, not its boolean value

I would propose the following change, but it breaks compatibility with GET requests as True is recognized as a string. Do you have any idea ? A workaround would be to test type (String or boolean) but maybe there is a cleaner code.

Oliv'

    mute = data.get("mute", False)
    jarvis.mute_mode = mute == True
    verbose = data.get("verbose", False)
    jarvis.verbose = verbose == True

Jarvis API

Bonjour ,
Tous d'abord merci pour le travail réalisé , un grand bravo .
Concernant mon problème je pense avoir lu pas mal , peut être les ai-je mal compris, mais je n'arrive pas à le solutionner .
Mon problème concerne Jarvis API
lors que je lance un simple requete JSON vers mon pi 2 depuis mon navigateur je me retrouve ex: http://ip:8080/?say=jarvis
Je me retrouve avec
"error": "No JSON object could be decoded"

Idem quand je test depuis mon téléphone androïde en suivant le tuto https://www.openjarvis.com/content/voice-control-from-android-device
le mot est bien reconnu mais concernant la commande je me retrouve avec la même erreur
"error": "No JSON object could be decoded"
j'ai désactiver tous le plugins sauf biensur le JARVIS API que j'ai tenté de réactive et reinstaller .
En terme de ressources tous ce passe bien d'un point de vu CPU et RAM rien a signaler
Ma SD est une 32 gio ultra samsung donc je ne pense pas que ce soit un frein

je vous joint les dernières lignes de log

mercredi 12 juillet 2017, 11:01:12 (UTC+0200) jarvis: Waiting to hear 'jarvis'
mercredi 12 juillet 2017, 11:01:42 (UTC+0200) Can't get device info: No such device
mercredi 12 juillet 2017, 11:01:42 (UTC+0200) {"debug":"DEBUG: start_speaking hook"},{"answer":"Je n'ai pas compris: service"},{"debug":"DEBUG: stop_speaking hook"},{"debug":"OUI NON|PAS"}]
mercredi 12 juillet 2017, 11:01:42 (UTC+0200) Mustapha: 1.0.97.62 - - [12/Jul/2017 11:01:42] "POST / HTTP/1.1" 400 -
mercredi 12 juillet 2017, 11:02:03 (UTC+0200) Can't get device info: No such device
mercredi 12 juillet 2017, 11:02:03 (UTC+0200) {"debug":"DEBUG: start_speaking hook"},{"answer":"Je n'ai pas compris: Bonjour"},{"debug":"DEBUG: stop_speaking hook"},{"debug":"OUI NON|PAS"}]
mercredi 12 juillet 2017, 11:02:03 (UTC+0200) 1.0.97.62 - - [12/Jul/2017 11:02:03] "POST / HTTP/1.1" 400 -

Merci d'avance pour vos Lumières .

Problème Jarvis-API ne reconnais pas les commandes

Bonjour,

Je repose mon probmème ici, car ça concerne Jarvis-API

J'ai un problème avec Jarvis-API, quand j'utilise mon téléphone , Jarvis ne reconnait pas les commandes (je n'ai pas compris la commande), alors qu'avec le micro les commandes fonctionnent. Et quand je reboot le Raspberry là ça fonctionne 1 seul fois et après on revient au même problème.
J'ai désinstallé/réinstaller le plugin, j'ai aussi désinstaler/réinstaller/reconfigurer Tasker et Autovoice et rien ne fonctionne.
Pourtant ça a parfaitement fonctionné pendant 3 jours, même à distance, autant avec google now qu'avec le bouton virtuel de reconnaissance vocal.

Vous avez une idée de comment régler le problème pour éviter de tout sauvegarder, désinstaller et réinstaller?

********EDIT : Après reinstallation complète de Jarvis même problème, :'(
Merci

JSON API is not consistent

Hi,

Jarvis-api waits for a JSON object in POST request, but sends back a JSON array.
It might be more consistent (and helpful for the Android app :-) ) to have a JSON array in input. The problem is for all software already developed. I see two options:

  • New endpoint like order_json_array
  • Have a verification for object or array in Python code (preferred)
    • isintance(obj, list) # if returns true, then JSON Array
    • isintance(obj, dict) # if returns true, then JSON Object

Request in JSON object: {"order":"test","key":"testtest"}
Answer in JSON array: [{"Jarvis":"Ca fonctionne!"}]

Question technique svp

Bonjour.

Merci pour le travail effectué. Je suis comme un gamin devant son jouet de noël depuis que j'ai acheté mon rapberry pi 3, et avec Jarvis c'est vraiment cool. L'île de la Réunion est dans la place.... Qui baigne ! Oups, pardon :).

J'aurais besoin d'un conseil de développement svp : j'ai créé plugin qui permet de vérifier la distance entre ma maison et ma position à tout moment et par conséquent de déclencher une action spécifique dans certaines conditions. Par exemple Jarvis détecte que je me rapproche de chez moi, et à une certaine distance lance l'ouverture du portail électrique, même si pour l'instant il n'allumera qu'une led :).

J'ai cherché dans la documentation des plugins mais je n'ai pas trouvé comment faire sans modifier l'api même pour la réception des coordonnées gps. Ces coordonnées ainsi qu'un order appelant le fameux plugin sont envoyés depuis mon téléphone android de façon régulière en http donc via un petite appli que j'ai faite pour l'occasion. Pour cela, j'ai modifié (en local pour l'instant) l'api afin d'y ajouter deux méthodes et deux actions qui mettent à jour des fichiers en local dans le dossier config qui contiendront les coordonnées de base (de ma maison) et les dernière coordonnées lues. Le plugin calcule alors la distance entre les deux points et si celle-ci est à moins de 30m, le portail s'ouvre (enfin, la led s'allume). Ca fonctionne plutôt pas mal et j'en suis content, il faut juste installer en plus le plugin python "geopy" (pour les calcules de distances).

Ceci dit, je ne suis pas sûr d'être sur le bon chemin. J'aimerais savoir si je peux faire la même chose sans toucher au serveur svp et si oui, comment ? Sinon, il vaut mieux faire un fork ou proposer une modif ?

En parallèle pour l'appli Android, si cela intéresse quelqu'un, faites-le moi savoir par mail, je vous enverrai l'apk pour tester. Elle permet de commander jarvis depuis son téléphone : quand la radio est allumé par exemple, le micro est inutilisable, donc je peux passer par mon téléphone qui me sert un peu de "télécommande vocale" pour jarvis finalement.

Désolé d'avoir été un peu long, mais j'ai préféré être assez clair, enfin je l'espère :).
Merci d'avance pour vos temps de lecture et j'espère vos réponse.
A bientôt !

Jarvis-API does not trigger hooks ?

Hi,

I am still playing with Jarvis thanks to Jarvis-api, and I want to use start_speaking hook in a plugin.
It is triggered by the hello message, so my plugin works but the hook is not triggered when calling Jarvis-api. Did I missed something ?

Thank you

premier pas vers tls et token?

Ca serait sympa d'avoir une api sous tls 1.1 et 1.2.

Sachant que tls 1.2 est fortement recommandé en terme de sécurité.

A ceci il serait bien d'ajouter un token fourni dans le post json.

edit: Je ne sais pas en quel version de python tu es mais voici un lien à partir duquel on peut utiliser le TLS 1.2.

https://docs.python.org/3.4/library/ssl.html

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.