Declencheur ne doit s'activer que sur valeur exacte

Bonjour

Question simple mais je ne trouve pas de solution ;

Dans un scenario SMet Vent ON-OFF, j’ai un déclencheur :
#[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == « OVERRIDE_FOR_TIME »
qui doit donc se déclencher UNIQUEMENT quand cette valeur « OVERRIDE_FOR_TIME » est présente dans le virtuel PVrt Soleil-Nuages-Vent

Le virtuel PVrt Soleil-Nuages-Vent se met à jour toutes les 20 minutes (il relève les valeurs d’un anémomètre).

A chaque fois que le virtuel se met à jour (toutes les 20 min), le scenario SMet Vent ON-OFF se déclenche, même si la valeur n’a pas changé.

La question : pourquoi la condition du déclencheur n’est pas respectée et le déclenchement se fait à chaque mise à jour du virtuel, même si la valeur n’a pas changée ?

Merci pour vos conseils :pray:

Bonjour

Pourquoi ne pas donner les vrais informations plutôt que des extraits ?

Pour les copies de lignes de commandes, privilégier :

saisissez ou collez du code ici

Antoine

Bonjour.

Nécessaire pour comprendre :

  • Une copie d’écran du déclencheur
  • et le log de déclenchement de scénario.

Bonjour,

Sans doute que dans la configuration de la commande Trame Vent, la gestion des répétitions est configurée sur « Oui »

1 « J'aime »

Bonjour et merci pour vos propositions.

L’information que j’ai donnée est complète, ce ne sont pas des « extraits ».
C’est vrai qu’elle est moins visuelle qu’une photo, que je joins, mais qui n’apportera vraisemblablement pas grand chose :

Justement, elle est bien réglé sur « Non ».

Oui bien sûr.
On voit dans les déclenchements que le scenario se lance dès que la valeur Trame Vent change, mais pas uniquement lorsqu’elle est OVERRIDE_FOR_TIME

La condition du scenario l’arrête lorsque la valeur n’est pas OVERRIDE_FOR_TIME mais il s’est quand même déclenché pour rien.

[2025-07-27 11:59:48][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 11:59:48][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 11:59:48][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 11:59:51][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 11:59:51][SCENARIO] Evaluation de la condition : ["OVERRIDE_FOR_TIME" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 27 >= 33] = Vrai
------------------------------------
[2025-07-27 12:20:05][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 12:20:05][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 12:20:05][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 12:20:08][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 12:20:08][SCENARIO] Evaluation de la condition : ["" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 28 >= 33] = Faux

[2025-07-27 12:50:03][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Maison][PNtaAnemometre][Rafales] (32).
[2025-07-27 12:50:03][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 12:50:04][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 12:50:07][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 12:50:07][SCENARIO] Evaluation de la condition : ["OVERRIDE_FOR_TIME" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 32 >= 33] = Vrai
------------------------------------
[2025-07-27 13:20:05][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 13:20:05][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 13:20:05][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 13:20:08][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 13:20:08][SCENARIO] Evaluation de la condition : ["" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 23 >= 33] = Faux


Bonjour,

Quand tu dis que le virtuel se mets à jour, c’est que tu as utilisé l’option d’auto-actualisation ?

Parce que de mémoire dans ce cas l’ensemble des valeurs force une mise à jour et donc un déclenchement des scénarios.

Bonjour,

Et en essayant plutôt :

#[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# matches "/OVERRIDE_FOR_TIME/"

dans les déclencheurs, ce ne serait pas mieux ?

En effet, le traitement des caractères peut poser plus de soucis qu’avec des simples nombres où les comparateurs classiques (type == ou >=) fonctionnent très bien…

@Bison

Non, c’est un autre scenario qui contrôle la vitesse du vent toutes les 20 min qui met à jour le Virtuel #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# soit avec la valeur OVERRIDE_FOR_TIME si vent détecté ou soit la valeur "" si rien.

@DanielJ

Je vais essayer, merci.

Pourquoi ne pas mettre juste un bloc SI en tout début de scènario ?

Ok.

Sinon, ça fonctionnera aussi certainement simplement en changeant la nature de ce virtuel (que j’imagine de type ‹ Autre ›) par un virtuel de type ‹ binaire › et traiter les valeurs retournées vrai/faux, plutôt que de traiter des chaînes de caractères type «  » ou « OVERRIDE_FOR_TIME ».
Et s’il y a plusieurs valeurs possibles, passer ce virtuel en numérique et coder les différentes valeurs possibles avec des chiffres : 0, 1, 2,…

@Aurel

C’est déjà en place et ce n’est pas le but recherché mais éviter les déclenchements intempestifs.

@DanielJ

Alors ce n’est pas moi qui impose ce texte OVERRIDE_FOR_TIME, c’est le fabricant du capteur vent Legrand.
Donc quand le scenario interroge le capteur toutes les 20 min, une trame retourne des valeurs texte style légère brise, calme... et quand le vent est trop fort (défini par un seuil sur le capteur) c’est la valeur texte OVERRIDE_FOR_TIME

Le virtuel « filtre » cette valeur avec sa fonction dans la valeur calcul : #[Coffret Esc Baie][Pbxo Vent Soleil][Etat Vent]# == "OVERRIDE_FOR_TIME" ? "OVERRIDE_FOR_TIME" : ""

