j’ai utilisé des scripts python pour allumer, éteindre et connaître le status de mon videoprojecteur Sony qui n’utilise malheureusement pas le protocole pjlink mais pj talk.
Lorsque j’allume le vidéo projecteur, il passe par plusieurs status avant de passer en POWER_ON.
Lorsqu’il est éteint, son status est STANDBY.
Comme je ne souhaite pas gaspiller de la ressource, je ne veux pas utiliser la fonction auto-actualisation.
Comment forcer le rafraichissement d’une info script par un scenario?
Comment forcer le rafraichissement d’affichage d’une tuile par scenario (pareil à appuyer sur les 2 flèches recyclage en haut à droite d’une tuile)?
j’ai essayé le code
eqLogic::byId(10673)->updateInfo();
ou dans un bloc action :
#[Salle de sport][Sony vidéoprojecteur][Rafraichir]#
mais ça ne marche pas.
C’est seulement quand j’appuie sur les flèches de rafraichissement de la tuile que l’info se met à jour
Euh non…finalement ça ne marche pas.
J’ai trouvé un moyen de contourner le problème en créant une action avec le même script que l’info. Et j’ai lancé dans mon scenario une boucle avec l’action « STATUS REFRESH » jusqu’à obtenir, soit STANDBY, soit POWER_ON.
peut-être que ça te semble idiot mais quand j’avais mis #[Salle de sport][Sony vidéoprojecteur][Rafraichir]#
ça ne fonctionnait pas.
Quand on lance une action dans un objet script, cela met à jour les commande infos une seule fois.
Je ne voulait pas utiliser la fonction auto-actualisation car c’est inutile la plupart du temps.
Le vidéoprojecteur met du temps à s’allumer et à s’éteindre. Il me fallait un scenario qui relance régulièrement la mise à jour des commandes infos jusqu’à obtenir STANDBY ou POWER_ON.
Toutes mes tentatives précédentes ne mettaient pas à jour l’info sur la tuile même après la boucle de 15 tentatives, alors qu’il suffisait d’appuyer sur les flèches refresh de la tuile pour avoir l’info actualisée.
Visiblement, je n’ai toujours pas trouvé la méthode pour forcer le lancement d’une commande info script.
Par contre, je sais lancer une commande action script.
Si tu as la commande magique pour forcer une commande info script à se rafraîchir et à rafraîchir la donnée sur la tuile, je suis preneur.
La double flèche en haut à droite sur les tuiles jeedom,
c’est la commande « Rafraichir » dont je parle juste au dessus pourtant; c’est le cas sur tous les équipements de tous les plugins (utilisant les tuiles du core)
je comprends. Elle se trouve dans les commandes avancées. Je l’avais mis dans mon scenario à la place de la commande action script mais l’info STATUS ne se mettait pas à jour.
Appuyer sur ON ou OFF lance le scenario après le lancement du script python associé
Si je ne me trompe pas, chaque élément de la boucle du scenario durant 3 secondes, si on surveille la tuile, on devrait voir les flèches tourner toutes les 3 secondes au moment du lancement de l’action #[Salle de sport][Sony vidéoprojecteur][Rafraichir]# et ensuite l’info STATUS s’actualise.
Malheureusement, ce n’est pas le cas. Si quelqu’un arrive à reproduire ce dysfonctionnement, cela permettrait de pointer du doigt un bug du core ou du plugin script. Ou alors je me plante et je ne lance pas la bonne action « Rafraichir ».
------------------------------------
[2024-05-06 08:43:46][SCENARIO] -- Début : Scenario lance manuellement.
[2024-05-06 08:43:46][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-05-06 08:43:46][SCENARIO] Exécution d'un bloc élément : 1474
[2024-05-06 08:43:46][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-05-06 08:43:46][SCENARIO] Exécution d'un bloc code
[2024-05-06 08:43:46][SCENARIO] Fin correcte du scénario
Par contre je confirme, @Mips, que j’ai le même comportement chez moi en 4.4.3 et sur cette version du plugin 2024-01-11 12:54:18 : la commande Rafraichir ne fait visiblement rien. Pas trop le temps d’aller plus loin dans l’analyse pour le moment.
------------------------------------
[2024-05-06 08:46:43][SCENARIO] -- Début : Scenario lance manuellement.
[2024-05-06 08:46:43][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-05-06 08:46:43][SCENARIO] Exécution de la commande [Météo][Market Blitzortung][Rafraichir]
[2024-05-06 08:46:44][SCENARIO] Exécution d'un bloc élément : 1474
[2024-05-06 08:46:44][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-05-06 08:47:29][SCENARIO] -- Début : Scenario lance manuellement.
[2024-05-06 08:47:29][SCENARIO] - Exécution du sous-élément de type [action] : action
[2024-05-06 08:47:29][SCENARIO] Exécution de la commande [Météo][Market Blitzortung][Rafraichir]
[2024-05-06 08:47:29][SCENARIO] Exécution d'un bloc élément : 1474
[2024-05-06 08:47:29][SCENARIO] Fin correcte du scénario
public function execute($_options = null) {
if ($this->getLogicalId() == 'refresh') {
$this->getEqLogic()->refresh();
return;
}
donc la commande rafraichir fait un appel à refresh comme dans ton bloc code;
je viens de tester à l’instant et ca fonctionne
par contre je réalise que ce n’est pas une bonne idée d’avoir nommé la fonction « refresh » car les class parents (cmd & eqLogic) définissait déjà cette méthode et donc on redéfini celle-ci mais ca ne fait pas du tout la même chose donc on ne peut pas! ca peut clairement avoir des effets de bord; pourquoi chez certains et pas d’autres? est-ce vraiment ca? je ne sais pas mais pour selon moi ca ne sert à rien d’essayer de debug sans nettoyer le code d’abord;
je ne comprend pas cmt ca n’a jamais posé problème auparavant
je vais faire un PR mais ca va casser tous les blocs codes de ce genre eqLogic::byId(436)->refresh(); (qui n’étaient de toute façon pas une bonne idée je trouve)
Du coup en appelant la commande « Rafraichir » dans un scénario, chez toi ça marche ?
Il ne va pas être simple de trouver la raison mais en effet c’est fait bizarrement.
Pardonnez-moi mais du coup, est-ce qu’il y a une modification de code à faire soi-même ou une mise à jour du plugin script ou du core jeedom à attendre?
merci pour votre aide.
En général, il faut combien de temps pour que les versions bêta deviennent stables?
Je suis en version stable. Ma maison tourne sur jeedom, je ne voulais pas prendre trop de risques de plantage.