Beta 4.5 et trigger

Bonjour,

J’ai bien lu le changelog sur les trigger

Résumé
  • Changement sur la partie trigger des scénarios : LIEN
    • triggerId() est maintenant deprecated et sera retiré dans les futures mises à jour du core
    • trigger() est maintenant deprecated et sera retiré dans les futures mises à jour du core
    • triggerValue() est maintenant deprecated et sera retiré dans les futures mises à jour du core
    • #trigger# : Peut être :
      • api si le lancement a été déclenché par l’API,
      • TYPEcmd si le lancement a été déclenché par une commande, avec TYPE remplacé par l’id du plugin (ex virtualCmd),
      • 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_id# : Si c’est une commande qui a déclenché le scénario alors ce tag prend la valeur de l’id de la commande qui l’a déclenché
    • #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])
    • #trigger_value# : Si c’est une commande qui a déclenché le scénario alors ce tag prend la valeur de la commande ayant déclenché le scénario
    • #trigger_message# : Message indiquant l’origine du lancement du scénario

Dans certains de mes scénarios avec plusieurs déclencheurs je testais pour savoir quel déclencheur avait lancé le scénario de cette manière

trigger(#[Home][ShellyVRChambre][Online]#) == 1

Si je lance mon scénario manuellement dans le log j’ai

[2024-10-01 11:45:33][SCENARIO] - Exécution du sous-élément de type [condition] : if trigger(#[Home][ShellyVRChambre][Online]#) == 1
[2024-10-01 11:45:33][SCENARIO] Evaluation de la condition : [0 == 1] = Faux

Jusque là pas de souci comme le scénario a été lancé manuellement le résultat est OK

Mais du coup avec les nouveaux je ne sais pas quoi mettre.

Bonjour,
Pas compris la demande. Mets la log complete du scénario, ce que tu attend et ce qui ne te vas pas.

Salut,

en v4 les #xxxx# était déprécié et on a du changer vers le format triggerxxx():

et en v4.5 on rechange?

image

c’est pas de bol :unamused:


du coup je suppose que pour ceci

trigger(#[Home][ShellyVRChambre][Online]#) == 1

tu vas devoir écrire cela:

#trigger_name# == '[Home][ShellyVRChambre][Online]'

sans les # sinon ca sera remplacé par la valeur de la commande

Dans un scénario à multi déclencheurs

Avant pour savoir ce qui avait déclenché le scénario on faisait (enfin moi)

If trigger(#[Home][ShellyVRChambre][Online]#) == 1

Donc je savais que c’était la commande #[Home][ShellyVRChambre][Online]# qui avait déclenché

Avec les nouveaux trigger je suis perdu je ne sais pas quoi utiliser et si je tente la proposition de Mips, en exécution manuelle j’ai des expression non valide

Oui je suis revenu en arriere suite a la refonte des scénarios qui gere l’instanciation des lancement

Ben c’est logique en manuel le declencheur c’est pas ta commande donc c’est bien egale a 0

Je vais prendre mon scénario plus complexe
Voilà mes déclencheurs
image

Voici mes tests pour savoir ce qui a déclenché
image

Voici le log

[2024-10-01 12:36:25][SCENARIO] - Exécution du sous-élément de type [condition] : if trigger(#[Multimédias][Dark Vador][Online]#) == 1
[2024-10-01 12:36:25][SCENARIO] Evaluation de la condition : [0 == 1] = Faux
[2024-10-01 12:36:25][SCENARIO] - Exécution du sous-élément de type [action] : else
[2024-10-01 12:36:25][SCENARIO] - Exécution du sous-élément de type [condition] : if trigger(#[Multimédias][Dark Vador][Code Erreur]#) == 1
[2024-10-01 12:36:25][SCENARIO] Evaluation de la condition : [0 == 1] = Faux
[2024-10-01 12:36:25][SCENARIO] - Exécution du sous-élément de type [action] : else
[2024-10-01 12:36:25][SCENARIO] - Exécution du sous-élément de type [condition] : if trigger(#[Multimédias][Dark Vador][Etat]#) == 1
[2024-10-01 12:36:25][SCENARIO] Evaluation de la condition : [0 == 1] = Faux

La doc 4.5 dit

  • trigger() est maintenant deprecated et sera retiré dans les futures mises à jour du core

Donc par quoi remplacer mes tests ? Car tout ce que j’ai essayé génère des erreurs dans le log

C’est dans le changelog si tu veux comparer au nom c’est #trigger_name# = nom_commande (sans les #) c’est bien décris dans le changelog et la doc. Si c’est par l’id c’est #trigger_id# = id_commande.

Je vois vraiment pas ou ca bloque.

Donc ça
image

Le hic si on fait cela et qu’on lance le scénario manuellement on a cela dans les logs

[2024-10-01 12:39:54][SCENARIO] -- Début : . Tags : {"#trigger#":"user","#trigger_value#":"Luis","#trigger_message#":"Scénario lancé manuellement"}
[2024-10-01 12:39:54][SCENARIO] - Exécution du sous-élément de type [condition] : if #trigger_name# == '[Multimédias][Dark Vador][Online]'
[2024-10-01 12:39:54][SCENARIO] Evaluation de la condition : [#trigger_name# == '[Multimédias][Dark Vador][Online]'] = #trigger_name# == '[Multimédias][Dark Vador][Online]'
[2024-10-01 12:39:54][SCENARIO] Expression non valide : #trigger_name# == '[Multimédias][Dark Vador][Online]'

Met des ’ autour de #trigger_name#

[2024-10-01 12:44:17][SCENARIO] **-- Début :** . Tags : {"#trigger#":"user","#trigger_value#":"Luis","#trigger_message#":"Scénario lancé manuellement"} 
[2024-10-01 12:44:17][SCENARIO] - Exécution du sous-élément de type [condition] : if '#trigger_name#' == '[Multimédias][Dark Vador][Online]' 
[2024-10-01 12:44:17][SCENARIO] Evaluation de la condition : ['#trigger_name#' == '[Multimédias][Dark Vador][Online]'] = Faux

OK la c’est bon.

Je sais que je ne suis pas hyper doué en programmation mais là je pense qu’il va falloir des exemples dans la doc sinon il va y avoir un paquet de demande.

Merci Mips, Merci Loïc pour votre aide et votre temps

Je vais en rajouter immediatement en alpha. Merci pour le retour

1 « J'aime »

C’est une notion hyper puissance mais hyper complexe pour les novices.

Ok pour le changement, mais on a pris des habitudes et va falloir s’y faire avec les nouveaux.

Rien n’est plus parlant qu’un exemple et cela évitera bien des déboires.

C’est deja ajouté update doc · jeedom/core@e97d808 (github.com) immediatement après ta remarque.

2 « J'aime »

Bonjour,

Je pense qu’il faudrait davantage d’exemples ([Tuto] Les déclencheurs de Scénarios : les triggers - Forum Communauté Jeedom).

trigger() == 'schedule'
trigger() matches '...'

J’en ai deja rajouté pas mal et la documentation en donne aussi. Après n’hesitez pas a faire des PRs si vous pensez que ca suffit pas mais pour moi il y a ce qu’il faut (j’en ai encore rajouté après le commit en lien tout a l’heure).

Bonjour,

Vu le peu de personnes qui lisent la doc, j’espère me tromper mais il va y avoir pas mal de questions remontées sur la communauté. Parce que ce n’est pas intuitif comme syntaxe (et peu courant dans le reste de Jeedom).
J’imagine qu’il n’y a pas d’autres solutions techniques donc on va s’adapter.

Pourquoi pas intuitif dans jeedom ? Comment aurais tu fais ? Hésites pas développer je peux pas deviner malheureusement

Bonjour.

Je cite la documentation :
Si vous avez trigger(#[cuisine][lumiere][etat]#) == 1
il faut le remplacer par '#trigger_name#' == '[cuisine][lumiere][etat]'

Mais comment tester si c’est un état 0 ou 1 ou truc ?

Merci

  • #trigger_value# : Si c’est une commande qui a déclenché le scénario alors ce tag prend la valeur de la commande ayant déclenché le scénario