@naboleo, @Bercolly, @Mips
Pour le problème du script avec paramètre, le comportement ressemble à ceci : il semble que le script récupère la valeur du paramètre à la sauvegarde du script, et ne la met plus à jour en suite.
Si je l’exécute sans sauvegarde, j’obtiens toujours le même résultat, quelle que soit la valeur envoyée, et ce résultat correspond à la valeur de la variable ou de la commande à la dernière sauvegarde du script.
Si je sauvegarde le script avant chaque modification de la variable (ce qui n’est pas envisageable), alors le résultat est bon à chaque fois.
Si quelqu’un a une idée…
Du coup, je vais investiguer la réponse de @naboleo
Merci
Mes exemples de non fonctionnement sont différents :
Je parle de l’exécution de la fonction directement dans le scénario. ainsi :
Ceci fonctionne (avec une variable)
Ca donne l’impression que la valeur du paramètre n’est pas évaluée avant le passage du paramètre, mais dans la fonction appelée. C’est peut être un fonctionnement normal php, maisj’ai été habitué au contraire, alors…
Mais toutes dans le même fichier user.function.class.php ? Ou chacune avec un autre nom de fichier (par exemple le nom de la fonction).php dans le même répertoire ?
Pour la commande, j’ai pas testé
Pour le tag, c’est un exemple que j’évoque en parlant de mélange … En sortie le contexte d’exécution parent n’est pas mis à jour. C’est pas lié au tag, c’est lié au fonctionnement du core qui ne fait pas de setTag() automatiquement et à l’analyseur syntaxique parfois capricieux…
Mais pour une affectation directe, il y a plus simple : passer par un virtuel fera le boulot pour toi en appelant ta fonction
Comme je le disais, tu peux faire 40 fichiers avec n’importe quel nom et dedans ta fonction…
Personnellement en terme de lisibilités, je suis pas convaincu de cette solution
@naboleo
Merci. je pense que je vais m’en sortir avec ça.
Mais pour en revenir au plugin script, objet de ce post, car même si c’est mieux de faire des fonctions, j’aimerais bien compredre comment ce plugin est sensé fonctionner.
Déjà quand tu dis :
Je pensque tu fais allusion au changement de code du plugin, pour le retour de paramètre dans les commandes action, proposé par @Bercolly ici :
ça je comprends bien que ça va sauter à la moindre modif, mais ce changement de version ne va pas faire sauter tous les scripts définis dans le plugin et les commandes associées ? Juste pour être sûr, j’ai d’autres ciommandes (sans paramètres) dans le plugin .
A tous (dont @Bercolly, @Salvialf, @Mips)
Pour ce qui est du fonctionnement, j’ai beau tester au plus simple, ça ne fonctionne pas. Voici mon exemple :
Le virtuel :
Le code du cript : se contente de retourner la valeur reçue en paramètre !
Voici quelques exemples de ce que je reçois sur Telegram :
duree : 50 mn pour 3000 secondes
duree : 50 mn pour 4000 secondes
duree : 50 mn pour 5000 secondes
duree : 50 mn pour 65000 secondes
…
Je fais une sauvegarde du script…
duree : 18h 3 mn 20 secs pour 65000 secondes
duree : 18h 3 mn 20 secs pour 55000 secondes
Nouvelle sauvegarde, et je change la durée envoyée…
duree : 15h 16 mn 40 secs pour 40000 secondes…
Ce qui correspond au calcul fait sur la valeur précédent la sauvegarde à 55000 !!
Je pense qu’il y a un sérieux problème. Au départ, je pense que c’est moi, puisque je n’y connais rien. Mais si c’est moi, que dois-je remplacer ? Et si ça n’est pas moi, comment le dire ?
tout ce que tu as ajouté/corrigé dans les fichiers d’origine du plugin va disparaître (et donc la modif en question)
tous fichiers des sous-répertoires de script et qui ne sont pas ceux du plugin vont disparaitrent (sauf le contenu de /data)
les configurations du plugin script dans jeedom vont rester
MAIS comme le mécanisme de retour ne fonctionnera plus, par voie de conséquence, une partie de tes scripts non plus. Jusqu’à une re-correction du code du plugin de ta part… Niveau maintenant, c’est très moyen
Re,
La modif que j’ai faite ne concerne que mon cas personnel. Je ne mets plus à jour le plugin script, car j’ai utilisé une autre manière plutôt triviale d ele faire fonctionner. cela convient à mon usage. Mais ce n’est certainement pas une solution pour tout le monde.
Concernant la mise à jour de la commande info du script, il est obligatoire de faire un refresh, comme je l’ai précisé dans le code fourni.
avec par exemple :
@Bercolly
Merci, je comprends bien que ça contourne le problème, mais comme écrit plus haut, il me semble que le refresh nécessite de passer par un bloc code ? Sinon, je ne sais pas comment l’appliquer.
Y a-t-il un moyen de le faire sans bloc code ?
Merci
Ta réponse est hors sujet. Apparemment, phillox veut récupérer une info à la demande, aps en utilsant un cron.
L’utilisation d’un cron est tout à fait réducteur. Il y a d’autres cas d’usage. Et là pour l’instant, on est sans solution. Sauf de faire un refresh ce que le cron fait par ailleurs.
@Bercolly
Ahhh… Je crois que ça y est ! Pffff… Je dois avoir la comprenette difficile.
Bon, j’ai créé la fonction LanceScript (histoire de modifier ton code ) dans /data/php/user.function.class.php.
Et au lieu de récupérer ma valeur info de script avec un simple :
Et là, ça fonctionne !
Je ne comprenais pas comment je pouvais récupérer une valeur sans exécuter le script, mais comment l’exécuter, alors, j’étais loin d’une solution - et avec refresh en plus.
Evidemment, il faut passer par une fonction (ce que je voulais éviter en passant par les scripts). mais enfin c’est une seule !
@Salviaf dont je vois le message arriver dans sa discussion avec @Bercolly, le cron ici ne me sert à rien, car toutes les minutes maxi. Là je veux que le script me renvoie la bonne valeur chaque fois que j’en ai besoin, au moment où j’en ai besoin, et plusieurs fois dans la même seconde si besoin (j’exagère un peu, mais bien plus d’une fois pas minute est loin d’être invraisemblable)…
En tous cas maintenant, grâce à toi Bercolly, j’ai une solution faisable via les scripts, et grâce à @naboleo, j’ai une solution via les fonctions. On ne prête qu’aux riches ! Merci à tous les deux, et aussi à tous les autres qui ont participé
Bonne fin de journée.
d’abord tu critiques que c’est mal foutu parce qu’une commande info ne s’actualise pas toute seule; @salviaf répond que soit faut mettre un cron soit faut l’appeler manuellement pour avoir son info.
ensuite « c’est mal foutu le cron, c’est pas flexible, »
pour finir: « ah j’ai gagné je suis le plus fort, même pas besoin d’un cron, c’est moi qu’avait raison »
Mais c’est pitoyable comme interventions…
(Oui je sais déjà ce que tu vas répondre à ceci, ce n’est pas très grave, on a l’habitude)