La raison est que #trigger_value# est un tag.
Il faut donc utiliser round(tag(trigger_value),1).
[2025-12-02 17:54:34][SCENARIO] -- Début : . Tags : {"#trigger#":"virtualCmd","#trigger_name#":"[Technique][Variables][TEST_CODE]","#trigger_id#":"8214","#trigger_message#":"Scénario exécuté automatiquement sur événement venant de : [Technique][Variables][TEST_CODE] (19.455)","#trigger_value#":19.455}
[2025-12-02 17:54:34][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-12-02 17:54:34][SCENARIO] Mise à jour du tag #TEST# => 19.5
[2025-12-02 17:54:34][SCENARIO] Fin correcte du scénario
Il peut aussi prendre la valeur de « variable(maVariable) ». Mais là problème pour évaluer la condition, car dans :
if #trigger# == "variable(maVariable)"
« variable(maVariable) » prend la valeur de la variable :
[2025-12-03 11:16:14][SCENARIO] **-- Début :** . Tags : {"#trigger#":"variable(maVariable)","#trigger_name#":"","#trigger_id#":"","#trigger_message#":"Scénario exécuté sur événement : #variable(maVariable)#","#trigger_value#":null}
[2025-12-03 11:16:14][SCENARIO] - Exécution du sous-élément de type [condition] : if #trigger# == "variable(maVariable)"
[2025-12-03 11:16:14][SCENARIO] Evaluation de la condition : ["variable(maVariable)" == "0"] = Faux
Pour l’instant j’ai contourné en testant not l’autre déclencheur.
Je vais essayer mais je ne suis pas sûr que ce soit la même chose, car dans mon cas l’évènement déclencheur est un changement de valeur de la variable maVariable :
Donc la valeur du tag #trigger# est variable(maVariable), ce qui est attendu. Mais la comparaison avec la chaîne de caractères « variable(maVariable) » ne fonctionne pas car, dans la chaîne, la variable est évaluée.
Je vais essayer des simples quotes, je sais que PHP évalue les chaînes différemment avec simples ou doubles quotes… Et je reviendrai donner ma résultat du test.
RÉSULTATS:
simple ou double quotes, la variable est toujours évaluée
(tag(variable(maVariable)) retourne toujours chaîne vide, mais normal il n’y a pas de tag correspondant
ALTERNATIVE
Au lieu d’utiliser if #trigger# == "variable(maVariable)"
j’utilise maintenant if #trigger# matches "/(maVariable)/"
Bonjour,
Avant de passer à la 4.5 (je suis actuellement en 4.4.20, Debian 12 sur Odroid N2+) j’aimerais avoir votre avis sur l’utilisation de trigger dans un scénario.
Pouvez vous m’indiquer si cette syntaxe fonctionnera avec la 4.5
trigger(#[fenêtres][117 Door Sensor bureau1][Porte]#)==1
Je ne suis pas suffisamment armé pour en juger moi même et m’en excuse.
Merci pour votre aide
Bonne journée
Version longue : j’avais moi même des lignes comme celles-ci, que j’ai remplacé par
#trigger_name# == "[fenêtres][117 Door Sensor bureau1][Porte]" ET #trigger_value# == 1
Je sais pas si y’a plus simple… Mais ça marche.
Inconvénient : ce n’est pas retro-compatible. Cela veut dire que si vous faites la modif maintenant (sur le v4.4.20) cela ne marchera pas. A contrario, si vous laisser cette ligne telle quelle sur la v4.5, cela ne marchera pas non plus. C’est un breaking change.
Donc dès que vous upgradez la version vers v4.5, il faudra mettre à jour tous vos scenario dans la foulée…
Je suis plutôt d’accord avec @Stefjm : tout dépend de ce qu’on met dans le déclencheur
Si le déclencheur est juste : [fenêtres][117 Door Sensor bureau1][Porte]
Alors chaque modification de l’état de cette information provoquera le démarrage du scénario, quelle que soit la valeur (0, 1 ou autre).
Il faut dans ce cas le tester dans le scénario avec une instruction de type SI #trigger_value# == 1 (ou autre valeur) ALORS xxx
Maintenant si on met comme déclencheur : [fenêtres][117 Door Sensor bureau1][Porte] == 1 (ou autre).
Dans ce cas, toute modification pour la valeur 1 de cette information provoquera le démarrage du scénario. Sinon, dans tous les autres cas, il ne démarre tout simplement pas (ou en tout cas pas en raison de ce déclencheur).
Bien entendu, il est Inutile dans ce cas de tester dans le scénario lui-même si le trigger_value est bien à 1 (il l’est forcément…).
Bonjour,
le déclencheur: #[fenêtres][117 Door Sensor bureau1][Porte]#==0
la commande dans la demande plus haut est dans un
SI trigger(#[fenêtres][117 Door Sensor bureau1][Porte]#)==1
ALORS
#[Chauffage][122 - Danfoss bureau][Action-Consigne-Chaud]# 19.5
trigger(#[fenêtres][117 Door Sensor bureau1][Porte]#)==1
Permet à la fois de savoir si le trigger est « [fenêtres][117 Door Sensor bureau1][Porte] » et si sa valeur vaut 1, d’où ma proposition de remplacer par :
#trigger_name# == "[fenêtres][117 Door Sensor bureau1][Porte]" ET #trigger_value# == 1
Que ma commande est la valeur 0, 1 ou ce que tu veux, trigger(#commande#) ou trigger(#commande#) == 1 va vérifier que la commande en question a déclenché le scénario … quelle que soit la valeur de la commande !!!
Oui, la fonction trigger() est annoncée comme dépréciée depuis la 4.5 et sera donc supprimée dans une des prochaines versions, il faut donc mieux commencer à utiliser les nouveaux tag mais rien ne presse non plus
Faire un scénario de test comme j’ai montré un peu au dessus en utilisant le mot « log » et en appelant les triggers pour voir ce que ça donne quand tu agis sur tes commandes déclenchant le scénario