You are currently viewing Faire une demande (ask) avec Alexa pour votre domotique Jeedom

Faire une demande (ask) avec Alexa pour votre domotique Jeedom

  • Auteur/autrice de la publication :
  • Post category:Jeedom

Alexa ask,

Tags : Alexa; Alexa Api

Icone appartenant à https://www.flaticon.com/fr/icone-gratuite/discours-de-bulle_2490414

0.Contexte

Bonjour,

Aujourd’hui nous allons voir comment faire une demande (ask) avec Alexa. Cette fonction permet, à partir d’une routine ou d’un évènement sur Jeedom, de mettre Alexa en écoute sans la déclencher, afin qu’elle nous pose une question à choix variable et exécute une ou plusieurs actions en fonction de la réponse.

La réponse peut être Oui/Non, une couleur, un chiffre/nombre ou un mot.

À noter qu’on peut également utiliser l’absence de réponse comme déclencheur.

0.1 Exemples d’utilisations

0.1.1 : Exemple 1 Ask d’allumage au coucher

L”objectif de la domotique est l’anticipation des besoins sans attendre une action de l’utilisateur néanmoins il y a forcément des événements qui ne peuvent pas être anticipés. Alors, à partir de ces événements, j’utilise la fonction “Ask” pour que Alexa me demande si elle doit effectuer une action ou non. Par exemple, j’ai un projecteur dans notre chambre parentale que nous utilisons de temps en temps. Mon système domotique est assez avancé, capable de détecter qui est couché dans le lit et de connaître notre état de sommeil en temps réel (couché/endormi/réveillé). Cependant, être couché dans le lit n’implique pas nécessairement le besoin d’allumer le projecteur. Donc, au lieu d’automatiser cette tâche, lorsque nous nous couchons dans le lit, l’écho de la chambre nous demande : 

– Voulez-vous allumer le projecteur ? (si celui-ci est éteint) et on répond simplement “Oui/Non” (ou rien).

0.1.1 : Exemple 2 Ask d’extinction a l’endormissement

Prenez un autre exemple, toujours avec le projecteur (cette action est effectuée sur Jeedom). Au lieu de programmer une mise en veille automatique (qui nécessiterait d’appuyer sur la télécommande après un certain temps d’inactivité, et de chercher la télécommande partout), ou encore de programmer une extinction dans X minutes en vocale, lorsque le projecteur est allumé, toutes les 45 minutes, Alexa nous demande :

– Êtes-vous toujours réveillé ?

– Si on répond “Oui”, elle nous reposera la même question dans 45 minutes (si le projecteur est toujours allumé).

– Si on ne répond pas (parce que nous dormons), le projecteur s’éteint.

On peut également enchaîner les questions qui varient en fonction des réponses:

– Voulez-vous ouvrir le volet ?

-Oui

– À combien de pourcent ?

– 70

Etc. 

Non seulement on peut utiliser les réponses “Oui/Non”, un mot, une couleur, un nombre, etc., mais sur Jeedom (et exclusivement sur Jeedom ou Home Assistant) on peut aussi utiliser l’absence de réponse comme déclencheur d’actions, comme dans l’exemple ci dessus où la non-réponse indique que nous nous sommes endormis.

1.Procédure

La skill Voice Monkey est composée d’une version gratuite et d’une version premium à 2,99 $/mois.

La version gratuite est limitée à 3 flows (3 demandes ask), tandis que la version premium donne un accès illimité aux flows. Il existe une méthode qui permet de profiter de la fonction ask en illimité (en restant avec la version gratuite) grâce à Jeedom. La méthode consiste à créer qu’un seul flow (une question) qui mettra Alexa en mode écoute après avoir dit, par exemple “Que dois-je faire ?” ou “Dites-moi ?”, ainsi, vous pourrez créer vos différentes questions vous-même sur Jeedom avec la commande “Faire parler Alexa” du plugin Alexa API. Le seul inconvénient par rapport à la méthode officielle, c’est que la question paraîtra moins naturelle, par exemple, un scénario fait parler Alexa “Voulez-vous ouvrir le volet ?” ; ensuite, vous démarrez la question faite sur Voice Monkey. Alexa dira “Dites-moi ?” ou “Que dois-je faire ?” et une action sera exécutée en fonction de la réponse récupérée sur Jeedom.

1.1 Pour info

À noter qu’il existe 7 types de réponses qui sont : couleur, mot, lettres, numérique, allumer/éteindre, vrai/faux, oui/non. Puisque la version Free est limitée à 3 flows, vous ne pourrez utiliser que 3 types de réponses maximum, même avec la méthode pour utiliser les flows en illimité, car il est quand même nécessaire de créer un flow par type de réponse.Vous ne pourrez pas utiliser un flow configuré avec le type “oui/non” si la question faite sur Jeedom attend une réponse de type “couleur”.

2.Méthode avec la version premium Alexa ask

2.1 configuration de la routine

2.1.1 Installation skill voice monkey

