Aller au contenu

Messages recommandés

Posté(e)

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)

Posté(e)
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 ?

Posté(e) (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é par Lazer
Posté(e)

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? 

Posté(e)

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

 

Posté(e) (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é par flamalex
Posté(e)

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
Posté(e)

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

 

Posté(e)

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.

Posté(e)

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

Posté(e) (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)

 

 

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
Posté(e)

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

Posté(e)
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?

 

Posté(e) (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

image.png.8e86e7598735f7feaa06ba13a1a7e20d.png

 

comment ça fonctionne le repeat, je ne comprends pas

Modifié par flamalex
Posté(e)
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.

Posté(e) (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é par flamalex
Posté(e) (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é par Lazer
  • Upvote 1
Posté(e)

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 

Posté(e)
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 ?

 

  • 1 mois après...
Posté(e)
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?

Posté(e)
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 :) 

Posté(e)

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

 

  • 4 semaines après...
Posté(e)

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

×
×
  • Créer...