Aller au contenu

Recommended Posts

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)

Partager ce message


Lien à poster
Partager sur d’autres sites
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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par Lazer

Partager ce message


Lien à poster
Partager sur d’autres sites

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? 

Partager ce message


Lien à poster
Partager sur d’autres sites

Directement dans le GEA.add()

Oui le nom de sa VariableCache est bien "BUREAU_TMP"

Partager ce message


Lien à poster
Partager sur d’autres sites

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")

 

Partager ce message


Lien à poster
Partager sur d’autres sites
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é par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :D

 

  • Haha 1

Partager ce message


Lien à poster
Partager sur d’autres sites

:20: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.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites
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)

 

 

image.png.73717b5223bfafaf8c78b87c1658b218.png

 

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é par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites

ç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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites
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

image.png.5d21bcf497d462e4060764678c847c4c.png

 

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?

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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

image.png.8e86e7598735f7feaa06ba13a1a7e20d.png

 

comment ça fonctionne le repeat, je ne comprends pas

Modifié par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par Lazer
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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 

Partager ce message


Lien à poster
Partager sur d’autres sites
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 ?

 

Partager ce message


Lien à poster
Partager sur d’autres sites
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?

Partager ce message


Lien à poster
Partager sur d’autres sites

GEA sous HC3

Partager ce message


Lien à poster
Partager sur d’autres sites
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 :) 

Partager ce message


Lien à poster
Partager sur d’autres sites

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...

 

Partager ce message


Lien à poster
Partager sur d’autres sites

bonjour, :60:

 

me voilà enfin dans le topic de l'usage de GEA  :rolleyes:, 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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

×