Actions d'un scenario non effectuées -> boucle tant que?

Bonjour A tous,
J’avais posté une demande d’aide au mois de juin car mon scenario de fermeture de la maison (dont 15 volets roulants, 40 actions au total avait des résultats aléatoires, certains volets restaient ouverts, pas toujours les mêmes et pas systématiquement.

Réponse logique de la communauté : créer des blocs, mettre des points d’attente pour éviter que le plugin ZWAVE ne sature.
Ce que j’ai fait, j’ai mis des sleep allant jusqu’a 10s entre chaque commande mais toujours le même résultat.

du coup, je ne vois qu’une seule solution, une boucle tant que… qui n’existe pas en tant que telle.
Tant que mon état de volet roulant est > 10 (Le volet est fermé à 0)
commande « bas » du VR
attente Xs (minimum le délai de fermeture)
on recommence

J’ai pensé à une alternative :
Si je créé un scénario par volets roulant VR dans ce genre la :


Mais n’y a t’il pas un risque à ce qu’un scénario se relance lui-meme ?

Merci de votre aide

Bonjour,

Dans ce cas-ci, utiliser un wait plutôt qu’un sleep, au moins l’attente sera interrompue plus tot si le volet est déjà en position.

Ceci dit, je ne comprend pas ce que vous faites:

il y a 2 tests identiques: si > 10

  • le premier vous démarrer le scénario; lui même donc on suppose?
  • le deuxième vous l’arreter?

Bonjour,

Concernant ton palliatif, en soit ca peut fonctionné bien sur j’aime toujours essayé de trouver la source du problème plutôt que des faire des palliatifs …
Peux-tu m’envoyer le scénario originel avec les logs associés pour essayer de comprendre la source du problème ?
si tu veux vraiment arrêter d’investiguer sur le problème initial alors

Non sauf si le scénario est en mode synchrone !

Propals d’amélioration :

  • attention dans le dernier SI tu as mis >10 et non <=10 pour arrêter ton scénario
  • Il faut aussi de mémoire sélectionner le multi-lancement dans l’onglet général sinon cela ne fonctionnera pas
  • si tu veux que tes volets descendent complètement, mets plutôt SI…[VR][etat] == 0
  • au lieu de Sleep, utilise plutôt un wait avec comme condition …[VR][etat] == 0 et un time-out de 15s (pour optimiser le code et les ressources)

Mais comme je te l’ai dit, perso je suis pas fan de ce type de palliatif…il faudrait investiguer sur le problème de base…

David

j’aurais procédé autrement, je ne sais pas si c’est mieux ou moins bien, mais pour toutes mes actions importantes

je lance la commande
et je lance un « DANS » : 3 ou 5mn après qui vérifie que c’est bien fait
suivant les cas, je m"informe que ce n’est pas réalisé, ou je relance la scenario
qui fait la commande, puis recontrôle, … avec une variable qui bloque la « boucle » après 3 tentatives infructueuse

si ca peut aider :slight_smile:

Tu peux aussi faire un script et lui tu peux lui faire attendre jusqu’à ce que ton volet soit bas

Bsr,

Des news?
David

Bonjour MIPS,
merci du conseil pour le Wait plutôt que le sleep
Evidemment, il s’agissait d’une erreur dans le scenario que j’avais créé juste pour illustré ma question, il n’est pas opérationnel.

Bonjour David,
J’ai pris un peu de temps pour modifier le scénario et le dédier à la fermeture des VRs, j’ai enlevé tout le reste.
Le scénario, le voila :


J’ai enlevé les tempo pour l’instant.
je les remettrai fonction de vos conseils.

Le log associé à l’exécution :


Je ne vois rien d’anormal, et pourtant, les volets roulants de la cuisine, et ceux de la passerelle sont resté ouverts.

Merci Nemeraud,
Quelle différence entre un « Dans » et un « wait » ?

Bonjour,

Le wait sert à attendre, dans le scénario, qu’une condition soit vraie avant de poursuivre (ou au bout d’un timeout).

Par exemple utile pour lancer une fermeture, attendre que le volet soit en bas avec un wait et poursuivre avec la fermeture d’une autre volet.

Le dans sert à programmer une action pour qu’elle soit réalisée plus tard.

Par exemple utile pour lancer une fermeture et demander à vérifier dans 1mn l’état du volet pour, relancer la fermeture, avertir d’un problème, etc.

Dans ton dernier scénario il n’y a plus de notion de pause, toutes les actions sont envoyées en même temps et certaines ne doivent pas arriver au modulende façon aléatoire

Bonjour

Quand je lance un tat de commande, je fais une pause de 2 secondes entre chaque action.
Si cela ne marche pas (meme avec 5 secondes entre chaque action) je m’interrogerai sur le choix des modules, car si l’on devait vérifier qu’une action passe à chaque fois, ça serai enfer. Il faut donc avoir un système qui passe les actions quand on lui demande….

Ps: pour essayer différents temps de pause, tu peux créer un tag : Pause = X seconde, en début de scénario.
Puis dans les sleep indiquer comme temps tag(Pause).

Ps2: j’ai un scénario qui allume puis éteint toute les lumières (en cas de détection extérieure quand on dors) cela fait une vingtaine d’ordre, je n’ai jamais de loupé…. (Reseau z-wave + zigbee : j’envoie une commande z-wave et zigbee en même temps, pause, un autre couple de commandes, etc…)

Bonjour,
Vous avez aussi le plugin Switch assistant qui peut être pratique et simple à utiliser dans ces cas là.
Cordialement

J’avais pensé à le dire mais tu crois que c’est valable pour des volets (qui mettent pas mal de secondes à atteindre l’état demandé) ?

Je ne m’en sert pas pour les volets mais pour mes prises connectées.
Mais comme on peut régler le délais entre les tentatives :man_shrugging:
Ca vaut le coup de tester

1 « J'aime »

Ouep, je ne me souviens plus bien des réglages, je ne l’utilise plus depuis le passage sur zwavejs-ui

Merci, il va falloir que je me plonge dans cette commande, nouvelle pour moi

https://ktn001.github.io/fr_FR/swassist/index.html

merci le rennais

Bonjour a Tous
Je vais fermer le topic.
Je retiens donc que

  • pas de moyen de simuler une boucle « tant que ».
  • possibilité de faire boucler le scenario sur lui-même (volet par volet tant qu’il n’est pas fermé)
  • le wait (plutôt que le sleep) pour mettre en stand-by le scenario tant que le VR n’a pas réagi.
  • -regarder comment le plugin switch peut aider.

Merci à tous de votre aide.

si, mais avec un nombre d’occurrence (x) limitée:

  • boucle de 1 à x
    • si non condition (ex: si « pas fermé? »)
      • alors action (ex: fermer)
      • wait [10] s condition (ex: « fermé? »)
    • (en option: sinon « stop scénario »)

le scénario va s’exécuter max x fois pour tester la condition et attendre qu’elle soit réalisée