Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question technique svp #20

Open
djgsi974 opened this issue Oct 26, 2017 · 2 comments
Open

Question technique svp #20

djgsi974 opened this issue Oct 26, 2017 · 2 comments

Comments

@djgsi974
Copy link

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 !

@Oliv4945
Copy link
Contributor

Salut,
Jarvis n'a pas vraiment été conçu pour ce genre de taches; même si tu pourrais t'en sortir avec des commandes que tu ne diras jamais comme ddkjchmkfdnvjh (1)==$(jv_pg_ta_fonction) et appeler jarvis-api pour lui passer la commande ddkjchmkfdnvjh paramètre, qui lui appellera ton plugin.

Je peux te conseiller Node-Red si tu ne connais pas, ça permet de faire des applis facilement et rapidement avec beaucoup de bloc pré-existants (via plugin) et de coder ce qui manque en Javascript...et contrairement à Jarvis c'est fait pour.
Sinon tu as aussi Home Assistant qui contient déjà tout ce qu'il faut pour ce que tu veux faire (domotique), et s'interface à OwnTracks pour le GPS de ton téléphone. Tu n'as plus que 5 lignes de code à écrire :p

Pour l'appli Android il existe déjà celle-ci, il n'est pas impossible d'en refaire une autre mais autant mutualiser nos efforts et contribuer pour l'améliorer.

Oliv'

@djgsi974
Copy link
Author

Bonjour et merci pour ta réponse rapide.
Je m'en suis aperçu aujourd'hui pour l'idée avec les commandes qu'on ne prononce jamais et merci pour la syntaxe, c'est mieux en effet que de toucher à l'api si c'est pour un plugin spécifique, ce qui est mon cas, et je n'avais pas compris le fonctionnement.

Merci aussi pour les autres sites, ça a l'air vraiment sympa, mais je prendrais plus de temps pour regarder en détail . Tu dis que Jarvis n'a pas été conçu pour ce genre de tâche, c'est à dire, pour de la domotique ? Pour moi il y a déjà tout ce qu'il faut, c'est un assistant vocal paramétrable et l'avantage est de pouvoir créer facilement des plugins et d'éliminer les limites qu'on peut avoir. Il faut coder un peu et des fois c'est long, surtout quand on vient de se mettre à linux comme moi :), mais il faut aimer ça et c'est tellement bon quand ça marche non ?

Par exemple dans mon cas, j'avais déjà une bande à leds qui me sert de lampe pour le bureau contrôlée par une carte arduino avec liaison bluetooth pilotable depuis le téléphone. J'ai fait la connexion bluetooth entre le raspberry pi et l'arduino, créer un plugin spécifique : communication série avec l'arduino et donc envoie des commandes nécessaires. C'est maintenant Jarvis qui commande l'éclairage de la lumière du bureau.

Pour l'appli Android, j'avais en effet déjà vu celle-là. mais je ne sais pas du tout coder pour Android donc je ne pourrais pas aider mais tu as raison, il est bien de mutualiser les efforts. Pour ma part, j'utilise l'appli web http://ai2.appinventor.mit.edu pour développer mon appli android. C'est de la programmation en "bloc" mais assez puissant finalement quand on regarde de plus près.
Aujourd'hui, j'ai ajouté à mon plugin la possibilité d'envoyer un sms à une liste de contacts configurés. Un fichier sms à envoyer est créé sur le Pi. J'ai aussi modifié le programme android pour appeler régulièrement l'api pour récupérer le sms à envoyer et de gérer l'envoie. Du coup, je ne suis pas obligé de m'abonner à un site payant (ou juste gratuit pour 30 jours) je peux ainsi envoyer des sms depuis jarvis et sans payer plus (il faut compter l'abonnement du téléphone bien sûr).

En tous cas, merci pour tes réponses et à bientôt !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants