On demande beaucoup de choses à notre Jeedom, mais si maintenant, c’était lui qui vous posait des questions ? C’est le principe de la fonction ASK que je vous propose aujourd’hui.
Pour aborder cette fonction, nous aurons besoin de JPI et son plugin que nous avons déjà vus dans plusieurs articles, dont le dernier Jeedom Paw Interface (JPI) APK et Plugin.
Selon votre installation, la fonction ASK peut être utilisée via le TTS, façon Jarvis, ou comme nous allons le voir dans l’article, par SMS.
Dans notre exemple, Jeedom nous demandera si on souhaite lancer l’aspirateur Mi-Robot de Xiaomi et nous pourrons lui répondre « Oui » pour lancer le nettoyage, « Non » pour qui ne fasse rien, « Rappel » pour qu’il nous repose la question dans quelques minutes. En cas de non réponse il ne fera rien.
Si vous n’avez pas de Mi-Robot de Xiaomi, le principe du scénario sera exactement le même pour toute autre question, comme par exemple :
- Dois-je éteindre les lumières ?
- Dois-je activer l’alarme ?
- Télé ou radio ?
- Dois-je passer en mode Absent ?
- C’est l’heure de #programme_tv#. Dois-je le lancer ?
Commandes de JPI
Avant de commencer le scénario, nous allons créer 2 commandes dans le plugin JPI :ASK et SMS.
- Aller dans JPI.
- Sélectionner le téléphone qui enverra les SMS (Nécessite une carte SIM GSM.)
- Dans l’onglet Commandes, cliquer sur « Assistant de commande JPI« .
- Nom : ASK ou SMS. J’ajoute mon prénom après le nom de la commande, pour pouvoir en faire une par membre de la famille.
- Action : sendSms.
- Number : Le numéro de téléphone du destinataire.
- AskData : jeedomJPI. Pour la commande ASK il faut ajouter cette variable pour que JPI sache que le SMS envoyé attend une réponse.
- Sauvegarder.
- Changer le type de la commande « Défaut » par « Message« .
- Sauvegarder.
Si vous n’avez pas modifié les réglages par défaut du scénario « Réponses aux ASK » de l’APK de JPI sur le téléphone, vous devriez avoir en face de ASK_DATA, la variable : jeedomJPI que nous avons saisi plus tôt.
Voila pour les réglages de JPI, maintenant on passe au scénario.
MODE DU SCÉNARIO = PROVOQUÉ ou Programmé.
Le scénario sera, dans mon cas, provoqué par un autre scénario, en fonction de la présence, ou plutôt, de l’absence pour être précis. (Un article est en cours de rédaction sur « La gestion de la présence ».) Vous pouvez donc provoquer le scénario comme bon vous semble, en fonction de vos besoins.
ACTION : ASK
Pour commencer, il faut sélectionner la commande ASK.
- Cliquer sur : Ajouter un bloc.
- Sélectionner : ACTION.
- Enregistrer.
- Cliquer sur : Ajouter.
- Sélectionner le mot clé : Faire une demande.
Question : Voulez-vous que je lance l’aspirateur ?
La forme de la question n’a pas d’importance pour le bon déroulement de la fonction ASK.
Réponse : Oui;Non;Rappel
Le champ réponse permet de connaître les options disponibles lors de l’envoi du SMS de réponse. Ces réponses seront entre parenthèses après la question.
Variable : AspiAsk délais : 300 sec (5 minutes.)
- La variable sera utilisée pour interpréter la réponse à la question dans le scénario. La réponse ne tient pas compte de la casse, vous pouvez, ou pas, mettre des majuscules aux réponses.
- Le délais, en secondes, permet de renvoyer « Aucune réponse » en cas de non réponse. J’ai choisi de mettre 300 secondes (5 minutes), car si la question est envoyée lorsque je pars de chez moi, je ne veux pas devoir me dépêcher à répondre lorsque je suis au volant.
Commandes : #[Hardware][ARCHOS JPI][ASK Guillaume]#
Pour finir de paramétrer l’action, il faut sélectionner la commande ASK, créé précédemment dans le plugin JPI.
Cette commande va envoyer un SMS avec la question et attendre une réponse.
Voila pour la première partie du scénario.
Maintenant, nous allons voir comment activer les commandes en fonction des réponses.
Le principe, c’est de faire un bloc pour chacune des réponses qui seront envoyées par SMS « Oui, Non, Rappel » et « Aucune réponse » qui sera générée automatiquement à la fin du TimeOut saisi dans le délais de la variable.
SI variable(AspiAsk) == »oui » ALORS
Commande : #[Hardware][ARCHOS JPI][SMS Guillaume]# Message : Ok c’est parti pour le nettoyage.
Commande : #[Cuisine][Mi-Robot][Démarrer]#
Si le scénario reçoit la réponse « oui« , alors on envoie un SMS pour confirmer la prise en compte de l’information, puis on lance la commande pour démarrer l’aspirateur Robot.
SINON SI variable(AspiAsk) == »non » ALORS
Commande : #[Hardware][ARCHOS JPI][SMS Guillaume]# Message : Ok pas de nettoyage aujourd’hui.
Si le scénario reçoit la réponse « non« , alors on envoie un SMS pour confirmer la prise en compte de l’information et on s’arrête là.
SINON SI variable(AspiAsk) == »rappel » ALORS
Commande : #[Hardware][ARCHOS JPI][SMS Guillaume]# Message : Ok je lance un rappel dans 15 minutes.
DANS 15 FAIRE
Scénario : #[Appartement][ASK][Aspirateur JPI]# Start
Si le scénario reçoit la réponse « rappel« , alors on envoie un SMS pour confirmer la prise en compte de l’information et 15 minutes plus tard, on relance le scénario et on recevra à nouveau la question.
SINON
Commande : #[Hardware][ARCHOS JPI][SMS Guillaume]# Message : Sans réponse je ne lance pas l’aspirateur.
Dans les cas ou on ne réponds pas, ou qu’on envoie une réponse qui ne fait pas partie des réponses traitées, alors on envoie un SMS pour être informé.
Exemple de LOG
Demande
[message] => Voulez-vous que je lance l'aspirateur ?
[timeout] => 300
[variable] => AspiAsk
Réponse oui
if ["oui" =="oui"] = Vrai
[Hardware][ARCHOS JPI][SMS Guillaume] [message] => Ok c'est parti pour le nettoyage.
[Cuisine][Mi-Robot][Démarrer]
Fin correcte du scénario
------------------------------------
Demande
[message] => Voulez-vous que je lance l'aspirateur ?
[timeout] => 300
[variable] => AspiAsk
Réponse non
if ["non" =="oui"] = Faux
else
if ["non" =="non"] = Vrai
[Hardware][ARCHOS JPI][SMS Guillaume] [message] => Ok pas de nettoyage aujourd'hui.
Fin correcte du scénario
------------------------------------
Demande
[message] => Voulez-vous que je lance l'aspirateur ?
[timeout] => 300
[variable] => AspiAsk
Réponse rappel
if ["rappel" =="oui"] = Faux
else
if["rappel" =="non"] = Faux
else
if ["rappel" =="rappel" ] = Vrai
[Hardware][ARCHOS JPI][SMS Guillaume] [message] => Ok je lance un rappel dans 15 minutes.
Tâche : programmé + 15 min
Fin correcte du scénario
------------------------------------
Demande
[message] => Voulez-vous que je lance l'aspirateur ?
[timeout] => 300
[variable] => AspiAsk
Réponse Aucune réponse
if ["Aucune réponse" =="oui"] = Faux
else
if ["Aucune réponse" =="non"] = Faux
else
if ["Aucune réponse" =="rappel" ] = Faux
else
[Hardware][ARCHOS JPI][SMS Guillaume] [message] => Sans réponse je ne lance pas l'aspirateur.
Fin correcte du scénario
Conclusion
La fonction ASK apporte beaucoup de possibilités. A vous maintenant de l’adapter à vos besoins, sans en abuser. Personnellement j’utilise les ASK seulement dans mes scénarios d’absence.
Sachez que pour pouvoir lancer plusieurs ASK en même temps, il faudra faire quelques modifications au niveau de JPI (APK) ou du scénario. On peut par exemple faire une variable ASK_En_Cours qui sera testée au début de chaque scénario ASK, avec un Wait jusqu’à ce que la variable soit vide.
Voilà pour la fonction ASK avec le plugin JPI, mais si vous utilisez le plugin Script, vous ne pourrez pas utiliser la fonction ASK des scénarios. Mais il est possible d’adapter le scénario, c’est ce que nous verrons dans un prochain article.
Si vous avez des idées de déclinaisons, d’optimisations ou des remarques, n’hésitez pas à laisser un commentaire.
Pour info en ce moment (08/12/2017) le Mi-Robot de Xiaomi est en vente flash à 266,15 € depuis l’entrepôt européen. (Livraison en 2 à 7 jours)
Bonjour, excellent tuto, hate de pouvoir essayer, ma carte sim arrive demain ! J’ai un léger problème, je suis incapable de trouver ou modifier JPI en rapport avec ce passage de votre guide : Si vous n’avez pas modifié les réglages par défaut du scénario « Réponses aux ASK » de l’APK de JPI sur le téléphone, vous devriez avoir en face de ASK_DATA, la variable : jeedomJPI que nous avons saisi plus tôt.
Pourrais-je avoir un peu plus de détails s’il vous plait ?
Bonjour,
C’est dans jpi sur le smartphone qu’il faut aller dans la partie de gauche dans scénario SMS.
Je ne suis pas chez moi si vous ne trouvez pas n’hésitez pas à me relancer je regarderai le chemin exacte.
Je viens d’aller vérifier c’est parfait merci de votre réponse. Il semblerait que dans JPI dernière version tout soit déjà en ordre, je n’ai rien eu à modifier.
Je suis vraiment content d’être tombé sur votre article, je cherche désormais à trouver un moyen d’envoyer ces requêtes ASK sur 2 numéros différents, Madame et moi, un conseil ? Pardonnez-moi d’abuser de votre savoir !
Bonjour, désolé je n’avais pas vu le message.
Je n’ai pas essayé mais je pense que oui et la première personne qui répond déclenche le scénario.
Bonjour,
J’ai lu votre tuto avec beaucoup d’intérêt mais, bien qu’ayant la dernière version (0.972), j’ai le même problème rencontré par Julien. J’ai beau regarder sur la partie gauche, j’ai bien les menus : Configuration, Evénements/scénarios, Journaux, Outils, Divers, mais dans aucun d’eux je ne trouve « scénarios SMS ».
Si vous pouviez m’éclairer, j’en serais bien content !
Bonjour,
Désolé pour le délai de réponse.
J’ai modifié l’image en espérant que se soit plus clair :
Bonjour et merci pour ce complément d’information.
bonjour
est-il possible de faire varier dynamiquement le numero de tel da la commande JPI ask en y mettant une variable par exemple : number=variable(numero1)
merci
Bonjour et merci pour ce super tuto.
Je voudrais l’adapter chez moi mais je ne sais pas trop comment m’y prendre.
Je voudrais que ma tablette où est installé JPI me pose oralement la question « Dois-je allumer la TV ? » dès que je rentre chez moi (j’ai un détecteur de mouvement à l’entrée de chez moi et c’est lui qui modifie le Mode « présence » de absent à présent).
De plus, j’utilise dans Jeedom le plugin Script et apparemment, d’après vos dire, il y aurait des problèmes à l’utilisation de la fonction « ASK » dans les scénarios :
« Voilà pour la fonction ASK avec le plugin JPI, mais si vous utilisez le plugin Script, vous ne pourrez pas utiliser la fonction ASK des scénarios. Mais il est possible d’adapter le scénario, c’est ce que nous verrons dans un prochain article. »
Est-ce que vous avez déjà publier le « prochain article » ?
Merci d’avance.
Bonjour encore une fois un excellent tutot par contre est qu’il existe une solution pour avoir le meme type de commande mais avec un iPhone et est qu’il est possible de faire envoyer le sms via Internet pour éviter une carte SIM supplémentaire.
merci pour ton retour
Re bonjour,
Je n’ai plus d’iphone du coup je ne sais pas si il y a des applis de géolocalisation. Je sais que l’application jeedom permet de le faire mais les quelques tests que j’ai fait n’étaient pas concluant.
Pour les SMS il n’y a pas de solution non plus a ma connaissance. Si vous avez un abonnement chez free pour votre portable ou quelqu’un de votre famille il y a le plugin free mobile sms qui permet d’envoyer des SMS sans carte sim supplémentaire. Perso j’ai un abonnement Free a 2€ et ça marche bien. Je peux même recevoir un appel en cas d’urgence comme le déclenchement de l’alarme.
Bonne soirée.
Guilaume.
Bonjour,
j’envoie bien le message, JPI reçois nom message « oui » mais jeedom ne répond pas, j’ai beau chercher je ne trouve pas le problème, pourtant j’ai suivi votre tuto a la ligne.
Jean
Bonjour,
Il faut voir si le scénario est provoqué par jpi.
Il y a des log dans jpi, il fait voir si le lien est bien envoyé et si il y a un message d’erreur.
Il y a aussi des log dans jeedom pour les requêtes reçu, il faut voir si jeedom reçois la réponse.
Vous pouvez aussi essayer de coller l’adresse dans un navigateur pour voir se qu’il se passe.
Rebonjour,
je ne comprends pas la phrase : Pour finir de paramétrer l’action, il faut sélectionner la commande ASK, créé précédemment dans le plugin JPI. Ainsi que le la variable JeedomJPI.
Merci d’avance
Bonjour,
Ça correspond a la dernière commande de l’action Ask en haut de la photo.
Image du scénario