Comment interrompre un scenario en cours


Bonjour,

j’ai écrit un scenario pour m’alerter lorsque j’ai laissé le portail ouvert pendant un certain temps.
J’ai mis deux déclencheurs, portail ouvert et portail fermé.
Dans l’esprit, ce scénario déclenche un sleep de 10 min (j’ai réduit le temps à 15 secondes pour le tester), au bout de ce temps, le scénario envoi un sms pour m’informer que le portail est ouvert, une minute plus tard (ici 15 secondes) il m’envoie un nouveau sms et ferme le portail.
Si le portail est fermé, à tout moment pendant le lancement du scenario, le scenario doit s’arrêter.
J’ai lu que l’option multi-lancement permet de lancer plusieurs fois le même scenario alors que sinon, le nouveau lancement du scenario stoppe le thread en cours.
J’ai essayé les deux possibilités mais dans le cas du multi-lancement, la fermeture du portail ne stoppe pas le thread du scenario déclenché par l’ouverture du portail, sans multi-lancement, le scenario ne se relance pas malgré l’activation du déclencheur portail fermé, comme si le scenario devait aller jusqu’au bout avant d’accepter un nouveau déclenchement.
N’y a-t-il pas moyen de demander à un scenario de se relancer en s’interrompant à chaque fois qu’un déclencheur est activé?
J’espère avoir été clair, je ne suis pas sûr de moi.

Bonjour,

Désolé par avance de ne pas répondre à la question posée mais pour le coup je ne ferais pas ça comme ça mais utiliserait plutôt la configuration avancé de la commande info « Etat »

Dans l’idée, si égal à 1 durant plus de 10mn alors lancer un scénario :

Et dans ce scénario, qui n’aura pas besoin de déclencheur :

  • Envoyer un message pour dire que le portail est ouvert depuis 10mn
  • sleep 60 (pour une minute)
  • Si etat == 1 alors envoyer un sms et fermer le portail

Bonjour,

non, ce n’est pas ca: « sinon le 2eme lancement ne se fait pas. » plutôt; comme vous l’avez vu durant vos tests

non, au mieux on peut lancer un autre scénario qui va stopper le premier avec une action de ce genre:

et donc il ne faut pas mettre les deux déclencheurs sur le même scénario
d’ailleurs, dans votre exemple ca ne sert à rien de mettre 2 fois le déclencheur sur la même commande en testant les 2 états possible, autant simplement mettre #[objet][equipement][etat]# sans test derrière

mais la solution de @Bison est largement préférable (faisable aussi avec un seul scénario et un premier wait au lieu de l’action sur valeur, c’est exactement pareil).

et pour la suite:

je ferais un wait 60 plutot alors pour ne pas obligatoirement attendre les 60s si fermé avant

Pourrais-tu m’expliquer la différence entre wait 60s et sleep 60s.
J’ai lu que wait était bloquant alors que sleep ne l’est pas.
Pas sûr d’avoir bien compris ce que signifie bloquant
Merci en tout pour vos explications, je vais utiliser la fonction avancée de l’état ouverture du portail.

Le sleep fait une pause de x secondes

Le wait fait une pause de x secondes maximum
En effet, on configure le wait avec une condition. Si cette condition est vraie ou devient vraie durant la pause, le scénario se poursuit.

Mais dans ton cas je ne l’ai pas proposé parce que si ça fait 10mn que le portail est ouvert il y a peu de raison pour qu’il se ferme, finalement sans action, entre la 10eme et la 11eme minutes.
Il y a des cas de figure où le wait à un vrai intérêt… Mais ici je vois pas bien :blush:.

Pour moi il faut retenir ceci:

  • si le but est d’attendre un temps déterminé quelque soit l’état des équipements: sleep (ou DANS si « longtemps »)
  • si le but est d’attendre que « quelque chose se passe » mais avec un maximum de temps: wait

ici on attend de voir si le portail va se fermer et si tjrs pas après x temps => autre action.

les deux sont « bloquants » pour le scénario, les actions suivantes sont en attentes

Le but du wait 60s était d’avoir un possibilité d’agir en arrêtant le scenario manuellement au cas où le portail était maintenu ouvert pour une bonne raison.
Merci pour votre aide!

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.