Il semble que le plugin script ne retourne pas de résultat si utilisation d’une commande de type action.
Apparemment dans la dernière version seule une commande info retourne un résultat !
De plus une commande info ne prend pas de paramètre d’appel . Il semble bien que l’on se retrouve dans une impasse. Si l’on a besoin de passer des paramètres au script sous forme d’un slider ou d’un message et que l’on attende un résultat !
De plus, il a été ajouté à différents endroits du code un pseudo cache qui à mon sens ne sert à rien car forcément vide à chaque nouvel appel !
Ce peut être une solution.
Mais un script peut retourner une valeur en faisant simplement en php un echo de la valeur.
De plus cela ne répond pas complètement au problème que je soulève. Je ne cherche pas un contournement !
Si la commande est de type info pour lui affecter une valeur il suffit que le script fasse un echo de cette valeur. C’est plus simple que de manipuler l’api jeedom.
Mais, une commande de type info n’a pas de paramètre de type message.
Et une commande de type action n’a pas de retour. Ce qui n’était pas le cas dans la version précédente.
Je m’en suis sorti en dupliquant le plugin script , en le modifiant pour mes besoins et je n’utilise pour le moment plus le plugin officiel script.
Je ne réponds qu’à cette remarque en donnant mon exemple d’utilisation pour récupère les paramètres de ma chaudière Viessmann.
L’interrogation se fait par une URL. Le retour est un json de 300ko. Il y a une trentaine de paramètres.
Dans un équipement script, j’ai créé autant de commandes script de type info json que de paramètres.
A la 1ère requête faite à Viessmann, le résultat est mis en cache et le 1er paramètre extrait du json.
Tous les autres paramètres sont récupérés du cache sans nouvelle requête à Viessmann.
Je n’utilise pas l’API de thetrueavatar. Je n’ai jamais pu l’utiliser. (php 5.6 sur ma smart pour php 7 requis)
Et je la trouve trop compliquée pour juste parser un json.
J’ai fait un exemple simplifié:
Le script php appelé qui retourne du json:
Dans le cache (?) tu as l’url et non les valeurs ! A chaque fois tu appelles ton module Viessmann.
Comment accèdes-tu à la chaudière ? (En fait qu’y a-t-il dans ton code Viessmann?).
Tu as un vitoconnect ?
A+
Bernard
Il ya quand même un mystère sur le cache.
Dans le code au dessus, $this->getConfiguration('urlJson') contient l’URL de la requête et $_requet_cache[$this->getConfiguration('urlJson')] contient le résultat de la requête en json qui est utilisé.
Il n’y a pas de mystère la d’dans.
En faisant une requête entities > 111 > properties > value > value sur le json je récupère la temp de la pièce. Le pb est le numéro 111 qui varie selon les features ajoutées/supprimées.
J’ai pris l’exemple de ma chaudière Viessmann pour montrer à quoi peut servir le cache mais en réalité je parse le json dans le script.
Dans la version qui est sur mon Github, le script crée des variables qui sont récupérées dans un virtuel
Dans la version que j’utilise en ce moment, je renseigne les cmds d’un virtuel avec cmd::byEqLogicIdAndLogicalId et checkAndUpdateCmd.
J’ai un vitoconnect.
Mon Github: https://github.com/jpty/Jeedom-viessmann
Je n’ai fait que la recup des données. Pas d’action. Et uniquement le circuit de chauffage 0
Bon, j’ai dépouillé en large et en travers le plugin script.
A chaque appel du plugin script , les variables sont ré_initialisées, il ne peut y avoir de cache au niveau de la classe. C’est le principe du php à chaque appel de la classe au travers d’un appel http la classe est recrée et donc ses variables internes sont vides.
Donc, dans ton cas à chaque création d’une instance script il y a accès à Viessmann. Si dans ton occurrence de plugin il y a plusieurs scripts json le premier fait un appel Viessmann, et les suivants sur la même url vont taper dans le cache. Si 5 secondes plus tard tu recommences, un nouvel appel Viessmann est fait et bla,bla bla …
Par la même, si il n’y a qu’un appel dans le script le cache ne sert à rien.
De plus, j’ai regardé la doc jeedom du plugin , cette doc indique qu’il est possible de mettre les infos en cache et de définir un temps de conservation du cache. Mais, je ne vois pas comment le saisir au niveau de la définition d’un script json ! Une erreur de doc ? Une régression ?
A+
Bernard
Le cache n’est utile que s’il y a plusieurs données à extraire d’un même appel.
Après ce n’est qu’une variable conservée le temps de vie de l’exécution de toutes les cmds de l’équipement script.
Il fonctionne aussi pour le xml et le html. Cela réduit le trafic si l’on veut récupérer plusieurs valeurs sur une page html.
Si vous n’avez qu’une seule valeur à récupérer, on est d’accord il ne sert pas.
Pour le Lifetime du cache dans le bloc Options qui apparait dans la doc:
C’est une erreur dans la doc du plugin script.
Dans le commit du 3 décembre 2015, les 2 lignes suivantes ont été supprimées du fichier desktop/js/script.js
tr += '<span><input type="checkbox" class="cmdAttr bootstrapSwitch" data-size="mini" data-l1key="cache" data-l2key="enable" checked data-label-text="{{Cache}}" /></span> ';
tr += '<input style="width : 100px;" class="tooltips cmdAttr form-control input-sm" data-l1key="cache" data-l2key="lifetime" placeholder="{{Durée de vie du cache (s)}}" title="Durée de vie du cache (s)">';