Comment éviter les multi-lancements de scenario dans la seconde?

Bonjour

J’ai des boutons NIU (BLE de type poussoir) qui prennent la valeur du nombre d’appuis consécutifs appliqués
Ils sont gérés avec des antennes (ESP32 + OpenMQTTGateway) qui pointent vers le même broker MQTT sur mon Atlas.
Grace au plugin MQTT Discovery (MQTTDiscovery) toutes ces antennes pointent vers le même équipement / la même commande Jeedom.

Pour un seul appui sur le même bouton il y des « rebonds » de valeur de la même antenne (confirmé sur le forum openmqttgateway quand je n’avais qu’une antenne)

Maintenant j’ai 3 antennes (voir capture d’écran ci-dessous)
Est il possible qu’il y ait des « rebonds » entre les antennes dans Jeedom avec MQTT Discovery ?
→ le même appui arrive dans le broker MQTT par des antennes différentes et donc ensuite la valeur de la commande MQTT Discovery (qui combine les 3 antennes / 3 topics MQTT) est aussi répétée dans Jeedom.

PS : La commande bouton est configurée dans Jeedom avec « Répéter les valeurs identiques »,
car le bouton envoie dans MQTT uniquement la dernière valeur correspondant au dernier nombre d’appuis. Si on appuie 1 fois le bouton envoie 1 à MQTT (et rien d’autre ensuite) et quand « plus tard » on ré appuie 1 fois il renvoie (un autre) 1 à MQTT et donc a Jeedom.
Cette nouvelle valeur 1 est détectée grâce « Répéter les valeurs identiques ».

Mon problème
Ce bouton déclenche un scénario que j’avais calmé avec des tempo (sleep dans le scenario) pour éviter les lancements successifs (quand je n’avais qu’une antenne).
Maintenant avec mes 3 antennes, j’ai l’impression que je suis dans la fenêtre de la seconde ou le même scénario se lance en parallèle (voir l’avertissement dans la doc Jeedom ci-dessous)

Question : Comment filtrer ces lancements multiples dans la même seconde ?
Après de multiples tentatives j’ai trouvé ceci qui semble fonctionner :
Dans le déclencheur qui contient la commande « bouton », j’ai rajouté la condition que le scénario ne soit pas déjà « running » / en cours d’exécution.
Rappel : dans le scenario, j’ai une tempo « sleep » pour ralentir son exécution (en gros la durée du filtre des rebonds de la commande « bouton »)
L’intérêt de cette solution c’est qu’elle ne ralenti pas le démarrage du scénario (les actions du scenarios sont lancées au premier signal / front et donc on n’a pas tendance à ré appuyer parce qu’il ne se passe rien) mais elle filtre les suivants (les rebonds se produisent quand le scénario est déjà en cours)

Appel aux experts du core Jeedom :

  • mon interpretation / solution est elle correcte ?
  • cela vaut il la peine de rajouter cette astuce dans la doc Scénario avec le « Important »

Equipement / Commande « Bouton » dans MQTT Discovery (MQTTDiscovery) : on y voit les 3 antennes (mais une seule commande grâce au + / + : ca c’est très cool :slight_smile:)

Documentation Jeedom sur scénario


Bonsoir,

J’aurais plutôt configuré la valeur de retour d’état à 0 avec une durée de 1 minute pour cette commande en mettant à Non la répétition des valeurs identiques.

Ainsi, pendant une minute le scénario n’est pas relancé pour une valeur identique par appui ou autre et après une minute la valeur étant passée à 0, un nouvel appui sera détécté.

Seule limitation, on ne peut pas régler la latence à moins d’une minute

Bonjour @Bonjour

Je ne connaissais pas cette fonction de « Valeur retour d’état » : en général je traite ce besoin dans le scénario déclenché par cette commande, par un « event » sur la commande, qui permet d’écrire / de forcer une valeur dans une commande de type information.
L’avantage du « event » est que je peux faire ce « retour d’état » à tout moment dans le scénario sans la contrainte de la minute minimum de « Valeur retour d’état », mais il faut un scénario.

Par contre effectivement pourquoi garder « Répéter les valeurs identiques » à oui ???
Columbo GIFs | Tenor

Je suis passé à non et je n’ai plus de pb de rebond ! (c’était tellement évident… :crazy_face:)

Au final le déclencheur du scenario est simplement le bouton, plus de test sur scenario(scenario).
image

Je n’ai pas utilisé « Valeur retour d’état » dans la configuration de la commande bouton mais dans le scénario je force (« event ») une valeur différente pour détecter un nouvel appui de même nature (1 appui, 2 appuis, etc…) sur le bouton NIU.
La valeur « ( »#[Bureau][Bouton NIU (Wazabi) Mode PC IN03][Bouton]#« ) » me permet de conserver la dernière valeur du nombre d’appui sur le bouton, plutôt de mettre 0 pour tous les types d’appui (c’est un sous-type Autre pas Numérique)

J’ai même pu supprimer le sleep pour être plus réactif à un nouvel appui.


image

Merci pour cette réponse qui me permet de résoudre beaucoup plus simplement mon pb.

Ou avez vous lu que je proposais de garder la valeur à Oui ???

la question était pour moi : « pourquoi je gardais… »

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