Ouvrez vos volets grâce à votre réveil.

Hello,

Dans la série, « je suis fainéant et je veux tout automatiser », un petit tuto concret sur comment ouvrir ses volets quand vous acquittez votre réveil le matin (ou l’aprem pour les gros fainéants :)).

On va commencer par les prérequis parcque oui il y en a ! Vous devez avoir :

  • Un téléphone Android.
  • L’application Tasker d’installée.
  • Utiliser votre téléphone comme réveil.
  • Une box domotique qui vous permet de contrôler vos volets.
  • Une box domotique avec une API permettant de lancer des scénarios via HTTP.

Vous vous en doutez mais pour la suite du tuto, on se basera sur la box Jeedom.

Configuration Jeedom.

Comme indiqué en prérequis, je pars du principe que vous pouvez déjà contrôler vos volets depuis Jeedom. On va donc construire un scénario qui va lancer l’ouverture de tous les volets (ou juste ceux que vous voulez ouvrir…). Ce scénario s’exécutera uniquement sur déclenchement. On peut difficilement faire plus simple :

Sauvegardez le tout et retenez juste l’ID, on l’utilisera juste après.

Il faut également que vous récupériez votre clé API de Jeedom. On la trouve dans le menu configuration (la roue crantée en haut à droite). Attention il faut être en mode expert pour qu’elle s’affiche (en haut à droite dans Jeedom, cliquez sur le petit bonhomme) :

Copiez la clé quelque part.

Çà va peut-être vous surprendre mais c’est tout pour Jeedom. Cela dit avant de se lancer dans la configuration de Tasker, on va juste voir comment appeler un scénario via l’API Jeedom. En effet Jeedom nous permets d’exécuter un scénario via une URL, en l’occurrence :

http://<IP_JEEDOM>/core/api/jeeApi.php?apikey=<CLE_API>&type=scenario&id=<ID>&action=<ACTION>

  • IP_JEEDOM : L’ip (ou le nom) du serveur Jeedom.
  • CLE_API : La clé qu’on a affiché juste avant.
  • ID : L’ID du scénario.
  • ACTION : peut prendre les valeurs « start » (celui qui nous intéresse), « stop », « désactiver » ou « activer ».

En remplaçant ce qui va bien vous devriez avoir un truc du genre :

http://192.168.1.200/core/api/jeeApi.php?apikey=eABTLPkefsFTtBv1dx2LhKPjTI06iZaas0Okt2mxxwimFK1dF&type=scenario&id=20&action=start

PS : Si vous avez installé jeedom via un script, il est possible que vous ayez un répertoire « /jeedom/ » à ajouter dans l’url, qui deviendrait un truc genre : https://192.168.1.200/jeedom/core….

Si vous testez l’url dans votre navigateur, ça devrait lancer le scénario et donc ouvrir vos volets. On est prêt pour la suite 🙂

Pour ceux qui voudrait plus de détails sur l’API Jeedom, je vous invite à lire cette page.

Configuration Tasker.

Je ne vais pas revenir sur l’utilisation de Tasker et vous invite à lire cet article si vous n’êtes pas familier avec.

Maintenant qu’on a l’URL qui nous permet d’ouvrir tous les volets, le but du jeu va être de créer une tâche Tasker qui va lancer cette URL et un déclencheur (l’acquittement du réveil), qui va exécuter la tâche.
Vous n’êtes pas obligé de faire comme moi mais pour me faciliter la vie et éviter de retaper cette URL (et surtout la clé API…) plein de fois (car oui j’utilise plein d’autres tâches qui font appel à l’API), j’utilise des variables. Attention, pour configurer des variables, vous devez désactiver le mode débutant dans Tasker (Préférences >> IU >> Mode débutant). Voici celles que j’ai configuré :

Et maintenant allez dans l’onglet « tâche » pour en créer une nouvelle ! Je l’ai appelé « Ouvrir_tous_les_volets » car c’est ce qu’elle va faire 🙂

Pour rappel, on veut juste qu’elle exécute une URL, ajoutez donc une action et cherchez « get » pour récupérer l’action « Get HTTP » :

Il ne reste plus qu’à remplir la requête avec les bonnes variables. L’ID et l’action sont définies à la main :

Serveur:Port : Correspond à l’adresse IP (ou au nom) de votre serveur et son port si besoin.
Chemin : Correspond au chemin de l’url pour l’API.
Attributs : Correspond au paramètres que vous voulez envoyer. Il suffit de les renseigner à la suite (pas besoin du signe « & ») avec la logique « clé=valeur ».

