Bloc code - comment récupérer le nom d'un équipement

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

Pour compléter la réponse de Jeandhom :

$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger());
$cmd = cmd::byString($trigger);
$eqLogicHumanName = $cmd->getEqLogic()->getHumanName(); // renvoi --> [objet][equipement]
$eqLogicName = $cmd->getEqLogic()->getName(); // renvoie --> equipement

Merci à tous les 2, c’est exactement ce que je cherchais !!!

Oui mais il me semble que cela ne fonctionne pas si
trigger() == "user"
ce qui se produit lorsqu’on lance le scénario manuellement (en cas de test).

Une méthode alternative (qui n’est pas de moi, trouvée dans un autre post) peut être un peu plus robuste :

$scenarioTriggerName = cmd::cmdToHumanReadable($scenario->getRealTrigger());
$scenarioTriggerID = $scenario->getRealTrigger();
$equipmentHR = str_replace('#', '', $scenarioTriggerName);		// Human Readable Equipment Name
$equipmentID = str_replace('#', '', $scenarioTriggerID);		// Equipment ID
$equipmentStringArray = explode(']', str_replace('[', '', $equipmentHR));
$equipmentGroup = $equipmentStringArray[0];
$equipmentName = $equipmentStringArray[1];
$equipmentInfo = $equipmentStringArray[2];

// Écrit un message dans le log du scénario
$message = "DEBUG";
$scenario->setLog($message);
$scenario->setLog("Equipment HR = " . $equipmentHR);
$scenario->setLog("Equipment ID = " . $equipmentID);
$scenario->setLog("Equipment Group = " . $equipmentGroup);
$scenario->setLog("Equipment Name = " . $equipmentName);
$scenario->setLog("Equipment Info = " . $equipmentInfo);
2 « J'aime »

Merci beaucoup pour cette proposition, interessant pour extraire sous forme de tableau l’objet (Group) l’équipement (Name) et la commande (Info)

Norbert

Je pense qu’il est préférable d’utiliser les fonctions du core plutôt que de faire du traitement de chaînes.

1 « J'aime »

Bonsoir @Jeandhom?,

Oui, je pense aussi qu’utiliser les fonctions du core permet une écriture compacte et un traitement optimisé.
Cela m’interesserait beaucoup.

Mais ou trouve t-on le « manuel » pour pouvoir les utiliser ?

J’ai cherché dans la doc Jeedom en ligne ce que faisait l’expression « $cmd->getEqLogic() » par exemple et je n’ai pas trouvé (sauf erreur de ma part).

Je suis preneur d’un lien ou trouver cela.

est-ce ca que tu souhaites ?
dispo au niveau de la DOC jeedom

Pas très lisible pour moi qui ne suis pas développeur, mais j’imagine que ca doit parler à un dev !

Norbert

Tout est là.

https://doc.jeedom.com/dev/phpdoc/4.1/

Par contre, pour comprendre l’utilisation des fonctions, bien souvent il faut regarder directement le code du core.

@ngrataloup, @Jeandhom
Merci pour le lien. A première vue, c’est un peu plus ardu que la doc Jeedom :wink:
Je vais regarder et essayer de m’approprier ces fonctions.

1 « J'aime »

https://www.php.net/manual/fr/langref.php

Bonjour,
Encore merci pour tous les liens que tu as publié hier soir.
Mais j’avoue avoir cherché mais je n’arrive pas à trouver …
Alors, lorsque l’équipement est décrit avec 3 champs [objet][equipement][commande], quel serait alors le code ‹ Core › pour récupérer la string commande ?
Merci d’avance

1 « J'aime »

Salut,

$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger());
$cmd = cmd::byString($trigger);
$cmd_mame = $cmd->getName();
$cmd_value = $cmd->execCmd();

$scenario->setLog($cmd_mame); // nom de la commande Info
$scenario->setLog($cmd_value); // valeur de la commande Info

Donc

$cmd_mame = $cmd->getName();         // le nom de la commande
$eq_name = $cmd->getEqLogic()->getName();     // le nom de l'equipement

et pour le nom de l’objet ?

Je vais finir par poster le fichier source :rofl:

$trigger = cmd::cmdToHumanReadable($scenario->getRealTrigger());
$cmd = cmd::byString($trigger);
$cmd_mame = $cmd->getName();
$eqLogicName = $cmd->getEqLogic()->getName();
$eqLogic = eqLogic::byId($cmd->getEqLogic()->getId());
$object = $eqLogic->getObject()->getName();
$cmd_value = $cmd->execCmd();

$scenario->setLog($object); // nom de l'objet
$scenario->setLog($eqLogicName); // nom de l'équipement
$scenario->setLog($cmd_mame); // nom de la commande Info
$scenario->setLog($cmd_value); // valeur de la commande Info
5 « J'aime »

Cool d’avoir les bonnes commandes pour extraire l’objet, l’équipement et la commande …

Merci @Phpvarious pour ces infos.

Perso, moi qui ne connait pas le code Jeedom plus que ça, je ne trouve pas que ce soit super intuitif de retrouver ces lignes de commmandes.
Or, l’extraction de ces 3 champs d’un équipement est, je trouve, assez basique et très souvent utile lorsque l’on veut faire appel à un bloc Code.

Même si tout, ne peut pas être décrit et expliqué en détail, on peut peut être regretter que ces trois fonctions en particuliers ne soit pas plus décrites en détail dans la doc ou le tuto de @kiboost ( Petits codes entre amis).

Encore merci :+1:

C’est le tuto de @kiboost, qui est repris dans la doc.

Tu a toutes les fonctions du core ici : API Documentation
Pour le reste, doc php pure et dure

Pour ton utilisation des blocs codes peu etre, d’autres ne s’en servirons jamais. Y’a plus de 35000 utilisateurs de Jeedom tu imagine si il fallais tout mettre ? Ah mais si justement → API Documentation

:sneezing_face: :beers:

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.