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
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
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
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.
Dans le scénario afférent, pour distinguer ce qui a lancé ce scénario, on peut tester le trigger (= déclencheur in english).
ALORS faire ceci, cela…
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 :
Et ce test :
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 … Bon, je laisse quand même mon post, si cette explication illustrée peut servir à quelqu’un…
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 ?
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 ?
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 ?
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
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#.