J’ai un scenario contenant des blocs « Boucle » (DE 1 à n fois) voir exemple ci-après >>
(C’est une « parade » sur un pb de retour d’état d’un module z-wave)
Bonjour,
En gros ce que tu souhaites c’est l’implantation d’un break.
Sujet déjà abordé, non, ça n’existe pas.
Un moyen de contourner cette absence est de passer par un bloc code puisqu’en php ça existe.
Ou alors extraire ce bloc BOUCLE dans un scénario dédié qui sera lancé par ton scénario existant
ou laisser ta boucle tourner 4 fois … en fait on s’en fiche
rajoute juste un SI en début de boucle ainsi si déjà allumé tu skip le reste et tu vas boucler bcp plus vite sans attendre et sans envoyer 4 fois le ON
J’ai créer un scenario « esclave » avec les blocs exclusivement pour gérer le M/A que j’active dans le scenario maitre avec les tags « on » et « off »
Pour éviter les itérations je souhaite arrêter ce scenario sur conditions valides (Boucle SI)
Oui mais ce n’est pas pareil.
Si tu as des choses à faire après ta boucle, avec un stop ça ne pourra pas s’exécuter sauf à encapsuler cette boucle dans un autre scénario.
A vrai dire, je n’ai plus suivi les évolutions de ce sujet.
La question initiale étant « peut-on faire des break au sein d’une boucle ? » en y ayant répondu, j’imaginais que le sujet devait être clôturé.
Manifestement, ce n’est pas le cas.
Je découvre de mon côté une fonction. C’est moi qui lui avait conseillé de faire un scénario stop.
Merci !
Par contre contrairement à la réponse ci-dessous un scénario /stop à la place d’un stop fonctionne (sur un scénario en multi lancement je précise au cas où ça aurait un impact) …
tu peux le faire depuis un autre scénario, mais pas sur le scénario actuellement en cours lui-même !
c’est pour ca que j’ai proposé à @Dadou de modifier le dernier scénario présenté en remplaçant l’appel au même scénario -> arrêter, juste par l’action stop
le statut Erreur devrait disparaitre avec cette modif
Non non chez moi ça marche dans scénario pour un ask. Mais en multi lancement.
C’est un scénario tout neuf donc j’avais fait des tests spécifiques.
Mais je joue pas avec le feu j’ai donc remplacé avec un stop
Dernière ligne (le scénario s’appelle « Ask Fermeture Porte Garage_En_Modif_2portes ») :
[2021-01-21 13:49:53][SCENARIO] Start : Lancement provoque par le scenario : [Aucun][Aucun][TEST NOTIF GARAGE]. Tags : {"#porte_garage_ouverte#":"droite"}
[2021-01-21 13:49:53][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-01-21 13:49:53][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-01-21 13:49:53][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-01-21 13:49:53][SCENARIO] Evaluation de la condition : [0 == 0] = Vrai
[2021-01-21 13:49:53][SCENARIO] Exécution du sous-élément de type [action] : then
[2021-01-21 13:49:53][SCENARIO] Changement de [Technique][Variables][Ask_En_cours] à 1
[2021-01-21 13:49:53][SCENARIO] Exécution d'un bloc élément : 1003
[2021-01-21 13:49:53][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-01-21 13:49:53][SCENARIO] Evaluation de la condition : ["droite" == "droite"] = Vrai
[2021-01-21 13:49:53][SCENARIO] Exécution du sous-élément de type [action] : then
[2021-01-21 13:49:53][SCENARIO] Changement de [Technique][Variables][Ask_En_cours] à 1
[2021-01-21 13:49:53][SCENARIO] Demande {"title":"La porte <b>droite du garage<\/b> est ouverte alors qu'il est tard. Voulez-vous la refermer ? OUI\/NON\/REDEMANDE","message":"La porte <b>droite du garage<\/b> est ouverte alors qu'il est tard. Voulez-vous la refermer ? OUI\/NON\/REDEMANDE","answer":["OUI","NON","REDEMANDE"],"timeout":"600","variable":"r\u00e9ponse_porte_garage"}
[2021-01-21 13:50:04][SCENARIO] Start : Lancement provoque par le scenario : [Aucun][Aucun][TEST NOTIF GARAGE]. Tags : {"#porte_garage_ouverte#":"gauche"}
[2021-01-21 13:50:04][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-01-21 13:50:04][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-01-21 13:50:04][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-01-21 13:50:04][SCENARIO] Evaluation de la condition : [1 == 0] = Faux
[2021-01-21 13:50:04][SCENARIO] Exécution du sous-élément de type [action] : else
[2021-01-21 13:50:04][SCENARIO] Exécution d'un bloc élément : 1005
[2021-01-21 13:50:04][SCENARIO] Exécution du sous-élément de type [condition] : in
[2021-01-21 13:50:04][SCENARIO] Evaluation de la condition : [1] = 1
[2021-01-21 13:50:04][SCENARIO] Tâche : 1005 programmée à : 2021-01-21 13:51:04 (+ 1 min)
[2021-01-21 13:50:04][SCENARIO] Arrêt forcé du scénario : Ask Fermeture Porte Garage_En_Modif_2portes
[2021-01-21 13:50:29][SCENARIO] Réponse OUI
Bonjour !
Merci pour vos retours ! La solution a été donnée.
Je résume à partir de mon exemple :
J’ai créé un scenario « appelé » (Esclave) gérant uniquement les Cdes de M/A (Déclanchées sur Tags depuis le scenario « appelant ») contentant les boucles De (1 à N). Sur conditions valides , on utilise Stop.La commande Action : scenario | Nom du scenario | Arrêter ne fonctionne pas !