Commencez par installer la skill Voice Monkey et identifiez-vous, la version Free permet d’utiliser 3 flows, pour plus, l’abonnement premium à 2,99 $/mois est nécessaire. La version premium propose d’autres fonctionnalités comme ouvrir une url (exemple: un dashboard jeedom) sur un echo show, jouer des fichiers audio et vidéo locaux ou provenant d’un site, afficher une image/photo ou un texte, envoyer ou recevoir des requêtes HTTP.

  • Allez sur le site de Voice Monkey : https://voicemonkey.io/ (vous pouvez traduire la page avec Google pour une meilleure compréhension),
  • Cliquez sur les trois petits traits en haut à droite
  • Allez sur le menu “Assets”,
  • Cliquez sur “Devices”,
  • Ajouter “Add a speaker”. *Cette étape obligatoire va créer un déclencheur virtuel qui ouvrira la skill Voice Monkey et permettra le fonctionnement des flows, même si vous n’ajoutez pas les autres échos, la fonction Ask sera lancée en routine sur l’écho de votre choix ou sur les appareils sur lesquels vous parlez.
Alexa ask

3. Cliquez sur “A single device”, donnez un nom au déclencheur virtuel, par exemple “Monkey cuisine”, puis cliquez sur “suivant”, Alexa ajoutera automatiquement un nouvel appareil (Ne faites plus rien).

2.1.2 Liaison Alexa

Allez dans l’application Alexa, créez une routine. Dans “Maison connectée”, sélectionnez le nouvel appareil “Monkey cuisine” comme déclencheur. En action, allez dans “Skill” puis ajoutez Voice Monkey. Pensez à bien mettre “l’appareil auquel vous parlez” à la fin de la routine. Ainsi, Alexa posera la question sur l’appareil auquel vous envoyez la commande “Parler à Alexa” via Alexa API sur Jeedom. Enregistrez la routine.

5. Retournez sur Voice Monkey, cliquez sur “Suivant”, vous entendrez une notification vocale sur l’écho que vous avez configuré dans la routine. Si c’est un écho avec écran (show ou autre), l’image d’un singe apparaîtra.

Alexa ask

6. Cliquez sur les trois traits en haut à droite, puis sur le menu “Flow”, puis sur “New flow”, donnez-lui un nom et cliquez sur “Add flow”.

7. Cherchez la case “Question Prompt”, cliquez sur “Add Action”, sélectionnez votre Monkey (celui créé précédemment pour la routine), écrivez la question qu’Alexa devra vous poser, puis dans “Answer Type” choisissez le type de réponse attendue (oui/non dans mon cas). Cliquez sur “Add Action”.

Votre question Alexa est configurée.

Il ne reste plus qu’à créer les actions qu’Alexa doit exécuter en fonction de la réponse. Vous pouvez contrôler un appareil Alexa en utilisant un “trigger de routine” (la documentation de Voice Monkey l’explique très bien) mais je vais continuer la procédure afin de contrôler directement un appareil ou un scenario sur Jeedom via les requêtes HTTP.

