Valeur par défaut pour #trigger_name#

Bonjour,

Je suis en alpha 4.5 et dans le changelog, il y est écrit :

  • trigger() est maintenant deprecated et sera retiré dans les futurs mises a jour du core
    et
  • #trigger_name# : Si c’est une commande qui a déclenché le scénario alors ce tag à la valeur du nom de la commande (sous forme [objet][equipement][commande])

Or, lorsqu’un scénario est exécuté manuellement, #trigger_name# ne semble pas initialisé et génère du coup des erreurs dans la log:

------------------------------------
[2024-08-18 10:25:18][SCENARIO] -- Début : Scénario lancé manuellement. Tags : {"#trigger#":"user","#trigger_value#":"jerry","#message#":"Scénario lancé manuellement"}
[2024-08-18 10:25:18][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-08-18 10:25:19][SCENARIO] Affectation de la variable simulation_presence => 0 (0)
[2024-08-18 10:25:19][SCENARIO] - Exécution du sous-élément de type [condition] : if #trigger_name# == "[Cuisine][Btn. Cuisine][Clic]"
[2024-08-18 10:25:19][SCENARIO] Evaluation de la condition : [#trigger_name# == "[Cuisine][Btn. Cuisine][Clic]"] = #trigger_name# == "[Cuisine][Btn. Cuisine][Clic]"
[2024-08-18 10:25:19][SCENARIO] Expression non valide : #trigger_name# == "[Cuisine][Btn. Cuisine][Clic]"
(...)
[2024-08-18 10:32:11][SCENARIO] Fin correcte du scénario

Y a-t-il moyen de contourner cela, hormis remettre un n-eme test avant ?

Hello,

Perso pour éviter les soucis même aujourd’hui avec triggerValue(), perso je mets la valeur dans un tag et je fais mon SI sur le tag.
Au pire le tag est vide mais il existe, ça évite justement ce genre d’erreur.
Y a peut être plus élégant mais bon, ce workaround me va bien pour l’instant.

1 « J'aime »

Hello, le scénario a été lancé manuellement, pas declanché par la commande « Clic ». Il faut tester avec le bon déclancheur si tu veux les bons tags.

Bad

1 « J'aime »

Merci de ta réponse, qui est totalement dans le sens de ma question :slight_smile:
C’est justement parce qu’il est lancé manuellement que #trigger_value# n’est pas initialisé, et génère du coup une erreur :slight_smile:

Bonjour,

il faut mettre des doubles quote pour éviter cette erreur :

"#trigger_name#" == "[Cuisine][Btn. Cuisine][Clic]"

Edit :

Ou alors accéder au tag par la fonction tag() :

tag(trigger_name) == "[Cuisine][Btn. Cuisine][Clic]"

l’avantage de ce dernier, c’est que tu peut donner une valeur par défaut si le tag n’existe pas :

tag(trigger_name,ce tag existe pas) == "[Cuisine][Btn. Cuisine][Clic]"

[2024-08-18 15:04:02][SCENARIO] - Exécution du sous-élément de type [condition] : if tag(trigger_name,ce tag existe pas) == "[Cuisine][Btn. Cuisine][Clic]"
[2024-08-18 15:04:02][SCENARIO] Evaluation de la condition : ["ce tag existe pas" == "[Cuisine][Btn. Cuisine][Clic]"] = Faux
4 « J'aime »

Helloo,

Je vois plusieurs possibilités à tester :

  • Ajouter un test dans ta condition (à priori, il devrait s’arrêter au premier test ko et donc ne pas provoquer d’erreur dans les logs)

IF : #trigger# != "user" && #trigger_name# == "[Cuisine][Btn][Clic]"

$scenario->addTag('trigger_name','');

EDIT : je viens de voir entre temps la réponse de Phpvarious qui doit suffire :wink:

1 « J'aime »

Merci à vous deux pour vos réponses qui répondent au besoin :+1:t2: :+1:t2:

Néanmoins, je suggèrerais toutefois de fixer une valeur par défaut sur ces tags spéciaux, même s’ils ne sont pas initialisés.

1 « J'aime »

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