J’ai créé 3 automations, commandées par 3 boutons poussoirs dans mon entrée, afin de gérer 3 positions différentes de mes volets (ouvrir tous, fermer tous, fermer certains).
Jusqu’ici pas de problème ça fonctionne.
Je voudrais éviter que des petites mains mettent le bazar en appuyant sur plusieurs boutons à la suite.
Pour ce faire je voulais ajouter comme condition, dans chacune des automations, le fait que l’attribut « current » des 2 autres soit bien à 0 (donc pas en cours de fonctionnement).
Sauf que cela ne tient pas compte du « delay » que j’ai ajouté à la fin de l’automation.
L’attribut « current » passe à 0 au départ du « delay » et non pas à la fin.
Comment puis-je faire pour que le statut « current » passe à 0 uniquement lorsque le « delay », qui est à la fin de l’automation, soit écoulé ?
Si j’ai bien compris ta problématique, tu veux inhiber les autres boutons pendant un certain temps.
il faut mettre les automatisations des autres boutons sur désactivé en appelant le service automation turn off,
mettre un délai puis réactiver les 2 automatisations par le service automation turn on
Je veux éviter que l’automation 2 soit lancée tant que la 1 n’est pas « totalement » terminée.
Par « totalement » j’entends la fin du délai que j’ai positionné en fin de l’automation.
Pour schématiser l’automation:
Action 1: déclenche un input_button
Action 2: delai de 2 minutes
En l’état actuel, l’attribut « current » de l’automation est à 1 jusqu’au début de l’action 2, donc je pourrais lancer une autre automation avant la fin des 2 minutes de délai.
Je voudrais que cet attribut reste à 1 jusqu’à la fin des 2 minutes.
J’ai bien pensé à la méthode que tu proposes, mais ça oblige à ajouter des actions (on et off) dans chacunes des automation.
Je trouvais plus simple de mettre une condition sur l’attribut « current ».
Si tu veux juste empêcher les autres automatisations de démarrer avant la fin des 2min, tU peux le faire toi même avec un input booléen que tu passes à true au début puis a false après ton délai. Et que tu viens tester dans toutes tes automatisations pour ne pas les lancer.
Autre solution, tu remplaces ton délai par un timer que tu lances en début d.automatisation et tu testes l’état ‘actif’ du timer qui correspond à ton ‘current’ tel que tu le décris pour ‘inhiber’ les autres automatisations.
Si tu veux mémoriser le déclencheur de la 2ème automatisation et lancer les actions après le délai, c’est un peu plus complexe, mais le même principe peut marcher.
Autre solution, tu ne crées qu’un seul automatisme en utilisant les ID et la fonction choose, avec un mode single. je m’explique
tu mets tes 3 déclencheurs (boutons) avec chacun un ID (ex bouton 1, bouton 2, bouton 3)
voir les trois points à droite de chaque déclencheur.
dans Action tu choisis la fonction choose (choix)
et tu mets à chaque choix (ici 3)
condition : déclenché par son ID
Action: séquence que tu souhaites avec un délai.
l’automatisme doit être en mode single, il ne pourra redémarrer qu’à sa fin complète pour toi au bout du délai.
A tester, bien sur, cela devrait répondre à ton souci de simplification