Aide sur la nouvelle fonction trigger

Salut à tous,
Je viens de migrer ml VM de teste en 4.5.
Tout c’est bien passe merci l’équipe de Jeedom.

Par contre j’ai lu relus la doc, elle est surement évidente pour la majorité d’entre vous mais pas pour moi. J’ai un souci avec les #trigger#.
Il est ecrit

  • triggerId() est maintenant deprecated et sera retiré dans les futures mises à jour du core. Si vous avez triggerId() == 587 il faut le remplacer par #trigger_id# == 587

Est c’est là mon loup.
Dans un de mes scenarios j’ai :

trigger(#[Baie info et Réseaux][Capteur baie de brassage][Etat]#)

Il faut évoluer avec son temps et cette écriture n’est plus fonctionnel.

Id de mon #[Baie info et Réseaux][Capteur baie de brassage][Etat]# est 14931.
J’ai essaye #trigger_id# == 14931 ca ne fonctionne pas puis j’ai relu et j’ai vu #tigger_name# donc j’ai fait #trigger_name# == #[Baie info et Réseaux][Capteur baie de brassage][Etat]# idem ne fonctionne pas.
Je pense que je n’ai absolument pas compris le nouveau mode de fonctionnement des triggers.
Si quelqu’un peut m’expliquer.
Merci à la communaute

Bonjour
Il y a tout un post dessus même si je suis pas sur que cela soit encore correct.

Antoine

Merci pour ton aide.

J’ai parcouru le forum et je n’ai pas vu ce fil.

j’ai finalement relu la doc et le fil que tu m’as indiqué

  • #trigger_name# : Si c’est une commande qui a déclenché le scénario alors ce tag prend la valeur du nom de la commande (sous forme [objet][équipement][commande])

J’ai essaye :

 #trigger_name# == #[Baie info et Réseaux][Capteur baie de brassage][Etat]# ne fonctionne pas
 #trigger_name# ==  [Baie info et Réseaux][Capteur baie de brassage][Etat] ne fonctionne pas chez moi comme ecrit dans la doc 
 #trigger_name# == `[Baie info et Réseaux][Capteur baie de brassage][Etat]' fonctionne

Merci encore

Bonjour,

J’ai modifié moi aussi tous mes trigger avec l’arrivée de la 4.5.
Voici ce qui fonctionne pour moi :

Au lieu de :
SI
trigger(#[Baie info et Réseaux][Capteur baie de brassage][Etat]#)
ALORS …

Mettre :

SI

#trigger_name# == "[Baie info et Réseaux][Capteur baie de brassage][Etat]"

ALORS…

(Attention de bien enlever les # et les remplacer par ")

Ensuite, on peut aussi récupérer la valeur du trigger avec par exemple :

SI
#trigger_value# == 1
ALORS…

ou

SI
#trigger_value# matches "/double_clic/"
ALORS…

etc…

1 « J'aime »

Il manque surtout un « r »

1 « J'aime »

Corrige ok dans mon scenario mais pas dans le fil j’ai tout réécrit :wink:

Salut

J’ai un scenario avec plusieurs déclencheurs qui font des choses un peu similaire.
Au lieu d’avoir plusieurs scenario avec chacun un déclencheur unique , j’ai un seul scénario qui lorsque le déclencheur est par exemple mon capteur baie de brassage il va effectuer les conditions de la partie de son scenario

J’ai répondu à quelqu’un et le message à disparu :thinking:

1 « J'aime »

Merci beaucoup, ça m’éclaire

J’ai supprimé mon message car en lisant la doc c’est devenu clair :slight_smile: on devrait toujours commencer par ça !

J’ai pour habitude de passer des tags à mes scénarios avec le contexte d’appel. Ça pourrait probablement simplifier certains de mes scénarios.

Merci

Bonjour Franck,

L’instruction Trigger peut-être utilisée pour des applications comme :

  • déterminer quel est le déclencheur qui a provoqué le lancement du scénario

Par exemple :
Un de mes scénario se lance soit en raison d’une programmation, soit en raison d’un événement particulier.

image

Dans le scénario afférent, pour distinguer ce qui a lancé ce scénario, on peut tester le trigger (= déclencheur in english).

image

ALORS faire ceci, cela…

image

ALORS faire ceci, cela…

Soit :
Si le déclenchement est dû à un changement sur l’information [Fonction][Gestion des vacances][Statut_Vacances en cours], et que sa valeur est égale à 1, alors je fait ceci, cela.

Si le déclencheur est dû à la programmation (schedule), alors je fait ceci, cela.

Cela évite d’avoir plusieurs scénarios qui traite les actions liées à une même fonction.

  • déterminer les actions à faire lors du redémarrage de Jeedom

Avec ce déclencheur :

image

Et ce test :

image
et la suite…

Je suis prévenu si Jeedom redémarre pour une raison ou une autre…

Bref, une instruction qui, bien utilisée, est très utile !

[EDIT] Pareil, je n’écris pas assez vite :wink:… Bon, je laisse quand même mon post, si cette explication illustrée peut servir à quelqu’un…

2 « J'aime »

Bonjour

Concernant la mise à jour de la syntaxe, existe-t-il une requête qui permet d’identifier les scénarios qui contiennent des Triggers ou faut-il les rouvrir un par un ?

Oui, c’est assez facile en utilisant simplement la fonction Recherche :

(recherche par Mot, trigger).
Tous les scénarios qui utilisent cette fonction seront ainsi listés.

3 « J'aime »

Merci pour l’info.
J’ignorais que cela pouvait rechercher dans le corps du scénario.

1 « J'aime »

Je profite de ce fil pour poser une question un peu corollaire :

Peut-on anticiper la mise à jour de la v4.5 (j’attends encore un peu pour ma part) et d’ores et déjà mettre à jour nos scenarios avec une syntaxe retrocompatible v4.4.20, compatible avec la v4.5, et supprimer la syntaxe deprecated ?
Ou bien faut-il d’abord nécessairement mettre à jour en v4.5 pour mettre à jour la syntaxe des triggers ?

Super explication ! Merci

1 « J'aime »

Comme je ne suis pas sûr d’avoir compris, pour ma part, j’ai toujours utilisé trigger() - dans ma mémoire, quelqu’un m’avait conseillé il y a déjà quelques mois de migrer mes #trigger#.

Y a t’il un intérêt à encore changer pour passer à #trigger_name# pour le test dans mes scénarios ?
image

La documentation indique que l’un est déprécié et propose l’autre.

#trigger# (déprecié, mieux vaut utiliser trigger()) : Peut être le nom de la commande qui a déclenché le scénario :
api si le lancement a été déclenché par l’API,
schedule s’il a été lancé par une programmation,
user s’il a été lancé manuellement,
start pour un lancement au démarrage de Jeedom.
#trigger_value# (déprécié, mieux vaut utiliser triggerValue()) : Pour la valeur de la commande ayant déclenché le scénario

Bonjour,

Tu dois être sur la documentation du core 4.4 :wink:

Effectivement, je n’ai fait que taper sur google « documentation trigger jeedom » et effectivement cela renvoie sur une documentation en 4.1.

Merci, bien vu.

Du coup, la doc donne :

trigger(commande) : Permet de connaître le déclencheur du scénario ou de savoir si c’est bien la commande passée en paramètre qui a déclenché le scénario. => Deprecated il vaut mieux utiliser le tag #trigger#
triggerValue() : Permet de connaître la valeur du déclencheur du scénario. => Deprecated il vaut mieux utiliser le tag #triggerValue#

Du coup, si je comprends il faut utiliser le tag #trigger#.

J’ai presque tout migré.

1 « J'aime »

Bonjour,

En suivant tes explications si j’ai bien compris (plugin withings sur un pèse personne).

Avant j’avais ça :
image

Et j’ai remplacé suite à tes conseils par ça :
image

J’ai bon ?

Merci

Oui, c’est tout bon ! :+1:

1 « J'aime »