Cet article est la suite de https://easydomoticz.com/commandes-vocales-via-jarvis/ qui expliquait comment causer à notre Raspberry pour piloter Domoticz.
Cet article se concluait par le fait de dire « Allume store cuisine » était étrange et donc voyons ici comment ajouter un peu de vocabulaire au plugin « Home Automation » en lui apprenant à reconnaitre « Ouvre » « Ferme » qui sera utilisable par les volets/stores.
2 solutions sont possibles :
- soit changer les phrases de reconnaissances (merci à alexylem pour son aide)
- soit la modif du plugin lui même.
Changer les motifs de reconnaissance vocale
Il suffit de rajouter un nouveau mot dans les commandes vocales reconnues :
Adaptations du plugin
Technique un peu plus compliquée que celle ci-dessus, elle permet de rentrer dans le moteur de Jarvis, les geeks apprécieront.
Rendez vous dans /home/pi/jarvis/plugins/jarvis-home-control
- Puis dans /fr et ouvrez le fichier commands
Ajoutez à la fin du fichier ces nouvelles instructions :
*OUVRE*==pg_jc_ouvre on "$order" && say "Voilà c'est ouvert ou quasiment parce que tout ça on dirait pas mais ça prends du temps, c'est pas toi qui bosse" *FERME*==pg_jc_ouvre off "$order" && say "La fermeture est en cours comme tu l'as demandé,il faut patienter un peu"
Les mots « Ouvre » et « Ferme » appellent maintenant un « pg_jc_ouvre » puis prononcent la phrase indiquée dans say.
- Ouvrez le fichier functions.sh
- Dupliquez tout ce que contient le fichier, à savoir la fonction pg_jc_turn. On a donc 2 blocs identiques.
- Comme on a décidé d’appeler la fonction « pg_jc_ouvre » ( regardez juste ci-dessus ). Renommez la première ligne en pg_jc_ouvre
- Sur la 4eme ligne modifiez pour appeller « pg_hc_ferme_url « et « pg_hc_ouvre_url »
- Sur les lignes 14 et 19 on appelle « $pg_hc_config », j’ai décidé de mettre mes stores dans « $pg_hc_volets » je corrige donc ces 2 lignes pour appeler « $pg_hc_volets »
pg_jc_ouvre () { # $1: action [on|off] # $2: received order [ "$1" == "off" ] && local url="$pg_hc_ferme_url" || local url="$pg_hc_ouvre_url" local -r order="$2" while read device; do echo $order if [[ "$order" =~ .*$device.* ]]; then local address="$(echo $pg_hc_volets | jq -r ".devices[] | select(.name==\"$device\") | .address")" echo $address curl -s -o /dev/null "${url//\[ADDRESS\]/$address}" return 0 fi done <<< "$(echo $pg_hc_volets | jq -r '.devices[].name')" return 1 }
j’ai mis echo $order et echo âddress pour debugger.
- Ouvrez maintenant le fichier config.sh juste dans home-automation.
- Dupliquez tout son contenu puis modifiez le nom des variables que nous avons définies à l’étape précédente : à savoir : « pg_ouvre_url » , « pg_ferme_url » et comme je voulais avoir ma liste des volets dans la variable pg_hc_volets, le fichier devient :
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": "extérieur", "address": "113"}, ]}' pg_hc_ouvre_url="http://192.168.1.81:8080/json.htm?type=command¶m=switchlight&idx=[ADDRESS]&switchcmd=On" pg_hc_ferme_url="http://192.168.1.81:8080/json.htm?type=command¶m=switchlight&idx=[ADDRESS]&switchcmd=Off" pg_hc_volets='{ "devices":[ { "name": "Volet cuisine", "address": "33"}, { "name": "store salon", "address": "34"} ]}'
Il est fort probable que les mises à jour des plugin Jarvis effacent ces fichiers, sauvegardez les avant de faire ces mise à jour.
Et voila Jarvis comprends maintenant « Ouvre volet cuisine », « Ferme volet salon ».
N’hésitez pas à y supprimer les bavardages inutiles 🙂