Cache sur commandes info?

Bonjour,

J’ai créé un virtuel qui affiche le résultat d’une fonction personnalisée. Cette fonction interroge plusieurs plugins et en fonction des réponses retourne une des 3 chaînes de caractères définies.

Dans le testeur d’expression, cette fonction m’affiche le bon message en fonction des réponses des plugins. Si je fais en sorte que la réponse change, elle change bien quand je relance la fonction dans le testeur.

Par contre, dans mon virtuel, si je fais tester la commande, il me renvoie le dernier état connu. Je suis obligé d’effectuer un rafraichissement :thinking: Par conséquent, mon widget (défaut) affiche une valeur erronée jusqu’à ce que je clique sur le petit bouton refresh.

Voici la commande info en question :

En cherchant un peu avec les mots clefs widgets et refresh, j’ai trouvé des infos sur le widget à modifier justement mais je voudrais être sûr d’être sur la bonne voie. Ca me parait encore plus alambiqué que ma fonctione :smiley:

Bonjour, si tu ajoute une Auto-actualisation (cron) ?

1 « J'aime »

Le but étant que ça facilite la vie à madame, il faudrait que je mette une fréquence très haute pour que quand elle affiche la page elle ait la bonne information (à défaut de cliquer automatiquement sur le petit icone refresh :smiley: ) :thinking:

Ca serait également moins lourd je pense de mettre à jour cette information au moment de l’affichage du widget peut-être ? J’ai créé un virtuel depuis ma chaudière dont le widget se met en live tout seul mais ça ne semble pas fonctionner. C’est surement côté code du widget que ça se fait mais sans exemple j’ai peur d’être coincé :frowning:

Dans ce cas, il faut peut-être passer par un widget personnalisé. qui lui fera appel a ta fonction dès l’affichage, mais si tu reste sur la page, sans le Cron celle-ci ne se mettra pas a jour n’on plus.

1 « J'aime »

Quand tu interroges les plugins, ce sont des commandes infos que tu récupères ?

Dans ce cas, tu pourrais faire un scénario avec comme triggers toutes les commandes concernées et dans le contenu du scénario, tu mets à jour ton virtuel avec la commande event.

C’est à l’affichage le plus important. En gros je veux afficher l’état de l’eau chaude sanitaire pour quand on veut prendre une douche en dehors des horaires « classiques ».

Voici la fonction en question :

      	$etatESCBOOST = cmd::byString('#[Salon][Chaudière][ECS Boost]#')->execCmd();
      	$etatESC = cmd::byString('#[Salon][Chaudière][ECS Etat]#')->execCmd();
      	if ($etatESCBOOST == "TRUE") {
          	cmd::byId(2843)->setIsVisible(0)->save();
          	cmd::byId(2840)->setIsVisible(1)->save();
        	return ' : Activée à la main'; 
        }
      	else {
        	if ($etatESC == "1") {
              	cmd::byId(2843)->setIsVisible(0)->save();
              	cmd::byId(2840)->setIsVisible(0)->save();
            	return ' : Activée par le planning';
            }
 			else {
              	cmd::byId(2843)->setIsVisible(1)->save();
              	cmd::byId(2840)->setIsVisible(0)->save();              
            	return ' : Coupée';
            }
        }
	}
saisir ou coller le code ici

Y’a 3 états :

  • ECS activée par le planning : on ne peut rien faire
  • ECS activée à la main : on peut désactiver la consigne manuelle
  • ECS coupée : on peut activer la consigne manuelle

Ca permet de se doucher avec de l’eau chaude le soir :smiley: Je fais ça car l’application de la chaudière merde 2 fois sur 3…

Du coup vous pouvez voir que ma fonction active ou désactive les commandes activer/désactiver la consigne ECS manuelle.

Afin que ça s’affiche en live, va falloir jouer du Widget j’en ai bien peur mais sauf erreur de ma part je n’ai pas vu de template :thinking: Je vais fouiller dans le dossier du plugin de ma chaudière qui a le comportement que je souhaiterais avoir (mais en plus simple).

Je garde ça de côté si j’arrive pas à m’en sortir avec le widget merci :slight_smile:

C’est bien des commandes infos que tu récupère, donc @noodom ta bien donné la solution, en passant par un scénario qui se déclenchera par #[Salon][Chaudière][ECS Boost]# et par #[Salon][Chaudière][ECS Etat]# et dans celui-ci tu recréer les mêmes conditions que dans ta fonction.
et tu rajoute un event pour afficher ton texte (Activée à la main…) dans ta commande info dédié.

Je ne pense pas que ça va alourdir la charge de mon serveur mais en soi la fonction doit être exécutée pour connaitre l’état. Je trouve ça « dommage » de lancer 2 scénarios pour obtenir la même info, d’autant plus qu’à priori, je suis obligé de modifier le widget afin que, par exemple, quand madame active l’eau chaude, un bouton « désactiver » apparaisse pour qu’elle puisse la couper à la fin de sa douche en dehors des horaires prévues :smiley:

Je vais essayer de fouiller du côté du widget en espérant trouver un template pour m’aider.

Merci à tous les 2 pour votre aide :slight_smile:

Avec le scénario tu n’as plus besoin de la fonction ? Tu l’utilises ailleurs peut-être ?

Nul part ailleurs en effet. Je vais voir si je peux faire pareil avec en rajoutant le refresh du widget :stuck_out_tongue:

J’ai l’impression que tu veux garder ta logique qui ne semble pas correspondre pour ton besoin :yum:

La logique Jeedom par défaut : exécution de scénario sur modification de commandes

  • tu déclares 2 triggers à ton scénario par simple sélection : commandes #[Salon][Chaudière][ECS Boost]# et #[Salon][Chaudière][ECS Etat]#
  • tu adaptes ton code dans le contenu du scénario

Et tu auras le résultat souhaité :slight_smile:

Mais je sens que tu veux aller au bout de ton raisonnement alors fais toi plaisir, c’est l’avantage de Jeedom :wink:

Non du tout, c’est juste que la logique Jeedom est limite moins intuitive qu’écrire une fonction pour moi :smiley:

J’ai donc fait un scénario qui fonctionne pour afficher ou masquer un bouton en fonction des conditions. Par contre je ne vois pas comment modifier la valeur info ni même rafraichir le widget :thinking:

tape « event » dans la case blanche, puis TABULATION, puis sélectionne ta commande à mettre à jour et ensuite sa valeur dans les cases qui apparaitront. Le refresh devrait être automatique.

1 « J'aime »

C’est magique ça met même à jour le widget en live :star_struck: Plus qu’à rajouter des petits icones et madame sera contente, merci pour elle !

Voilà pourquoi j’insistais sur la logique Jeedom :innocent:

2 « J'aime »

Bonjour,

Tu peux même te passer de tes bloc code, si tu veux, en saisissant equipement dans la case blanche puis TABULATION (comme pour event), tu sélectionnes ton équipement puis Visible ou Masquer

1 « J'aime »

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