2.2 Creation web request

  • Cliquez sur le “+” à côté de la réponse “Oui”
  • Choisissez l’action “Web request”
  • Collez l’URL de la commande ou du scénario Jeedom à appeler (si vous répondez “Oui” à la question d’Alexa).
  • Faites de même pour la réponse “Non” (seulement si la réponse “Non” doit effectuer une action, autrement, il n’est pas nécessaire d’ajouter une action à cette réponse.. Par exemple, si Alexa vous demande d’ouvrir un volet et que vous répondez “non”, il ne s’ouvrira tout simplement pas.
  • Pour finir, enregistrez le flow.

Il ne reste plus qu’à configurer l’événement qui déclenche l’ask depuis Jeedom. Pour ce faire, il existe deux possibilités, la première étant avec le plugin Alexa API :

  1. Utilisez la commande “Parler à Alexa”.
  2. Ajoutez cette phrase : “Demande à Voice Monkey de démarrer le flow (nom de votre flow)”; qui s’appelle “demande moi d’allumer le projecteur”. Dans mon cas (j’ai mis cela en exemple pour montrer l’utilité du flow, mais mettez un nom plus court).
  3. Vous pouvez aussi créer une routine dans l’application Alexa, avec une phrase vocale quelconque comme déclencheur. (juste pour créer la routine qui sera exécutée depuis Jeedom). En action, sélectionnez “action personnalisée”
  4. Mettez la même phrase “”Demande à Voice Monkey de démarrer le flow (nom de votre flow)”. Vous pourrez lancer cette routine depuis le plugin Alexa API.
  5. Utilisez une requête HTTP pour exécuter le flow (la question) depuis Jeedom. Si vous n’avez pas le plugin Alexa Api (la documention de Voice Monkey l’explique très bien).

3.Méthode pour faire des demandes en illimité avec la version Free et pour utiliser l’absence de réponse comme déclencheur d’action.

Créer via la première méthode une question comme “Que voulez-vous faire ?” ou “Dites-moi ?” ou “Alors ?”.

(elle doit paraître naturelle car cette question sert à mettre Alexa en mode écoute, après avoir posé la véritable question).

Nous pourrions appeler une URL pour directement commander un équipement ou un scénario sur Jeedom

Nous allons plutot utiliser un virtuel qui va servir à remonter la réponse.

  • Créez un virtuel
  • Nommez-le “ask alexa”
  • nommez-le “ask alexa”
  • Ajoutez une commande info “Réponse”, une commande action “Oui” et une commande action “Non” . (l’info “réponse” doit être de type “autres” et non binaire, car les valeurs possibles seront : Oui, Non, ou Rien.
  • J’ai aussi ajouté la question à poser dans le virtuel (facultatif)

3.1 Exemple de virtuel

vous pouvez lancer la question en scénario. J”ai préféré la regrouper dans le virtuel pour ne pas avoir à écrire la phrase “Parler à Alexa” pour chaque question que je crée. Notez que la question sera posée sur l’Echo auquel j’envoie la commande “Parler à Alexa”.

Dans la commande info “Réponse”, ajoutez une action sur la valeur si elle est différente de “Rien”. (C’est-à-dire que vous avez répondu Oui ou Non). Mettez un sleep de 14 secondes et un événement qui remet la valeur de la commande “Réponse” à “Rien”.

Explication : Lorsque Alexa est déclenchée, elle reste en écoute pendant 6 secondes. Elle se coupe en cas d’absence de réponse. Avec ask de Voice Monkey, en cas d’absence de réponse, la question vous sera posée une deuxième fois. Ceci donne un total de 12 secondes d’écoute en cas d’absence de réponse .

Je veux qu’elle me pose la question “Êtes-vous toujours réveillé ?”, la question en elle-même dure 2 secondes. Donc, si je veux utiliser l’absence de réponse comme déclencheur, 2 secondes (durée de la question) + 12 secondes d’écoute = 14 secondes.

Remarque : il n’est pas nécessaire de mettre à jour la commande info aussitôt que l’écoute d’Alexa est terminée. Vous pouvez très bien passer l’évent “Rien” 30 secondes après la réponse ou l’absence de réponse. Ainsi, en cas d’absence de réponse, l’action qui éteint le projecteur est effectuée aussitôt qu’Alexa met fin à l’écoute (elle n’attend plus de réponse).

3.2 Exemple Alexa ask

Prenons un exemple avec un scénario déclenché quand mon projecteur est allumé depuis plus de 45 minutes. La question “Êtes-vous toujours réveillé ?” est posée via la commande “Faire parler Alexa”. S’ensuit un sleep de 2 secondes pour lui laisser le temps de poser la question. La commande “Me demander” démarre le flow de Voice Monkey. Alexa dit “Dites-moi ?”. Si j’ai réponds “Oui” avant les 12 secondes (temps d’écoute totale d’Alexa), le scénario sera redémarré dans 45 minutes. Si je n’ai pas répondu avant 12 secondes (car je dors), alors le projecteur s’éteint car la valeur de la commande info était = à “Rien”.

Remarque : 14 secondes après avoir répondu “Oui”, la valeur de l’info “Réponse” passera à “Rien”. Ainsi, si je suis endormi lorsque le scénario redémarrera dans 45 minutes, alors le projecteur s’éteindra.

Un autre exemple pour allumer le projecteur lorsque nous nous couchons sur le lit. Alexa nous pose la question “Voulez-vous allumer le projecteur ?” avec un sleep de 3 secondes laisser le temps de poser la question. Le flow Voice Monkey démarre, un wait attend la réponse. Si on répond “Oui”, le projecteur s’allume immédiatement car la condition du wait sera validée avant le délai de 12 secondes. Si je réponds “Non” ou que je ne réponds pas, alors il ne se passe rien.

Conclusion

Personnellement, j’ai souscrit à l’abonnement premium de Voice Monkey. Afin d’obtenir des questions naturelles, sans avoir à jouer avec des “wait”. Si vous ne souhaitez pas payer la premium , je vous conseille de regrouper les actions à toutes vos questions dans un seul scénario . Jouer avec des tags ou des variables lorsque vous appelez une question.

Explication : au lieu d’utiliser des “wait”, utilisez la commande “Réponse”.Réponse en tant que déclencheur d’un scénario regroupera les actions de toutes vos questions.

Dans vos différents scénarios poseur de questions, affectez la valeur à un tag ou à une variable pour lancer un bloc spécifique à la question posée.

Dans un scénario qui demande “Voulez-vous allumer la lumière ?”, on affecte une variable variable_ask == lumière, dans un scénario qui demande “Voulez-vous fermer les volets ?”, on affecte la variable_ask == volets, etc.

De surcroît , lorsque vous allez répondre “Oui” ou “Non”, le scénario démarre, et selon la valeur de la variable (la question posée), cela déclenchera une action propre à la question.

Donc ce sont les réponses qui déclenchent directement le scénario et exécutent les actions, à l’inverse du “wait” qui attend une réponse.