Explication trigger

Bonsoir,
je suis en train de lire différentes choses sur les triggers
mais une question depuis le départ me taraude pour bien comprendre
dans un scenario , on fait un si
qu’elle est la différence entre
si #etat d’une commande# ==1 alors…
si trigger(commande) ==1 alors …

idem dans un évènement de scenario, peut on passer des trigger en evenement , et si oui
quelle est la difference entre par ex
#[salon][lumiere salon2][Scene]#==14 et triger(#[salon][lumiere salon2][Scene]#) ==14
merci

1 « J'aime »

Bonjour,
La fonction trigger() sert à connaître le déclencheur du scénario.
Si tu as plusieurs façons de déclencher un scénario, plusieurs déclencheurs provoqués, avec cette fonction, tu connais le déclencheur qui a déclenché ton scénario.

1 « J'aime »

ok merci
On peut les mettre dans l’évènement ou c’est forcément dans le scénario avec un « si alors » ?

1 « J'aime »

Non, c’est forcément dans le code du scénario.
Si tu mets en déclencheur une fonction trigger, tu vas au-devant d’un dead-lock.
Surtout que l’intérêt est de savoir « quelle est la raison du déclenchement du scénario? »

ok merci , vais m’essayer.

1 « J'aime »

y a quand même un mystère avec ces triggers
j’ai un scenario simple pour test de lumière sur détection
le déclencheur
image

le scenario après plusieurs essais se syntaxe:

test : le capteur de présence est à l’état 0

image

je vais le déclencher
image

la lumière ne s’allume pas.

log :


il evalue la valeur à 0 alors qu’elle est à 1 ???
pourquoi ? j’arrive pas à piger

Je crois que tu n’as pas compris le principe de la fonction. Je vais te donner un exemple.
Supposons que tu aies un scénario qui a 2 déclencheurs provoqués #etat1# et #etat2#.
Dans le code de ton scénario, tu mets :

SI trigger(#etat1#)
ALORS tu fais ce qu’il faut si le déclencheur est le déclencheur provoqué #etat1#
SINON tu fais ce qu’il faut pour un déclenchement provoqué par #etat2# puisque ce n’est pas #etat1# qui a déclenché

J’espère que c’est plus clair

1 « J'aime »

oui ok ,c’es plus clair
Mais admettons qu’en plus cet état peut avoir 2 valeurs ex des boutons avec des scènes ?
on peut faire ?:
SI trigger(#etat1#) ==1 alors …
sinon SI trigger(#etat1#) ==0 alors
sinon si trigger(#etat2#) ==1 alors …

ou alors faut faire
SI trigger(#etat1#) alors
si #etat1# ==0 alors…
sinon si #etat1# ==1 alors…

SI trigger(#etat2#) idem…

Non, si tu veux tester la valeur du trigger, il faut utiliser la fonction triggervalue()

SI triggervalue(#etat1 == ???
ALORS …

Sauf qu’il me semble avoir lu un problème sur cette fonction mais je ne me rappelle plus trop quoi.
Il va te falloir la tester.

j’avais essayé dans ce scénario avec triggerValue mais je pense que je mettais mauvaise syntaxe
je mettais SI triggervalue(#etat1) == ??? à priori tu mets la valeur dans la parenthèse toi, je vais tester
j’ai lu aussi un truc dessus mais je pense que c’etait avec une version jeedom plus vieille

je confirme ça fonctionne ecrit comme ça :
triggerValue(#[garage][MVT buanderie][Présence 01-0406]# == 1 )

Non, tu mets le déclencheur entre parenthèses et la valeur attendue après le ==

non ça marche pas comme ça , c’est ce que je faisais avant, l’expression plus haut marche, ma lumière s’allume

Ça ne marche pas comme ça, la parenthèse fermante est à mettre après le# de fin de ton déclencheur

triggerValue(#[garage][MVT buanderie][Présence 01-0406]#) == 1

Mais je ne comprends pas pourquoi tu veux tester la valeur du trigger.
Si tu mets en déclencheur ton détecteur de présence, si ça declenche c’est que celui-ci a été activé.
Si tu mets plusieurs détecteurs en déclencheur, tu testes simplement celui qui a déclenché, leur valeur n’a aucune importance, c’est du binaire.

pour tester les triggers en fait
quand ça passe à 1 je veux allumer la lumière
quand il passe à 0 je veux l’éteindre
mais tu as raison car d’habitude , je met le détecteur
et la condition c’est l’état de la lampe
en parlant de ça vaut mieux faire un scenario off (presence =0 dans condition) et 1 autre scenario pour le on ( sur présence=1 ) ou tout dans le meme ?

Ou plus simplement, tu mets juste ton détecteur en déclencheur sans ajouter de comparaison à quoique ce soit et ton scénario est le suivant :

SI #etat1# == 1
ALORS allumer
SINON éteindre

En n’oubliant pas de mettre la gestion de la répétition dans la configuration de #etat1# à « jamais ».

oui en règle générale ,c’est ce que je fais. me prends trop la tête avec les triggers, mais j’ai pigé la finalité
en tout cas merci

Pas de quoi.
Bonne fin de soirée

à toi aussi