triggerValue fonctionne-t-il vraiment?

Bon et bien avec un changement d’état en 1 seconde, ça va être compliqué de faire des tags :cry:

De toute façon, mettre des tags plus tôt dans le scénario ne fera que limiter l’impact du PB, mais ne le réglera jamais.

→ la solution la plus pereine reste de séparer les scénarios

Bonjour à tous
Voyant autant de personnes ayant répondu, je me demande si je suis passé à côté d’un truc ou… si c’est vous
:thinking::face_with_monocle:

Le résultat est incorrect car le triggerValue NE S’UTILISE PAS COMME ÇA !
NON ???

Essaie ton scénario en utilisant
triggerValue()
Avec rien entre les parenthèses / Pas avec triggerValue(#l’information de la télécommande#)

Bonne journée !

PS : @mich0111 / @ngrataloup / @Bison
Un avis ? Je suis pas devant mon ordi (jeedom) pour tester, vous me « déclenchez » le doute :rofl:

Surtout que « normalement » même si la télécommande change, le triggerValue lui reste le même durant tout le scénario (je fais parti de l’école qui aurait préférer que non - que l’on doive le stocker au démarrage dans un tag, si l’on veux mais bref, il change pas !)

1 « J'aime »

Hello,

Pour moi il y a eu une modification en 4.4 mais comme elle n’est qu’en bêta et que OUARZA n’a pas spécifié dans quelle version de Jeedom il était, pour moi cette fonction n’est pas encore en capacité de conserver la valeur au moment du déclenchement et tout au long du scénario (sur un Jeedom en v4.3 donc).

Hello,
Je confirme, je ne suis pas en béta.
Mathieu

Ceci étant, sur un plan purement logique, conserver en mémoire une valeur qui ne correspond plus forcément à la réalité est quelque peu risquée.
Selon que tu te serves de triggervalue() ou que tu testes directement la valeur de la même commande tu aurais des résultats différents !!!
Bonjour le debugging.
Il va falloir mettre des précautions et des alertes un peu partout au niveau de la doc.

Alors la je ne vois pas trop en quoi c’est problématique. triggerValue signifiant littéralement « valeur de déclenchement », je ne vois pas bien comment les gens vont se planter et aller récupérer la valeur de déclenchement s’il ne souhaite qu’aller chercher la valeur « live » de la commande.

1 « J'aime »

heuuu
J’ai du mal m’exprimer !

Voici comment on test la valeur du déclencheur : triggerValue() == XX
Voici comment @OUARZA l’utilise :

Qu’on soit en stable / Béta / Alpha, pour moi, il utilise mal la fonction. Non ??
Autrement dit « sont scénario fonctionnerait s’il utilisait triggerValue() ==X »
Non ?

@OUARZA : Peux-tu essayer ton scénario en remplaçant tout tes tests avec triggerValue() ==X ?
S’il te plait…

Comme ceci ?

trigger(#[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-1]#) == 1 ET triggerValue() == 4

Exactement

PS : sur le keyFob tu as scene et sceneID
Tu devrais utiliser scene (qui informe du bouton --premier chiffre du nombre-- + le type d’appuis --second chiffre du nombre–) ça va tout simplifier.
Ainsi :

  • Comme déclencheur tu en a plus qu’UN SEUL : Scene
  • Tout tes tests deviendrons simplement
triggerValue() == XX

Tout simplement parce que entre ce que veut dire une commande et ce que les utilisateurs en attendent, il y a une marge.
Beaucoup de développeurs aguerris vont saisir la nuance mais, et j’en suis persuadé, la majorité des jeedomiens non.
Jeedom est sensé s’adresser à des utilisateurs pas forcément professionnels du codage (:rofl:) qui, pour certains le decouvrent avec les scénarios.
Alors expliquer qu’une information qui pointe sur la même data peut, selon le cas, avoir telle ou telle valeur va provoquer des court-circuits neuronaux.
Mais ce n’est que mon humbe avis.
En ce qui me concerne, cela ne me posera pas de problème.
La doc a intérêt à être très très précise.

Si je ne me trompe pas, c’est ce que j’avais avant avec le plugin Zwave.
Depuis le passage sur Zwavejs, j’ai 2 commandes par bouton.

:hushed:
J’y suis pas encore passé. Si c’est le cas, c’est la loose…
Soit il existe un truc pour le retrouver (à voir plus tard / création de commande dans Zwavejs). Soit tu crées un virtuel qui recompile les 2 fonctions (en tout cas c’est ce que je devrais faire car j’utilise partout Scene…)

Oui dans le sens ou triggervalue() ne prend (à ce jour) aucun paramètre mais jeedom est permissif la dessus et cela ne pose pas de problème (pour l’instant) d’en donner.
SI un jour cette fonction attend un paramètre (optionnel forcément), alors cela posera un problème.

mais donc ca ne change rien au final puisque la ajd en 4.3 triggervalue() équivaut à exécuter la commande, donc autant utiliser la commande directement;
demain en 4.4 cela ne sera plus le cas (et c’est probablement mieux même si on risque d’avoir quelques posts à ce sujet, on y répondre à ce moment là)

donc ajd, la seule solution c’est bien d’avoir x scénarios indépendant qui déclenchent directement avec la condition sur la valeur ainsi on est certain du cas dans lequel on se trouve

Merci Mips pour ces détails, mais mon propos était simplement qu’il y a eu 20 post sur la question de Ouarza « triggerValue fonctionne-t-il vraiment ? »
et que personne lui a dit « oui, juste il faut rien mettre entre les parenthèses ! »
Le reste était simplement pour préciser que ça fonctionnerai ainsi…

EDIT : Je viens de comprendre !
LES DEUX SONT POSSIBLES !!! C’est ça @Mips ?
Je l’ai toujours utiliser (comme dans la doc) avec triggerValue()
Mais triggerValue(#le nom du déclencheur#) est possible !
Je vais essayé ce soir… MERCIII

@Henri : Log : triggerValue : 4

Pas sur d’avoir compris.
Ça fonctionne ? Tu peux mettre le log du scénario modifié ?

Oui cela fonctionne, je voudrais tester sur plusieurs jours.

[2023-07-18 12:07:56][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Itinerant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-1] (4).
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [condition] : if (trigger(#[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-1]#) == 1 ET triggerValue() == 4) OU (trigger(#[Itinérant][12 - Fibargroup Keyfob FGKF601 Cédric][CentralScene-3]#) == 1 ET triggerValue() == 4)
[2023-07-18 12:07:56][SCENARIO] Evaluation de la condition : [(1 == 1 ET 4 == 4) OU (0 == 1 ET 4 == 4)] = Vrai
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [action] : then
[2023-07-18 12:07:56][SCENARIO]    Log : Portail temporaire
Valeur Mathieu 4
Valeur Cédric 4
[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-1]
#CentralScene#
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [condition] : if (trigger(#[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-3]#) == 1 ET triggerValue() == 4) OU (trigger(#[Itinérant][12 - Fibargroup Keyfob FGKF601 Cédric][CentralScene-6]#) == 1 ET triggerValue() == 4)
[2023-07-18 12:07:56][SCENARIO] Evaluation de la condition : [(0 == 1 ET 4 == 4) OU (0 == 1 ET 4 == 4)] = Faux
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [condition] : if (trigger(#[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-4]#) == 1 ET triggerValue() == 4) OU (trigger(#[Itinérant][12 - Fibargroup Keyfob FGKF601 Cédric][CentralScene-5]#) == 1 ET triggerValue() == 4)
[2023-07-18 12:07:56][SCENARIO] Evaluation de la condition : [(0 == 1 ET 4 == 4) OU (0 == 1 ET 4 == 4)] = Faux
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [condition] : if ((trigger(#[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-5]#) == 1 ET triggerValue() == 4)  OU (trigger(#[Itinérant][12 - Fibargroup Keyfob FGKF601 Cédric][CentralScene-4]#) == 1 ET triggerValue() == 4)) ET #[Maison][Alarme intrusion][Actif]# == 0
[2023-07-18 12:07:56][SCENARIO] Evaluation de la condition : [((0 == 1 ET 4 == 4)  OU (0 == 1 ET 4 == 4)) ET 0 == 0] = Faux
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [condition] : if ((trigger(#[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-6]#) == 1 ET triggerValue() == 4) OU (trigger(#[Itinérant][12 - Fibargroup Keyfob FGKF601 Cédric][CentralScene-2]#) == 1 ET triggerValue() == 4)) ET #[Maison][Alarme intrusion][Actif]# == 0
[2023-07-18 12:07:56][SCENARIO] Evaluation de la condition : [((0 == 1 ET 4 == 4) OU (0 == 1 ET 4 == 4)) ET 0 == 0] = Faux
[2023-07-18 12:07:56][SCENARIO] - Exécution du sous-élément de type [action] : else
[2023-07-18 12:07:56][SCENARIO] Fin correcte du scénario

J’ai modifié autre chose, j’ai supprimé la répétition des commandes des télécommandes.
Je me suis aperçu que lorsqu’on actionne la touche, cela fait 4,4,90
Mathieu

ha ba voilà
Ça fonctionne !??

Pour l’instant oui, je souhaite tester sur plusieurs jours.
Donc triggervalue() = valeur de la commande qui déclenche le scénario au moment du déclenchement ?

EDIT: cela ne marche pas…
[2023-07-18 13:16:07][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Itinerant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-4] (4).
entre ce SI
[2023-07-18 13:16:07][SCENARIO] - Exécution du sous-élément de type [condition] : if (trigger(#[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-1]#) == 1 ET triggerValue() == 4) OU (trigger(#[Itinérant][12 - Fibargroup Keyfob FGKF601 Cédric][CentralScene-3]#) == 1 ET triggerValue() == 4) [2023-07-18 13:16:07][SCENARIO] Evaluation de la condition : [(0 == 1 ET 4 == 4) OU (0 == 1 ET 4 == 4)] = Faux [2023-07-18 13:16:07][SCENARIO] - Exécution du sous-élément de type [action] : else
Et celui-là
[2023-07-18 13:16:07][SCENARIO] - Exécution du sous-élément de type [condition] : if (trigger(#[Itinérant][8 - Fibargroup Keyfob FGKF601 Mathieu][CentralScene-3]#) == 1 ET triggerValue() == 4) OU (trigger(#[Itinérant][12 - Fibargroup Keyfob FGKF601 Cédric][CentralScene-6]#) == 1 ET triggerValue() == 4) [2023-07-18 13:16:07][SCENARIO] Evaluation de la condition : [(0 == 1 ET 90 == 4) OU (0 == 1 ET 90 == 4)] = Faux [2023-07-18 13:16:07][SCENARIO] - Exécution du sous-élément de type [action] : else
La valeur triggerValue() passe de 4 à 90 entre les 2 SI.