Vous pouvez laisser le reste par défaut. Maintenant il ne nous reste plus qu’à créer notre profil Tasker et lui associer la tâche que l’on vient de créer. Ajoutez un « profil » puis cherchez « réveil effectué » (l’accent est important) dans « événement »

Laissez la priorité par défaut, vous avez juste à revenir :

On vous demandera de choisir la tâche à associer, choisissez bien évidemment celle qu’on vient de créer qui va nous ouvrir les volets :

Et voilà, on a quelque chose de fonctionnel, vous pouvez faire le test ! Faites sonner votre réveil et quand vous l’arrêterez, ça devrait vous ouvrir les volets.

Bon OK ça fonctionne mais je suis d’accord avec vous, c’est encore perfectible. En effet si vous l’utilisez tel quel, vous risquez d’être confronté à des exceptions ou des cas non prévus. Je vais donc vous présenter ceux que j’ai rencontré et surtout comment je les ai contournés.

Toujours plus loin, toujours plus fort !!

Vous ne dormez pas seul.
Il se peut, et c’est mon cas, que vous ne dormiez pas seul et que votre moitié (voir votre 3/4 quand il s’agit de place dans le lit…) ne se lève pas en même temps que vous. Et bien sûr il ou elle ne veut donc pas que le volet se lève histoire de continuer à dormir. Il va donc falloir rajouter un élément de présence pour savoir si vous êtes seul ou pas. Je précise qu’elle travaille en équipe, d’où le fait que ça change souvent !
Pour ce faire je me base sur le wifi du téléphone. Je fais un ping vers son téléphone et :

  • Le ping répond : Elle est présente –> J’ouvre tous les volets sauf la chambre.
  • Le ping ne répond pas : Elle est absente –> J’ouvre tous les volets.

Je fais ça depuis Jeedom grâce au plugin « Network ». Vous ajoutez un objet par équipement à superviser. Il suffit de définir l’adresse IP à « tester » (celle du téléphone) et notre objet sera à « 1 » si le téléphone répond et « 0 » s’il ne répond pas :

J’ajoute donc la condition au scénario :

Je commence donc par vérifier la présence de son téléphone :

  • Si je suis seul : J’ouvre tous les volets.
  • Si je ne suis pas seul : J’ouvre tous les volets sauf la chambre.

C’est déjà mieux, mais c’est pas tout !

Ne pas ouvrir les volets quand il fait nuit.
Bon bah tout est dans le titre ! Effectivement, en hiver il est probable qu’il fasse encore nuit lorsque vous vous levez et du coup pas trop d’intérêt d’ouvrir les volets (hormis pour que votre voisin profite du spectacle lorsque vous vous habillez…). Du coup on va devoir récupérer cette information, à savoir s’il fait encore nuit ou pas. Plusieurs solutions existent mais la plus simple et fiable à mettre en place et de récupérer les heures de lever et coucher de soleil. Pour cela vous pouvez utiliser le plugin officiel « méteo » disponible sur le market.
Une fois que vous avez l’info, vous l’intégrer dans votre scénario pour que vos volets se lèvent uniquement si l’heure est supérieure à l’heure de lever de soleil. J’ai également rajouté une heure de fin au scénario genre à 12h00 car ça peut m’arriver de mettre une alarme dans la soirée en guise de rappel et ce serait con que ça m’ouvre les volets… :

Voilà vos volets ne pourront s’ouvrir que lorsqu’il fait jour.

Doucement mais surement.
Comme souvent, au fur et à mesure de l’utilisation de mes scénarios je rencontre des cas auxquels je n’avais pas pensé et celui là m’a laissé du fil à retordre.
Le réveil sonne, j’acquitte mon réveil, le volet s’ouvre… Super ! Oui, sauf qu’en été avec un grand soleil, ouvrir le volet d’un coup ça défonce les yeux !! Vous allez me dire bah t’as qu’à l’ouvrir à 30% seulement. Pas faux, sauf que quand la météo est capricieuse, en ne l’ouvrant que de 30% bah ça me donne plus envie de continuer ma nuit que de me lever !
Pour palier à ce problème l’idée qui m’est venu est d’utiliser les scènes de Tasker. Alors je ne vais pas vous faire un cours complet sur les scènes Tasker mais ce qu’il faut retenir c’est que cela permet de créer des interfaces visuelles très facilement avec des boutons (slider, checkbox, texte…). Et derrière chacun de ces boutons vous pouvez exécuter des actions, ensuite vous pouvez « appelez » ces interfaces depuis d’autres tâches Tasker. L’idée ici est donc d’exécuter une scène en même temps que l’acquittement du réveil, qui nous permettra d’arrêter la montée du volet.

 

