Bonjour,
Je commence à peine à m’initier à Jeedom et j’ai de nouveau besoin de votre aide.
J’essaie actuellement de récupérer la valeur stockée dans une commande info d’un équipement virtuel.
J’ai vu et réussi à récupérer la valeur avec le lien suivant :
Si je clique sur la roue cranté de la commande ID:6195 ; j’arrive sur une page blanche avec juste le texte 12. Ce 12 correspond à la valeur mise dans la commande 6192. Cette page a donc pour URL le premier lien que j’ai fourni dans mon premier post.
Mais comme on peut le voir, il faut renseigner à la fin l’ID de la commande ; or je préfèrerai si possible fournir une sorte de chemin d’accès de la forme [Aucun][Modbus_Bureau_PATRICIO][Etat_Marche]
Ceci est possible pour les variables de Jeedom avec un URL de la forme :
Dans l’idéal des choses, on essaie de se passer des scénarios, et de faire un script auquel on passerai en paramètre le nom d’une pièce, et ensuite le script mettra les valeurs souhaitées pour régler les climatisations des pièces. Ici le nom de la pièce est Modbus_Bureau_PATRICIO.
Sauf qu’ensuite j’ai plein d’autres pièces à rajouter. C’est pourquoi j’aimerai me passer des ID qui sont peu expressifs
En l’état, est ce que l’ID 6195 vous apporte la bonne information de marche?
Qu’est ce que vous entendez par script?
J’ai un peu du mal à saisir ce que vous souhaitez avec les informations que vous donnez, mais je pense qu’avec un virtuel on peut surement réaliser ce que vous souhaitez.
Oui la requête avec l’ID 6195 me retourne 12 ; c’est ce que je veux
Maintenant, j’aimerai avoir le même résultat, mais sans mentionner l’ID mais plutôt le nom de la commande (ici : Marche) !
J’utilise un plugin script pour coder en python. Avec ce dernier je ferai une requête internet pour justement récupérer ce fameux 12. Mais pour le moment ceci importe peu ; ce qui compte c’est de trouver un moyen pour faire une requête sans mentionner l’ID mais avec le même retour
Une commande reçoit son id lors de sa création, Cet id ne changera plus. Le problème se posera uniquement si l’on supprime la commande pour la recréer, dans ce cas, on aura une nouvelle commande avec un nouvel id.
Par contre, le nom d’un équipement ou d’une commande peut-être modifié et l’équipement peut être déplacé dans un autre objet (ou l’objet peut être renommé), dans ce cas une URL basée sur le nom [objet][équipement][commande] ne fonctionnera plus.
En conclusion il est moins risqué d’utiliser l’id que le nom.
J’utilise essentiellement les outils mis à ma disposition par jeedom. Je pense qu’il existe des solutions pour réaliser ce que vous souhaitez avec ses outils.
Je ne comprends pas ce qu’est la valeur 12.
Je ne trouve pas que les ID soient le problème. En revanche, un retour d’état « 12 » ne veut pas dire grand chose il est vrai. Alors je pense qu’il faut transformer cette valeur en passant par un virtuel.
Pour que 12 devienne « Bureau de Patricio en état de marche » par exemple
A première vue, @mistergogo veut récupérer une information externe à jeedom et l’utiliser pour mettre à jour une commande de type info.
Je pense que l’utilisation d’un script python est une bonne chose pour ce genre d’opération. Il lui faudra ensuite voir comment déclencher l’exécution de ce script. C’est là qu’un scénario pourra éventuellement lui être utile mais il existe d’autres possibilités pour lancer un script.
Je suis d’accord qu’un ID ne changera pas.
En revanche, j’essaie de faire en sorte que lorsque mon programme prend en entrée le nom d’une pièce, comme par ex : Bureau_1, il peut récupérer automatiquement l’état de marche de la clim, la température, humidité etc etc…
Et si je fonctionne par ID je ne peux pas faire cela car ce seront des ID différents ; tandis que s’il s’agit des noms des variables, alors la température s’appellera toujours température qu’il s’agisse du bureau_1 ou bureau_56.
Vous comprenez ? Ainsi j’aimerai faire ma requête par nom de variable/commande et non pas par ID
C’est exactement cela, seul un scénario sera utilisé et ce dernier exécutera mon script de façon régulière.
L’idéal serait de juste passer le nom du bureau en paramètre pour mon script, puis on récupère automatiquement température, humidité…
Un peu comme à la manière d’un fichier JSON qui récapitule toutes les informations d’une pièce et dont j’extrais ce que j’ai besoin
L’url ne prend que l’ID (numérique) de la commande à appeler, le code qui gère cette partie est ici:
Tu verras que dans tout le fichier, il n’y a pas de référence à la fonction cmd::byObjectNameEqLogicNameCmdName( qui est la seule fonction qui permette de répondre à ton besoin.
Et sinon, ne puis-je pas en quelque sorte copier-coller cette fameuse fonction ‹ cmd::byObjectNameEqLogicNameCmdName › quelque part pour ensuite l’utiliser ??
Et il n’existe pas de commande pour récupérer TOUTES les informations liées à un équipement virtuel ? Même si c’est un ID.
Je veux dire par là que si c’est un ID par pièce ça va ; mais si c’est un ID par information et par pièce c’est pas ce que je veux.
Un peu comme un fichier JSON qui répertorie toutes les infos de mon équipement ?
La difficulté est probablement que cette commande est une function PHP et que tu pourras difficilement l’utiliser dans un script python.
Il y a peut être une solution (un peu lourde je te l’accorde):
Utiliser l’API http://#IP_JEEDOM#/core/api/jeeApi.php?apikey=#APIKEY#&type=object pour récupérer l’id de l’objet
Utiliser l’API http://#IP_JEEDOM#/core/api/jeeApi.php?apikey=#APIKEY#&type=eqLogic&object_id=#OBJECT_ID# pour récupérer l’id de l’équipement
Utiliser l’API http://#IP_JEEDOM#/core/api/jeeApi.php?apikey=#APIKEY#&type=command&eqLogic_id=#EQLOGIC_ID# pour récupérer l’id de la commande.
C’est juste une idée, je n’ai pas vérifié ce qui est retourné par ces 3 API mais je suppose que tu auras
La liste des objets (avec leurs noms et ids)
La liste des équipement se trouvant dans un objet (avec leurs noms et ids)
La liste des commande d’un équipement (avec leurs noms et id)
Je suppose que tu as déjà vu la doc de ces API sur cette page
Edit:
Il y a aussi, comme tu me l’as indiqué, http://#IP_JEEDOM#/core/api/jeeApi.php?apikey=#APIKEY#&type=fullData. Semble permettre de faire une seule requête mais a voir si ça ne risque pas de retourner trop de datas selon l’installation Jeedom.
Le lien de la page que tu viens de m’envoyer est celle que j’ai chercher sans résultat !!!
Je potasse tout ça et reviendrai vers toi pour te donner des nouvelles.
Tu m’as redonné espoir ! Merci
On retrouve bien tout donc mes commandes info / commandes action. Je peux donc en extraire les ID (je sais pas encore comment mais je devrai m’en sortir) et récupérer les valeurs.
Néanmoins une question vient de me traverser l’esprit. Si je veux changer la valeur de ces commandes ; ça se fait comment ? Admettons que j’ai l’ID etc… Je veux maintenant en changer l’état
Avez-vous une idée là encore ?