Bloc CODE - Utilisation fonction triggerValue()

Bonjour,

dans un bloc code, je cherche à récupérer la valeur de la commande qui a déclenché le scénario avec le code :

$value = triggerValue();

et j’obtiens cette erreur dans le log du scénario :

[2022-03-31 18:25:19][SCENARIO] Call to undefined function triggerValue()

Il me semble suivre la doc ou alors je n’ai pas compris ? :thinking:

Quelqu’un pour m’éclairer ?

Merci d’avance.

Jeedom version 4.2.14

Tu devrais pouvoir trouver des réponses ici.

Bonjour @Jeandhom ,

Et merci pour le lien.
Je connaissais ce lien qui est très utile mais même après avoir revérifié, cela ne m’explique pas trop l’erreur constatée.
triggerValue() renvoie bien la valeur du trigger dans le scénario en ligne graphique (affecté à un tag par exemple) mais renvoie une erreur dans le bloc code …

Dans la doc Jeedom, il n’est pas fait mention de ce type de comportement :thinking:

Bonjour,

Voir ici pour récupérer la valeur du trigger.

Tu n’utilises tout simplement pas les bonnes commandes.
Mais pourquoi passer par un bloc code ?
Tu peux aussi passer par un tag que tu utilises ensuite dans ton bloc code.

1 « J'aime »

Bonjour @Madcow ,

OK. Merci pour le lien, je vais effectivement utiliser les commandes préconisées par @Jeandhom dans son post.
C’est un bloc code que je multiplie dans mon Jeedom et même si passer par un tag (en saisie graphique) fait l’affaire, c’est quand même un peu dommage d’avoir à écrire les lignes de saisie graphique à chaque fois alors que dans le bloc CODE, c’est intégré quand tu le dupliques :wink:

Bonne journée à vous.

1 « J'aime »

autrement si tu veux un autre exemple, voilà comment je fais pour trouver la commande dans la liste :

$trigger = $scenario->getRealTrigger();
if ($trigger != ‹ user ›) {
$scenario->setLog(‹ __ ›.$collectDate.’ → ‹ .‹ trigger= ›.$trigger);
$cmdID = str_replace( ›#', ‹  ›, $trigger);
$cmdName = cmd::byId($cmdID)->getHumanName();
$cmdValue = cmd::byId($cmdID)->execCmd();

Bonjour @neurall ,
Sympa cette autre écriture :slightly_smiling_face:
Tu passes par l’Id et c’est plus complet avec le test ‹ user ›.
Merci et bonne journée.

dans cet exemple, je filtre le fait que tu lances à la main ‹ user ›, mais tu peux t’en passer si tu veux tester manuellement. après je récupère l’ID de l’objet info et sa valeur, avec ça tu peux faire tout ce que tu veux, tu as l’ID et la valeur :slight_smile:

ps: les balises n’ont pas bien fonctionné au collage, je sais pas pourquoi :wink:

Tu peux simplifier avec:

cmd::byString($trigger)

Plutôt que:

cmd::byId($cmdID)

Plus besoin de :

$cmdID = str_replace( '#’, '', $trigger);
1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.