Comment récupérer le nom d'un objet à partir de son id en PHP?

Bonjour,

Je cherche à coder des scenarios génériques qui s’appliquent à plusieurs pièces de ma maison.
Je sais passer en paramètre un tag qui me permet de spécifier la pièce (i.e. l’objet) concerné et le récupérer dans un bloc code du scenario appelé :

Déclenchement :

Récupération dans un bloc de code du scenario appelé :

Le problème que je rencontre est que les valeurs des tags transmises sont censées ne contenir que des caractères minuscules (même si ça fonctionne apparemment avec des majuscules…).

Or, les noms de mes pièces comportent des espaces et des caractères accentués, et ça m’embête de les changer car ils sont visibles un peu partout.

Donc je voudrais à la place transmettre les pièces sous la forme de leur id.
Pour cela j’ai besoin de récupérer le nom d’un objet à partir de son id et vice-versa.

J’ai bien essayé qqchose dans ce genre :

…mais ça me donne l’erreur « Class ‹ object › not found »…
Pourtant la classe object est bien documentée dans la doc du core Jeedom… bon, après je suis loin de comprendre et maîtriser la chose !

Donc, comment faire ???

À l’avance merci de votre aide !

Cest quoi ton besoin exacte. Tu veux faire quoi ?
Car en v4.3 il y a des fo.ctions generiques types sur les objets.

D’une manière général, pour récupérer chaque nom (commande, équipement et objet).

$cmd = cmd::byId($id);
$cmdName = $cmd->getName();
$eqLogic = $cmd->getEqLogic();
$eqLogicName = $eqLogic->getName();
$object = $eqLogic->getObject();
$objectName = $object->getName();

Salut,

Ca devrait être mieux avec :

jeeObject::byId(3)->getName();

Je veux pouvoir utiliser un scenario unique pour déclencher des actions sur diverses pièces de la maison. Par exemple, basculer le thermostat d’une pièce « Cible » comme ici :

Ah ouiiii !!! ça fonctionne effectivement, et également pour récupérer l’id à partir du name :

J’avais creusé mais je m’étais fourvoyé pour 3 raisons :

1 - J’étais tombé sur cette doc, apparemment obsolète :
https://jeedom.github.io/documentation/phpdoc/classes/object.html#source-view
…qui ne cite pas la classe jeeObject

…alors que la bonne, pour la V4.3, c’est celle-ci :
https://doc.jeedom.com/dev/phpdoc/4.3/

2 - J’avais quand même vu que la classe jeeObject existait en fouillant dans le forum, mais je n’avais pas en tête que le code PHP est sensible à la casse, et j’avais essayé « jeeobject » sans succès…

3 - Je conservais trace de ce qui se passait dans mon code avec des lignes censées insérer des infos dans la log, mais je m’y prends apparemment mal car ce genre de ligne trouvée qqpart dans le forum n’a pas d’effet… (et donc j’étais moitié aveugle…) :

Bon, j’ai vu dans la doc que la syntaxe attendue, c’est

…mais je ne comprends pas ce qu’est censé être $_log ni $_logicalId ni comment faire, au final


ou

ne fonctionnent pas…

Donc, merci beaucoup pour la solution :+1:, et si l’un d’entre vous pouvait me dire comment insérer un texte dans la log (le truc vraiment super basique, que je suis désolé de demander, mais je ne trouve pas, ni dans les forums ni dans la doc… sans doute que je ne cherche pas bien, pourtant je prends du temps… :roll_eyes:)

…vu le début du code de la méthode add sur la classe log dans le core :


…c’est dans les paramètres $_log et $_type que se situe le pb…

Tout est indiqué dans la documentation des scénarios.

Pour écrire dans les logs du scénario via un bloc code il faut utiliser :

$scenario->setLog($message); : Écrit un message dans le log du scénario.

Via un bloc action :

  • Ajouter un log (log) : Permet de rajouter un message dans les logs.

Ah effectivement, c’est tout bête… je me suis fourvoyé à la lecture de ce message : equivalent fonction log::add ? - Forum Communauté Jeedom

…visiblement trop vieux !

Oui, tu as raison, je n’avais pas regardé au bon endroit :crazy_face:
Encore merci à toi !

…et sinon, je connais le principe des génériques et je les utilise par ailleurs, mais, sauf erreur c’est plutôt fait pour gérer des ensembles d’équipements identiques, et donc pour variabiliser les équipements, pas les objets…

@+

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