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 :
Pour le allume / ouvre / démarre, on peut changer ca dans le plugin directement :
*ALLUME*|*DEMARRE*|*OUVRE*==pg_jc_turn on « $order » && say « Voilà«
Ainsi on pourra prononcer un de ces 3 mots pour allumer/démarrer/ouvrir nos équipements car la barre verticale | est un OU.
Simple et efficace.
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 🙂