Je me refusais jusqu’à présent à passer au bloc code pour des raisons évidentes (pas de mise à jour des objets dans le code si ceux-ci venaient à changer).
Aujourd’hui, j’atteins les limites de ce que peux faire le « langage » Jeedom et je tente donc l’expérience.
Le but recherché : changer la couleur et l’icône de Custom Apps sur l’afficheur Ulanzi
Après quelques recherches, il semblerait qu’il soit possible de modifier directement un topic MQTT. Je n’ai pas compris comment faire et je reviendrai vers vous ultérieurement pour ce problème.
En attendant je passe par un Virtuel pour « modifier » la Custom App.
Voici le scénario qui s’exécute site à un changement de température :
C’est une légende urbaine, un objet s’il est bien mis entre # (objet au sens large, objet, équipement ou commande) est bien modifié dans un bloc code s’il vient à être renommé ou modifier (changement d’objet pour un équipement) dans jeedom
Je note que la mise à jour se fait correctement en cas de changement de nom d’objet. Il est étonnant dans ce cas qu’il ne se fasse pas dans les objets utilisés dans les déclencheurs de scénario…
1er problème
Comme vous pouvez le constater, je souhaite effectuer une concaténation.
Exemple : il fait 30° et la température a augmenté de x °C (qui dépasse mon seuil défini dans la variable TempChangeMin). Je veux donc utiliser l’image temperature_hot_up.gif
Dans le code php c’est : $icon = 'temperature_' . $type . $direction;
2nd problème
Je veux modifier la Custom App de mon Ulanzi.
Pour l’instant je n’ai pas trouvé mieux que de passer par un virtuel.
Vous noterez la présence de simple quote pour le text et pas de quote pour l’icône.
C’est voulu/subi car dans certain cas, la valeur de l’objet est ajoutée avec des doubles quotes.
Le plus simple en effet serait de modifier le topic directement dans mon scénario plutôt que de passer par un virtuel.
J’ai bien trouvé ce sujet qui en parle mais j’avoue ne pas comprendre la solution et le code utilisé est en… php.
Ben je trouves que c’est beaucoup s’embeter de faire du code et des virtuels pour formater des données …
Perso j’ai un scénario pour gérer l’affichage des messages sur mes awtrix et je fais tout directement dans le scénario avec des blocs et des tags y compris pour la génération de la chaine json.
Ben heu franchement idem la discussion d’au dessus pourquoi faire du php pour formater une chaine en json ? un scénario en blocs sait bien faire ça tout seul cf Passage au php - #7 par Aurel
J’essayerais de lire le thread si je trouve un moment parce que 129 messages quand même
Je ne dis pas que faire du code ne sert à rien hein, juste que quand c’est juste pour générer une chaine json c’est un peu overkill quoi … Après bien sur dans des cas plus complexes ça fait totalement sens.
Pour ce qui est de mettre à genou l’awtrix perso ça ne m’est jamais arrivé.
J’ai 6 customs apps et un scénario qui génère les messages, custom app par custom app, stocke la chaine json dans un tag et à la fin du scénario j’envoi le contenu des tags à la commande mqtt.
Par contre je ne fais pas du « temps réel » sur les afficheurs, par défaut j’actualise le scénario toutes les 10 minutes, plus quelques déclencheurs en plus en cas de changement de certains états
Pour que je comprenne bien la problématique de ressources du Awtrix, chaque fois que la température est envoyée de mon capteur, le scénario s’exécute et même si la température et l’icône ne changent pas, le topic reste le même mais est quant même mis à jour.
Il y a donc du temps « processeur » utilisé par l’Awtrix à chaque récupération de température du capteur ?
Si c’est le cas, stocker le json dans une variable permettrait de le comparer avec le nouveau qui ne serait envoyé à l’Awtrix que si différent ?
A quoi sert $cache dans : cmd::byString("#[Chambre][Awtrix][App Temp Int]#")->execCmd($options, $cache=0);
Ca arrive, c’est pour ça qu’il faut toujours regarder le log
Je ne sais pas te dire, je n’ai jamais été confronté à un pb de ressources coté Awtrix.
Comme je disais, mon scénario s’exécute toutes les 10 minutes le jour, toutes les 30 minutes la nuit et avec quelques changement d’état pour ne pas attendre le cycle suivant si besoin (par exemple si le lave linge vient juste de se terminer).
Si tu comptes envoyer les données d’un capteur, tout dépend à quelle fréquence il envoi ses données. Si c’est toutes les 5 minutes franchement je vois pas l’interet de garder un cache des données, si c’est plusieurs fois par minutes ça peut faire sens.