Pour l’instant ça m’a l’air de fonctionner, pas de déclenchement sur "" ou autres.

C’est quand même curieux qu’il faille faire ce type de formulation pour que la condition soit vraiment respectée !
Je continue de tester mais en attendant merci beaucoup pour cette solution :grinning:

1 « J'aime »

C’est le langage php qui veut ça.
La fonction matches renvoie plus d’ailleurs à une égalité stricte type === qui aurait été aussi je pense plus adaptée que le simple comparateur == (voir ici).
Bon après, c’est vrai qu’il faut le savoir, et ne pas l’oublier…

Moi je veux bien mais soit je suis aveugle soit vous n’avez fourni aucun log pour lequel il y a eu une
déclenchement sans respect de la condition…
Et non, le dernier déclenchement n’est pas ce cas: la valeur de la commande était celle attendue (on a la valeur entre parenthèses) mais au moment de votre test elle avait déjà changée (le test avec «  »)

Donc jusqu’ici je ne vois qu’une erreur d’interprétation de votre part.

L’info n’était pas complète puisqu’il n’y avait ni le scénario ni le log… dans lequel on peut voir qu’il n’y a pas de problème.

1 « J'aime »

@Mips
Le sujet est suffisamment explicite je pense :
Declencheur ne doit s’activer que sur valeur exacte

Hors dans les logs, on voit bien que le déclencheur s’active sur OVERRIDE_FOR_TIME et sur ""
Donc la condition n’est pas respectée !

Voici encore les logs où on voit clairement que le déclenchement se fait systématiquement toutes les 20 min pour rien (valeur "")
La seule fois où il s’est déclenché correctement c’est à 15:52 quand la valeur exacte était OVERRIDE_FOR_TIME

[2025-07-27 15:20:06][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 15:20:06][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 15:20:06][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 15:20:09][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 15:20:09][SCENARIO] Evaluation de la condition : ["" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 25 >= 33] = Faux
------------------------------------
[2025-07-27 15:40:06][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 15:40:06][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 15:40:06][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 15:40:09][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 15:40:09][SCENARIO] Evaluation de la condition : ["" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 28 >= 33] = Faux
------------------------------------
[2025-07-27 15:52:25][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 15:52:25][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 15:52:25][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 15:52:28][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 15:52:28][SCENARIO] Evaluation de la condition : ["OVERRIDE_FOR_TIME" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 26 >= 33] = Vrai
------------------------------------
[2025-07-27 16:20:06][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 16:20:06][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 16:20:06][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 16:20:09][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 16:20:09][SCENARIO] Evaluation de la condition : ["" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 16 >= 33] = Faux
------------------------------------
[2025-07-27 16:40:06][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 16:40:06][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 16:40:06][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 16:40:09][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 16:40:09][SCENARIO] Evaluation de la condition : ["" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 23 >= 33] = Faux
------------------------------------
[2025-07-27 17:00:06][SCENARIO] -- Début : Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME).
[2025-07-27 17:00:06][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-07-27 17:00:06][SCENARIO] Pause de 3 seconde(s)
[2025-07-27 17:00:09][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Réglages][PVrt Soleil-Nuages-Vent][Trame Vent]# == "OVERRIDE_FOR_TIME" OU #[Réglages][PVrt Soleil-Nuages-Vent][Niveau Vent]# >= 3  OU #[Maison][PNtaAnémomètre][Rafales]# >= 33
[2025-07-27 17:00:09][SCENARIO] Evaluation de la condition : ["" == "OVERRIDE_FOR_TIME" OU 2 >= 3  OU 18 >= 33] = Faux

Merci.

Moi je ne vois pas comme vous.

Oui, 3 secondes après c’est " ", mais au déclenchement on dirait bien que c’est bien la valeur que vous avez défini.
Scenario execute automatiquement sur evenement venant de : [Reglages][PVrt Soleil-Nuages-Vent][Trame Vent] (OVERRIDE_FOR_TIME)

1 « J'aime »

Justement c’est bien là qu’il y a un problème car le log du scenario montre que c’est la valeur OVERRIDE_FOR_TIME qui est dans la commande alors que réellement la valeur est "".
C’est d’autant plus flagrant qu’elle ne change pas, uniquement si le capteur envoie l’info OVERRIDE_FOR_TIME

Pour moi c’est insoluble, je vais chercher d’autres astuces avec des scenarios qui analysent et transforment cette valeur en quelque chose de plus interprétable pour Jeedom, des chiffres par exemple.

Merci à tous pour vos conseils et votre temps passé à m’aider :grinning:

3 secondes après.

1 « J'aime »

Hello :vulcan_salute:,

Allez je me lance aussi mais comme les autres j’ai bien l’impression que c’est le sleep(3) qui pose problème ici tout simplement non? Le scénario se déclenche à priori sur la bonne valeur mais ce n’est plus la même 3 secondes après?

Il faut peut-être (sûrement) revoir le scénario et/ou jouer sur la #trigger_value# pour parvenir à tes fins?

Non justement, le scénario se déclenche comme il faut, la valeur était OVERRIDE_FOR_TIME !!!

Relisez ma réponse

1 « J'aime »