On va commencer par créer la scène Tasker :

Depuis l’écran principal de Tasker allez dans l’onglet « Scènes » et ajoutez en une du nom que vous voulez. Vous arrivez sur un écran d’édition et de là vous pouvez ajouter des éléments (bouton, case à cocher, images, formes…). J’ai ajouté 2 boutons, 1 « STOP » qui arrêtera la monté du  et 1 « Quitter » qui quittera la scène (au cas ou vous laisser le volet s’ouvrir complètement). Le placement des boutons sur l’écran se fait relativement intuitivement grâce à votre doigt. Quand vous ajoutez un bouton, vous arrivez directement dans les paramètres de ce dernier, mais vous pouvez revenir à l’édition simplement via le bouton retour. Pour le moment contentez-vous de « jouer » avec l’éditeur afin d’avoir le rendu que vous voulez. Voilà ce que j’ai fais :

OK c’est dégueulasse mais si vous avez l’âme d’un artiste fait vous plaisir. Moi je voulais juste quelque chose de fonctionnel 🙂

Intéressons nous à la configuration de chacun des boutons maintenant. Pour rappel cette scène se lancera dès que l’on acquitte notre réveil :

  • STOP : Cela stoppera l’ouverture du volet et détruira la scène.
  • QUITTER : Cela ne stop pas le volet mais détruit juste la scène.

Pour stopper le volet, idem, on va faire appel à l’API de Jeedom mais il nous faut d’abord récupérer l’id de la commande qui permet de le stopper. Pour cela allez dans le menu « Outils >> Résumé domotique« . Cherchez l’objet concernant votre volet et déroulez le :

En cliquant sur les paramètres de la commande (roue crantée) qui nous intéresse (Stop) vous devriez avoir une autre fenêtre où figurera l’ID à récupérer :

Revenez donc à votre scène, et cliquez une fois sur le bouton « STOP » pour accéder à ses paramètres. Dans le premier onglet IU, vous retrouverez le libellé qui correspond au texte qui sera affiché :

Allez ensuite dans l’onglet « toucher » qui correspond aux actions à faire quand vous appuyez sur le bouton. L’interface se présente comme une tâche Tasker classique. Donc nous nous voulons stopper notre volet, cherchez donc de nouveau de quoi exécuter une requête « HTTP GET ». Sur le même principe que tout à l’heure, on va construire notre URL. Pour info, l’API pour exécuter une commande diverge un tout petit peu de l’URL pour exécuter un scénario :

http://192.168.1.200/core/api/jeeApi.php?apikey=eABTLPkefsFTtBv1dx2LhKPjTI06iZaas0Okt2mxxwimFK1dF&type=cmd&id=150

PS : La variable %Jeedom_type_cmd que j’utilise correspond au texte « type=cmd« .

Revenez à l’écran des actions « toucher » du bouton et rajoutez encore une action qui cette fois ci va « détruire » la scène. Bien entendu vous renseignez la scène que vous avez créé dans le champs « Nom » (utilisez la loupe qui vous listera les scènes disponibles) :

Voilà, vous devriez donc vous retrouver avec 2 actions pour le bouton STOP :

Maintenant il va également falloir définir un libellé et une action pour le bouton « QUITTER ». Sur le même principe, ce bouton devra uniquement détruire la scène :

Voilà votre scène est prête, il n’y a plus qu’à la lancer en même temps que vous acquittez le réveil, et ça se fera très simplement en éditant votre tâche Tasker que vous utilisez pour ouvrir les volets. Vous rajoutez une action « afficher la scène ».

Il faut afficher la scène en tant qu’activité (comme une application en gros) et vous pouvez décocher le fait afficher un bouton quitter car on a fait le notre :

Votre tâche qui ouvre tout vos volets doit ressembler à ça maintenant :

Ça y est ce tuto touche enfin à sa fin. Dans mon cas, cela suffit à couvrir l’ensemble des cas spécifiques.
Je vous encourage bien sûr à faire le test en faisant sonner votre réveil et à ajuster le scénario en fonction que vous découvrez des choses qui ne vont pas !

Si vous utilisez d’autres méthodes n’hésitez pas à m’en faire part en commentaire 🙂

1 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *