J’avais déjà parlé ici de reconnaissance vocale via imperihome Android ou YANA.
Je voudrais vous présenter ici un nouvel outil que j’ai découvert récemment nommé JARVIS.
Son grand avantage par rapport à d’autres outils : LE FRANCAIS est natif !!
Vous emballez quand même pas trop, on est pas dans Ironman. |
L’intérêt de ce Jarvis ci est de faire de la reconnaissance vocale et d’y enchaîner des actions :
- « Jarvis » « météo » vous donnera vocalement la météo de weather Underground (plugin+enregistrement) ,
- « Jarvis » « tu sais quelle heure il est ? » dira l’heure.
La reconnaissance se base sur des mots clés que vous définissez vous même. Ainsi dans le « tu sais quelle heure il est » le mot clé recherché peut être défini à *HEURE* et donc toute phrase contenant le mot heure donnera l’heure. Cette reconnaissance d’un mot permet de lancer des scripts bash qui font des actions. « Heure » lance une commande linux :
date +%H%M
En plus d’être extrêmement paramétrable car on peut programmer soit même les actions à effectuer à l’issue d’une phrase, on peut lancer des taches vocales via cron (toutes les 10 minutes dire « Bonjour votre Altesse »), il y a des plugins dont un destiné à de la domotique et bien plus.
La phase de reconnaissance vocale peut utiliser soit un moteur local (pocketsphynx) soit Bing.
La page de référence est ici http://domotiquefacile.fr/jarvis/ et Alexylem le concepteur du soft à bien fait les choses puisque explications d’ installation et d’utilisation du soft sont très claires et didactiques (comprenez par la que je ne détaillerai pas ces phases 😆 ).
Bien entendu nous verrons ici comment intégrer Jarvis à notre Domoticz.
A noter Jarvis ne fonctionne QUE sur Raspberry, il faut donc un micro et des enceintes reliés à celui-ci.
Les points forts
Énormément de choses sont paramétrables, plusieurs moteurs de synthèse ou reconnaissance vocable, liste de mots clés reconnus , actions à déclencher, des plugins météo, gmail, de domotique.
On peut aussi lancer Jarvis en ligne de commande pour lui faire faire des actions, on peut utiliser les scripts:/// de Action ON et Action OFF pour lancer des commandes au basculement d’un switch. jarvis.sh -s « Le salon vient de s’allumer » juste pour faire dire une phrase ou -x pour exécuter une commande interne Jarvis
Via Lua un petit os.execute fera le job./home/pi/jarvis/jarvis.sh -x « c’est comment la météo » lance la commande METEO de Jarvis.
Installation
Je vous laisse parcourir le site de Jarvis pour effectuer l’installation.
Sachez toutefois qu’il vous faudra installer sox, alsamixer,aplay, arecord,mpg123 et jq.
sudo apt-get install sox alsamixer aplay arecord mpg123
Pour jq vous trouverez la procédure ici https://easydomoticz.com/manipuler-les-donnees-json-de-domoticz-en-shell/
Sinon, pas d’inquiétude, la procédure d’installation vérifie tout cela et vous donne les commandes à taper.
Puis l’assistant d’installation vous guide dans tout le processus de configuration y compris la détection de vos micros et hauts-parleurs.
A noter : Les meilleurs résultats de reconnaissance que j’ai pu obtenir sont lors de l’utilisation de la reconnaissance vocale Microsoft Bing qui utilise Internet (à mon grand désespoir).
Alexylem à un joli tableau récapitulatif ici http://domotiquefacile.fr/jarvis/content/stt
Pensez à votre vie privée lorsque vous transmettez des commandes à des tiers sur Internet (Bing, Google, Wit)
Une fois familiarisé avec Jarvis, attaquons nous au coté Domoticz de façon à piloter quelque chose à la voix.
Intégration avec Domoticz
Nous allons utiliser un plugin générique Home Automation de Jarvis.
Ce plugin permet d’envoyer des requêtes http à la voix .
Dans le store Jarvis
Installez le plugin « Home Automation » puis « Home Control ».
De même n’hésitez pas à faire des mise à jour du plugin dans Store > Installed > Home Control > Update en attendant les mise à jour automatique des plugin (work in progress).
Il s’affiche une page d’aide que nous allons détailler et adapter à Domoticz.
Loading... ## Description If your home automation system can be controlled via http requests, this Jarvis plugin is just for you. It will allow you to simply turn on and off your devices. ## Configuration 1. Indicate the turn on and turn off http urls (with `[ADDRESS]` placeholder): ``` pg_hc_turnon_url="http://192.168.1.1/home.php?action=on&device=[ADDRESS]" pg_hc_turnoff_url="http://192.168.1.1/home.php?action=off&device=[ADDRESS]" ``` 2. List your device names & corresponding addresses in `json` format ``` pg_hc_config='{ "devices":[ { "name": "BEDROOM", "address": "A1"}, { "name": "LIVING ROOM", "address": "A2"}, { "name": "BAR", "address": "A3"} ]}' ``` ## Usage ``` You: turn on the bar > http://192.168.1.1/home.php?action=on&device=A3 Jarvis: Done ``` ## Author [alexylem](https://github.com/alexylem) Press [Enter] to continue
On voit ici qu’il nous faudra adapter les url suivant les spécifications de l’API Json de Domoticz et indiquer dans le tableau pg_hc_config le nom à prononcer et l’idx domoticz.
Modifiez les turnon_url et turnoff_url avec vos ip:ports Domoticz et l’appel à l’api JSON qui vous convient en laissant [ADDRESS] à l’endroit ou vous devez envoyer l’idx Domoticz.
Rappel : l’idx c’est cette colonne :
Faites les modifs via le menu « Config » du plugin « Home Automation » de Jarvis pour obtenir quelque chose comme :
pg_hc_turnon_url="http://192.168.1.81:8080/json.htm?type=command¶m=switchlight&idx=[ADDRESS]&switchcmd=On" pg_hc_turnoff_url="http://192.168.1.81:8080/json.htm?type=command¶m=switchlight&idx=[ADDRESS]&switchcmd=Off" pg_hc_config='{ "devices":[ { "name": "lumière", "address": "112"}, { "name": "Volet cuisine", "address": "33"}, { "name": "volet salon", "address": "34"} ]}'
Ou 192.168.181:8080 est mon Domoticz, lumière et 112 , le nom et l’idx de la lumière , volet cuisine, 33 …
En prononçant « allume lumière » on ira donc activer l’idx 112 de Domoticz via « pg_hc_turnon_url »
N.B Les plugins sont dans le dossier plugins, il y a un sous dossier par plugin, puis dans celui ci un readme.md qui donne quelques explications au sujet du plugin , puis des dossiers /fr ou /en ou se situent les commandes dans la langue correspondante. Ce sont des fichier texte bash. Vous pouvez agir directement sur ces fichiers. La modification est immédiate, pas besoin de relancer Jarvis sauf si vous avez changé un mot à reconnaitre..
Je vous conseille de prendre des mots vraiment discriminants , par exemple , la reconnaissance du mot « volets » donne souvent le verbe « voler » et donc la phrase « ouvre voler salon » n’existant pas …
alexylem vient de me préciser que en utilisant « vole » tout simplement (la comparaison vérifie si le nom du device est « inclue » dans la commande reçue) cela devrait fonctionner.
Et comme les plus perspicaces d’entre vous auront remarqué qu’il faut dire « Allume volet salon » ou « éteint volet salon » ce qui peut paraitre bizarre nous verrons prochainement comment améliorer cela en ajoutant les mots « Ouvre » et « Ferme ».
Un petit film de présentation ici