Commandes vocales via Jarvis : adaptations

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 pluginRésultat de recherche d'images pour "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
  1. Dupliquez tout ce que contient le fichier, à savoir  la fonction pg_jc_turn. On a donc 2 blocs identiques.
  2. 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
  3. Sur la 4eme ligne modifiez pour appeller « pg_hc_ferme_url « et « pg_hc_ouvre_url »
  4. 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.
  1. 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&param=switchlight&idx=[ADDRESS]&switchcmd=On"
pg_hc_turnoff_url="http://192.168.1.81:8080/json.htm?type=command&param=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&param=switchlight&idx=[ADDRESS]&switchcmd=On"
pg_hc_ferme_url="http://192.168.1.81:8080/json.htm?type=command&param=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 🙂

jarvis_logo_red

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz.