Lazer Posté(e) le 5 mars 2023 Signaler Posté(e) le 5 mars 2023 Les Variables Caches ne sont pas "stockées", c'est à dire qu'elles ne sont pas persistantes. Leur contenu est perdu en cas de reboot de la box, ou simplement en cas de redémarrage de GEA. Les Variables Caches sont de simples variables locales sen LUA, qui n'existent que dans l'espace mémoire du process en cours d'exécution (= le QuickApp en cours de fonctionnement)
flamalex Posté(e) le 5 mars 2023 Signaler Posté(e) le 5 mars 2023 il y a 9 minutes, Lazer a dit : Les Variables Caches ne sont pas "stockées", c'est à dire qu'elles ne sont pas persistantes. Leur contenu est perdu en cas de reboot de la box, ou simplement en cas de redémarrage de GEA. Les Variables Caches sont de simples variables locales sen LUA, qui n'existent que dans l'espace mémoire du process en cours d'exécution (= le QuickApp en cours de fonctionnement) ah ok ! c'est plus clair en cas de 2 GEA qui tournent en paralleles (ou dans le meme GEA?) , on peut toujours utiliser "variablecache" (dans les 2) sans devoir la nommer "variablecache" dans l'un et "variablecache2" dans l'autre ?
Lazer Posté(e) le 5 mars 2023 Signaler Posté(e) le 5 mars 2023 (modifié) Si tu as 2 instances GEA (c'est à dire 2 scènes sur HC2, ou 2 QuickApps sur HC3), alors ces 2 instances sont complètement indépendantes... aucun échange n'existe entre les 2 Donc tu peux utiliser les mêmes noms de variablecache, ça restera cloisonné, étanche. (contrairement aux Variables Globales qui sont, comme leur nom l'indique, globales à toute la box... et persistantes car stockée sur la mémoire Flash interne) Note : VariableCache2 n'existe pas. C'est VariableCache tout court, avec en paramètre le nom de la variable cache à utiliser... et tu peux en avoir autant que tu veux. Modifié le 5 mars 2023 par Lazer
flamalex Posté(e) le 5 mars 2023 Signaler Posté(e) le 5 mars 2023 ok pour le cloisonnement, concernant le parametre: la VariableCache doit elle etre definie dans l'entete du QA ou directement dans le GEA.add dans l'exemple de Jojo le nom de la variablecache est "BUREAU_TMP", c'est bien cela?
Lazer Posté(e) le 5 mars 2023 Signaler Posté(e) le 5 mars 2023 Directement dans le GEA.add() Oui le nom de sa VariableCache est bien "BUREAU_TMP"
Lazer Posté(e) le 5 mars 2023 Signaler Posté(e) le 5 mars 2023 Autre exemple de VariableCache, pour déclencher l'aspirateur lors de notre absence, mais 1 seule fois par jour (au cas où l'on s'absente plusieurs fois dans la même journée) -- Robot aspirateur Xiaomi Roborock GEA.add({{"Profile", "Absent"}, {"Value", id["QA_XIAOMI_ROBOROCK"], false}, {"Battery", id["QA_XIAOMI_ROBOROCK"], 100}, {"VariableCache!", "Aspirateur", true}}, 5*60, "", {{"QuickApp", id["QA_XIAOMI_ROBOROCK"], "clean"}, {"VariableCache", "Aspirateur", true}}, "Démarrage aspirateur") GEA.add({"Time", "00:00", "00:01"}, 0, "", {"VariableCache", "Aspirateur", false}, "VariableCache Aspirateur")
flamalex Posté(e) le 5 mars 2023 Signaler Posté(e) le 5 mars 2023 (modifié) Il y a 2 heures, Lazer a dit : Directement dans le GEA.add() Oui le nom de sa VariableCache est bien "BUREAU_TMP" Merci Lazer, je teste et me retrouve à la case départ, actualisé uniquement si save ou reboot Gea. bon je re teste. pour l’aspirateur, ton « Time » repasse (réinitialise) la variable cache à false dans la seconde, c’est bien ça? EDIT: ça fonctionne au TOP, merci @Lazer @jojo encore une fonction bie interessante Modifié le 5 mars 2023 par flamalex
Lazer Posté(e) le 5 mars 2023 Signaler Posté(e) le 5 mars 2023 La seconde règle, avec le Time, permet de remettre la variable cache à false chaque jour à minuit... afin de repartir sur un nouveau cycle d'une journée de 24 pendant lequel l'aspirateur ne pourra fonctionner qu'une seule fois. La conséquence fun, c'est que si on est absent à minuit, alors l'aspirateur repart pour un nouveau cycle 5 minutes après, c'est cool d'avoir un esclave qui bosse la nuit sans râler 1
flamalex Posté(e) le 6 mars 2023 Signaler Posté(e) le 6 mars 2023 Bof j’ai crié victoire trop vite sur HC3, Qa J’ai testé dans un même gea, avec 2 VariableCache, l’une TMP_ETAGE l’autre TMP_RDC ça fonctionne qu’au reboot de gea mais pas après, sur trigger variation de 2 sondes.
Lazer Posté(e) le 6 mars 2023 Signaler Posté(e) le 6 mars 2023 Il faut que tu prennes en compte le fait que les VariableCaches seront réinitialisées au prochain démarrage de GEA. Donc ça dépend complètement de ta façon de les utiliser en condition de tes règles. C'est pour ça que Jojo a mis une règle qui initialise sa VariableCache au démarrage de GEA plus haut (condition true, avec durée = 0), ainsi pas de mauvaise surprise.
nicolasvibrato Posté(e) le 8 mars 2023 Signaler Posté(e) le 8 mars 2023 Bonjour à tous Je viens de récupere une HC3 et je voudrai savoir s'il existe une quickapp pour generer ou récuperer tous les Local ID pour utiliser dans GEAV7 Merci Bonne journée
flamalex Posté(e) le 8 mars 2023 Signaler Posté(e) le 8 mars 2023 (modifié) Le 06/03/2023 à 19:50, Lazer a dit : Il faut que tu prennes en compte le fait que les VariableCaches seront réinitialisées au prochain démarrage de GEA. Donc ça dépend complètement de ta façon de les utiliser en condition de tes règles. C'est pour ça que Jojo a mis une règle qui initialise sa VariableCache au démarrage de GEA plus haut (condition true, avec durée = 0), ainsi pas de mauvaise surprise. voici la capture: peut etre un probleme d'affichage (mais j'y crois pas trop) et ici le GEA local id = { SONDE_TEMP_SDB_ETAGE = 354, SONDE_TEMP_SDB_RDC = 381, QA_SECH_SERVIETTE_RDC = 211, QA_SECH_SERVIETTE_ETAGE = 205 } -- ETAGE -- ACTUALISATION du QA sur changement etat SONDE TEMP SDB ETAGE GEA.add (true , 0, "", {"VariableCache", "TEMP_SDB_ETAGE", 0}) --initialisation de la variable cache GEA.add ({"VariableCache!","TEMP_SDB_ETAGE",{"Value", id["SONDE_TEMP_SDB_ETAGE"]}}, 0, "", -- si valeur mesurée differente de la valeur de la variable cache alors.... {{"QuickApp", id["QA_SECH_SERVIETTE_ETAGE"], "TemperatureSdb"}, {"VariableCache","TEMP_SDB_ETAGE",{"Value", id["SONDE_TEMP_SDB_ETAGE"]}}}) --RDC -- ACTUALISATION du QA sur changement etat SONDE TEMP SDB RDC GEA.add (true , 0, "", {"VariableCache", "TEMP_SDB_RDC", 0}) --initialisation de la variable cache GEA.add ({"VariableCache!", "TEMP_SDB_RDC", {"Value", id["SONDE_TEMP_SDB_RDC"]}}, 0, "", -- si valeur mesurée differente de la valeur de la variable cache alors.... {{"QuickApp", id["QA_SECH_SERVIETTE_RDC"], "TemperatureSdb"}, {"VariableCache", "TEMP_SDB_RDC", {"Value", id["SONDE_TEMP_SDB_RDC"]}}}) Modifié le 8 mars 2023 par flamalex
Lazer Posté(e) le 8 mars 2023 Signaler Posté(e) le 8 mars 2023 ça a l'air OK.... tu as bien dit que ça ne trigger qu'au démarrage ? Et si tu ajoutes un "Repeat" dans les actions, est-ce c'est mieux ?
flamalex Posté(e) le 8 mars 2023 Signaler Posté(e) le 8 mars 2023 il y a 51 minutes, Lazer a dit : ça a l'air OK.... tu as bien dit que ça ne trigger qu'au démarrage ? Et si tu ajoutes un "Repeat" dans les actions, est-ce c'est mieux ? au demarrage, oui ça trigge bien, image ci dessous je viens d'ajouter le repeat GEA.add (true , 0, "", {"VariableCache", "TEMP_SDB_ETAGE", 0}) --initialisation de la variable cache GEA.add ({"VariableCache!","TEMP_SDB_ETAGE",{"Value", id["SONDE_TEMP_SDB_ETAGE"]}}, 0, "", -- si valeur mesurée differente de la valeur de la variable cache alors.... {{"QuickApp", id["QA_SECH_SERVIETTE_ETAGE"], "TemperatureSdb"}, {"VariableCache","TEMP_SDB_ETAGE",{"Value", id["SONDE_TEMP_SDB_ETAGE"]},{"Repeat"}}}) je vais attendre de voir si ca bouge! dans mon QA_SECH_SERVIETTE, la fonction est declinée TemperatureSdb(event), y a t il un rapport avec le fait que dazns GEA j'appele la function TemperatureSdb() ? ou aucun rapport?
flamalex Posté(e) le 8 mars 2023 Signaler Posté(e) le 8 mars 2023 (modifié) j'ai modifier le TemperatureSdb en supprimant le (event) et ajouté le repeat pour l'etage, resultat ok alors que pour le rdc je n'ai ajouté que le repeat mais pas modifié la fonction resultat comment ça fonctionne le repeat, je ne comprends pas Modifié le 8 mars 2023 par flamalex
Lazer Posté(e) le 8 mars 2023 Signaler Posté(e) le 8 mars 2023 il y a 16 minutes, flamalex a dit : dans mon QA_SECH_SERVIETTE, la fonction est declinée TemperatureSdb(event), y a t il un rapport avec le fait que dazns GEA j'appele la function TemperatureSdb() ? ou aucun rapport? Oui il y a un rapport, si ta fonction s'appelle comme ça, c'est bien avec son nom que tu l'exécute depuis GEA. il y a 14 minutes, flamalex a dit : comment ça fonctionne le repeat, je ne comprends pas GEA teste les conditions des règles à chaque cycle (30s). Dès que les conditions d'une règle donnée sont validées, alors GEA déclenche les actions correspondantes. Aux cycles suivants, si les conditions de cette règle sont toujours valables, mais que tu n'as pas mis le Repeat, alors GEA ne déclenchera pas les actions. Si tu mets le Repeat, alors GEA déclenchera les actions à chaque cycle, tant que les conditions seront OK. Je ne sais pas ce que fait ta fonction TemperatureSdb() que tu appelles depuis les actions de GEA, mais selon si elle met à jour la température du QA, ou pas, alors cela va avoir un impact sur les conditions de tes règles... et donc sur la nécessité du Repeat ou pas.
flamalex Posté(e) le 8 mars 2023 Signaler Posté(e) le 8 mars 2023 (modifié) GEA teste la condition sur une cycle de 30sec, ce n'est pas instantané ? lil faut donc que j'appelle le TemperatureSdb(event) dans GEA et non TemperatureSdb ? ci apres le TemperatureSdb dans le QA RDC -- Température de la sdb RDC function QuickApp:TemperatureSdb(event) sonde_temp = self:getVariable("ID_TEMP_SDB") -- on vient lire l'ID du module temperature pour mettre dans sonde temp tempSdb_Rdc = fibaro.getValue(tonumber(sonde_temp), "value") -- Capteur température self:updateProperty("value", tonumber(tempSdb_Rdc)) self:updateProperty("unit", "°C") self:updateProperty("Temperature", tempSdb_Rdc) self:updateView("lblTemp", "text", " Température Salle de Bain Rdc ".. tostring(tempSdb_Rdc) .." C°") end Modifié le 8 mars 2023 par flamalex
Lazer Posté(e) le 8 mars 2023 Signaler Posté(e) le 8 mars 2023 (modifié) Pour le déclenchement instantané, c'est avec le paramètre durée = -1 Si tu voulais que GEA exécute la règle immédiatement quand la température change, alors tu peux effectivement utiliser ce mode. Dans ce cas, tu n'auras même plus besoin de ta VariableCache. C'est une approche complètement différente. Avec la durée = 0, GEA teste la règle à chaque cycle. Avec une durée de 30s, alors GEA activera les actions uniquement si la condition est valable depuis minimum 30s (donc 2 cycles) Etc avec 60, 90, etc... Après, sur le fond, je trouve un peu étrange ton cas d'usage... utiliser un QuickApp externe (GEA) pour mettre à jour la valeur d'un autre QuickApp (ton QA radiateur) à partir de la valeur d'un 3ème module (la sonde), c'est particulièrement lourd. Le QuickApp radiateur ayant son propre code LUA, tu pourrais écrire une main loop qui va interroger la valeur de la sonde à intervalle régulier (30s par exemple, comme GEA, ou bien encore 1 minute si tu estimes suffisant pour ton scénario), et met à jour sa valeur. Ainsi tu t'affranchis de GEA, qui est un tiers inutile dans le cas présent, ça rajoute de la complexité, et surtout une dépendance, rendant ta gestion de chauffage moins robuste (si GEA plante, alors le radiateur ne pourra plus connaitre la température.... ça va casser ton scénario de chauffage) Ou bien je n'a pas saisi ce que tu cherches à faire... Modifié le 9 mars 2023 par Lazer 1
flamalex Posté(e) le 9 mars 2023 Signaler Posté(e) le 9 mars 2023 c’est top comme explications, ça répond à mes interrogations, sur le 0 et -1 merci @Lazer Ta Remarque est juste, tu as raison pour la lourdeur du QA chauffage + un Gea, j’ai en effet une boucle ds mon QA chauffage qui refresh toutes les minutes, le Gea ici que je teste, c’est suite au sujet lancé par @jojo je voulais tester la variable cache et j’ai donc pris les 2 sondes et 2 QA à refresh que j’avais sous la main. franchement top les explications, c’est très clair
jojo Posté(e) le 10 mars 2023 Signaler Posté(e) le 10 mars 2023 Le 08/03/2023 à 17:19, nicolasvibrato a dit : Je viens de récupere une HC3 et je voudrai savoir s'il existe une quickapp pour generer ou récuperer tous les Local ID pour utiliser dans GEAV7 @nicolasvibrato : est-ce que ceci répond à ta question ?
Jerry Posté(e) le 22 avril 2023 Signaler Posté(e) le 22 avril 2023 Le 01/03/2023 à 21:02, Lazer a dit : @Jerry pas sûr qu'il reste encore beaucoup de monde qui utilise GEA sur HC2, et encore moins de développeurs. @gorn cool @jojo Je pense que tu dois pouvoir y arriver en stockant la valeur de la température dans une variablecache, puis en comparant ladite variablecache avec la nouvelle temperature. Mais du coup vous utilisez quoi en remplacement?
schwinny Posté(e) le 25 avril 2023 Signaler Posté(e) le 25 avril 2023 Le 01/03/2023 à 21:02, Lazer a dit : @Jerry pas sûr qu'il reste encore beaucoup de monde qui utilise GEA sur HC2, et encore moins de développeurs. @gorn cool @jojo Je pense que tu dois pouvoir y arriver en stockant la valeur de la température dans une variablecache, puis en comparant ladite variablecache avec la nouvelle temperature. SI SI... J'utilise encore ce SUPER SCRIPT
Lazer Posté(e) le 26 avril 2023 Signaler Posté(e) le 26 avril 2023 Cool, ça fait 2 utilisateurs ! Reste à trouver quelqu'un qui a les compétences sur le développement de GEA sur HC2 pour aider Jerry... Steven n'étant plus très présent...
jluc2808 Posté(e) le 23 mai 2023 Signaler Posté(e) le 23 mai 2023 bonjour, me voilà enfin dans le topic de l'usage de GEA , si je suis pas dans le bon topic, dites moi ou poster. après plusieurs essais sur des trucs simple j'ai voulu faire - allumer l'anneau d'un walli controller en blanc si la lumière qu'il contrôle est éteinte et en vert si allumée pour cela j'ai ajouté le code : GEA.add(84!,-1,"",{"Property",{452,457,460,463}, "setRingsLightMode", "on"}) GEA.add(84!,-1,"",{"Property",{452,457,460,463},"ringUpperColor","White"}) GEA.add(84!,-1,"",{"Property",{452,457,460,463},"ringBottomColor","White"}) -- GEA.add(84,-1,"",{"Property",{452,457,460,463}, "setRingsLightMode","Value", "on"}) GEA.add(84,-1,"",{"Property",{452,457,460,463},"ringUpperColor","green"}) GEA.add(84,-1,"",{"Property",{452,457,460,463},"ringBottomColor","green"}) mais ça fonctionne pas, j'ai forcément une erreur quelquepart 84 est l'id de la lampe, c'est un variateur FGD212, 452, 457, 460, 463 les id des walli controller à mettre à jour. merci de vos corrections
Messages recommandés