Trigger - nom de l’équipement

Avec ce code je trouve la commande qui a déclenché un scénario

$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger());

Comment puis-je connaître le nom de l’équipement auquel appartient la commande?

$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger());
$eqLogicName = cmd::byString($trigger)->getEqLogic()->getHumanName();
1 « J'aime »

mon code final

$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger());
$eqLogicName = cmd::byString($trigger)->getEqLogic()->getHumanName();
$Variable_J = "nombre_variable";
$scenario->setData($Variable_J, $eqLogicName);

J’envoie la variable "nom_variable dans un télégramme

1 « J'aime »

Salut,

Si c’est juste pour récupérer le nom de l’équipement tu as cette possibilité aussi en 1 ligne :

$eqLogicName = cmd::byId(str_replace('#', '', $scenario->getRealTrigger()))->getEqLogic()->getHumanName();
$scenario->setData('nom_variable', $eqLogicName);

Je ne sais pas quelle est la finalité mais si tu as la possiiblité d’utiliser un tag plutôt qu’une variable cela semble à privilégier.

Plutôt avec byString :

$eqLogicName = cmd::byString($scenario->getRealTrigger())->getEqLogic()->getHumanName();

C’est du chipotage mais niveau ressources byId est plus léger car voici ce que fait byString :

$cmd = self::byId(str_replace('#', '', self::humanReadableToCmd($_string)));
1 « J'aime »

J’ai aussi découvert

name(eqLogic, 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.