jojo Posté(e) le 28 octobre Signaler Posté(e) le 28 octobre je me mets enfin aux "VariableCache" et du coup j'ai des questions (je n'y ai pas trouvé de réponse dans le document de syntaxe) : les valeurs ne semblent que numériques ou bouléennes (cfr exemples), car pour 20, il faut rentrer "20", et du coup comment faire la différence entre string "20" et number 20 ? comment utiliser sa valeur. ok comme ça : {"VariableCache", "TisunChaudiereSolaireOn"} et peut-on faire des calculs ? Exple : {"VariableCache", "TisunChaudiereSolaireOff", {"VariableCache", "TisunChaudiereSolaireOn"}+8} si 2. ok, comment faire ceci : {"Email", "admin", "TisunChaudiereSolaireOn = "..{"VariableCache", "TisunChaudiereSolaireOn"}.."\nle #date# à #time#.", -- "Variables cacche"}) Merci votre aide / idées
Lazer Posté(e) le 28 octobre Signaler Posté(e) le 28 octobre 1. Tu mets ce que tu veux dans une VariableCache, GEA conservera le type que tu utilises... donc number, boolean, string, ou même table. 2. Oui OK 3. Pour faire des calculs, il faut utiliser "Function". Tu as un exemple dans la doc de syntaxe. Pour ton cas ça doit donner un truc comme ça je pense : {"VariableCache", "TisunChaudiereSolaireOff", {"Function", function(vc) return vc + 8 end, {"VariableCache", "TisunChaudiereSolaireOn"}}} 4. Je doute fort que ça fonctionne tel que tu l'as écris... Essaye un truc du genre : {"Email", "admin", {"Function", function(vc) return "TisunChaudiereSolaireOn = "..vc.."\nle #date# à #time#." end, {"VariableCache", "TisunChaudiereSolaireOn"}}, "Variables cache"} Ou bien, mais moins propre je trouve : {"Function", function(vc) GEA.options.email.action("TisunChaudiereSolaireOn = "..vc.."\nle #date# à #time#.") end, {"VariableCache", "TisunChaudiereSolaireOn"}, "Variables cache"} Dans cette dernière syntaxe tu découvres qu'on peut appeler n'importe quelle option de GEA au sein même de la function() exécutée par "Function". "Function" est extrêmement puissant, mais difficile à maitriser... 1
jojo Posté(e) le 28 octobre Signaler Posté(e) le 28 octobre il y a 45 minutes, Lazer a dit : Je doute fort que ça fonctionne tel que tu l'as écris... moi aussi, c'était pour expliquer ce que souhaitais. J'implémente tous ces conseils demain (ce soir, je cuve ...)
jojo Posté(e) le 28 octobre Signaler Posté(e) le 28 octobre en fait, j'ai implémenté (et compris ?) tes conseils. et évidemment, cela fonctionne au quart de poil. => MERCI 1
jojo Posté(e) le 29 octobre Signaler Posté(e) le 29 octobre évidemment que ta proposition pour les mails fonctionne, mais voici la solution encore plus simple et plus tandard que j'ai mise en place GEA.add ({"VariableCache!", "TisunChaudiereSolaireOn", "0"}, 0, "" , {"Email", "admin", "TisunChaudiereSolaireOn = #value[1]#\nle #date# à #time#.", "Variables cache"})
jojo Posté(e) le 29 octobre Signaler Posté(e) le 29 octobre Il y a 17 heures, jojo a dit : moi aussi, c'était pour expliquer ce que souhaitais. en fait, non. Je suis tombé par hasard sur cette config {"Email", "admin", "CHAUDIERE_SOLAIRE ON".. "\nTempérature ballon Tisun = #value[2]# °C.".. "\nLimite TisunChaudiereSolaireOn = "..tostring(TisunChaudiereSolaireOn).."°C".. "\nle #date# à #time#.", "CHAUDIERE_SOLAIRE ON"}) quand je dis que GEA c'est une tuerie ...
Lazer Posté(e) le 29 octobre Signaler Posté(e) le 29 octobre Il y a 6 heures, jojo a dit : GEA.add ({"VariableCache!", "TisunChaudiereSolaireOn", "0"}, 0, "" , {"Email", "admin", "TisunChaudiereSolaireOn = #value[1]#\nle #date# à #time#.", "Variables cache"}) Ah oui ça c'est malin. Il y a 5 heures, jojo a dit : {"Email", "admin", "CHAUDIERE_SOLAIRE ON".. "\nTempérature ballon Tisun = #value[2]# °C.".. "\nLimite TisunChaudiereSolaireOn = "..tostring(TisunChaudiereSolaireOn).."°C".. "\nle #date# à #time#.", "CHAUDIERE_SOLAIRE ON"}) Alors ça non en revanche, ça ne fonctionnera pas comme attendu. Le tostring(TisunChaudiereSolaireOn) ne sera pas interprété par le code de GEA lors de l'exécution de la règle, mais par l'interpréteur LUA lors du démarrage du QuickApp. De plus, TisunChaudiereSolaireOn n'est qu'une variable au sens GEA du terme, pas au sens LUA. En effet, sauf à ce que tu aies préalablement défini la variable avec TisunChaudiereSolaireOn = ... dans le code LUA, lors du démarrage du QA, LUA va considérer que c'est une variable non définie, donc tostring() renverra la valeur "nil", que tu verras apparaitre dans le corps de ton email.
jojo Posté(e) le 30 octobre Signaler Posté(e) le 30 octobre Il y a 14 heures, Lazer a dit : Alors ça non en revanche, ça ne fonctionnera pas comme attendu. Le tostring(TisunChaudiereSolaireOn) ne sera pas interprété par le code de GEA lors de l'exécution de la règle, mais par l'interpréteur LUA lors du démarrage du QuickApp. De plus, TisunChaudiereSolaireOn n'est qu'une variable au sens GEA du terme, pas au sens LUA. En effet, sauf à ce que tu aies préalablement défini la variable avec TisunChaudiereSolaireOn = ... dans le code LUA, lors du démarrage du QA, LUA va considérer que c'est une variable non définie, donc tostring() renverra la valeur "nil", que tu verras apparaitre dans le corps de ton email. mais ça fonctionne chez moi ... et si je me souviens bien, sans le tostring() ça ne fonctionnait pas. au début de ma config GEA, j'ai ceci : -- variables perso local PAC_A_Off = 30 --[A] local PAC_A_On = 25 --[A] local PACBackup_A_Off = 25 --[A] (13/12/2024 : 20) local PACBackup_A_On = 20 --[A] (13/12/2024 : 17) local A_Max = 80 --[A] courant au-delà duquel il ne faut pas tenir compte de la mesure local CaveSeuilMin = 11 --[°C] local CaveSeuilMax = 16 --[°C] local TisunMinPiscine = 75 --[°C] tmp min Tisun pour démarrage chauffage piscine local TisunDelestagePiscine = 85 --[°C] tmp Tisun pour chauffer la piscine afin d'éliminer les calories des panneaux solaires. local TisunChaudiereSolaireOn = 70 --[°C] tmp Tisun pour mettre CHAIDERE_SOLAIRE à On (<SdB=60 - SdB=64 - confort=70) local TisunChaudiereSolaireOff = 78 --[°C] tmp Tisun pour mettre CHAIDERE_SOLAIRE à Off (<SdB=68 - SdB=72 - confort=78) local TisunECS = 55 --[°C] tmp Tisun pour forcer ECS local TisunError = 47 --[°C] tmp Tisun en dessous de laquelle il y a un sérieux problème local FreezeAlarme = -20 -- [°C] tmp alarme freeze local TimerHallEntree = 8*60 -- [s] timer lampes Hell d'entrée local TimerHellNuitSdJ = 5*60 -- [s] timer lampes Hall de nuit SdJ local TimerHallNuitSdB = 5*60 -- [s] timer lampes Hall de nuit SdB
Lazer Posté(e) le 30 octobre Signaler Posté(e) le 30 octobre Ah ben voilà, c'est donc bien ce que je disais, ça fonctionne uniquement parce que cette variable TisunChaudiereSolaireOn n'est pas une VariableCache au sens GEA, mais une variable (locale de surcroit) au sens LUA. Après rien ne t'empêche de stocker cette variable locale LUA dans une VariableCache GEA en plus.
jojo Posté(e) le 30 octobre Signaler Posté(e) le 30 octobre en fait je suis passé (pour cette variable) à une variable cache calculée : -- variables cache : TisunChaudiereSolaireOn = tmp Tisun pour mettre CHAIDERE_SOLAIRE à On GEA.add ({"VariableQA", id["GESTION_CHAUFFAGE"], "ChMaisonMode", "Off"}, 0, "", {"VariableCache", "TisunChaudiereSolaireOn", 10}) GEA.add ({"VariableQA", id["GESTION_CHAUFFAGE"], "ChMaisonMode", "ECS"}, 0, "", {"VariableCache", "TisunChaudiereSolaireOn", 60}) GEA.add ({"VariableQA", id["GESTION_CHAUFFAGE"], "ChMaisonMode", "SdB"}, 0, "", {"VariableCache", "TisunChaudiereSolaireOn", 64}) GEA.add ({"VariableQA", id["GESTION_CHAUFFAGE"], "ChMaisonMode", "Confort"}, 0, "", {"VariableCache", "TisunChaudiereSolaireOn", 70}) GEA.add (true, 0, "", {"VariableCache", "TisunChaudiereSolaireOff", {"VariableCache", "TisunChaudiereSolaireOn"}}) GEA.add (true, 0, "", {"VariableCache", "TisunChaudiereSolaireOff", "inc+8"}) d'où mes précédentes questions
fredokl Posté(e) vendredi à 21:39 Signaler Posté(e) vendredi à 21:39 Hello. J'ai une ligne GEA qui me pose problème. GEA.add( id["WP_CONGELATEUR"], 10*60,"Prise du conglateur éteinte depuis #duration#", {"Repeat"} ) Elle fonctionne bien mais elle continue à envoyer des push malgré que la prise soit allumée. Avez-vous une idée de comment faire pour stopper l'envoi de push quand la prise est sur allumée? Merci.
Lazer Posté(e) vendredi à 22:19 Signaler Posté(e) vendredi à 22:19 Ajoute un "Inverse" dans les actions. 1
jojo Posté(e) il y a 18 heures Signaler Posté(e) il y a 18 heures ou alors GEA.add({"TurnOff",id["WP_CONGELATEUR"]}, 10*60,"Prise du conglateur éteinte depuis #duration#", {"Repeat"} ) car avec ce que tu as écrit, tu testes si la prise du congélateur est allumée ... 1
fredokl Posté(e) il y a 15 heures Signaler Posté(e) il y a 15 heures Merci à tous les deux pour vos réponse.
fredokl Posté(e) il y a 14 heures Signaler Posté(e) il y a 14 heures (modifié) Toujours dans la configuration de mon nouveau GEA, je voudrais savoir si cette ligne se lancera bien si le "Profile" est différent de "Présent" et dans le cas où il est déjà en "Présent", il ne se passera rien. Si je me fie à la syntaxe ça devrait fonctionner. GEA.add( {{"Profile!", "Présent"}, {"Global","Jour_Nuit","Jour"}}, 0, "Profile: Présent", {"Open",id["VOLET_SALON"]}, "Activation Mode Présent & ouvertures du volet Salon" ) Modifié il y a 14 heures par fredokl
fredokl Posté(e) il y a 14 heures Signaler Posté(e) il y a 14 heures (modifié) Où, le code suivant peut-être aussi utilisé à la place? GEA.add( {{"Profile", "Présent"}, {"Global","Jour_Nuit","Jour"}}, 0, "Profile: Présent", {{"Inverse"}, {"Open",id["VOLET_SALON"]}}, "Activation Mode Présent & ouvertures du volet Salon" ) Modifié il y a 14 heures par fredokl
Lazer Posté(e) il y a 10 heures Signaler Posté(e) il y a 10 heures Je pense que les 2 règles devraient fonctionner à l'identique, mais perso je préfère la première écriture, je trouve ça plus clair : on voit directement dans la condition le point d'exclamation qui signifie "différent de", plutôt que la seconde où il faut aller visualiser le "Inverse" dans les actions pour comprendre que la première condition est inversée.
jojo Posté(e) il y a 9 heures Signaler Posté(e) il y a 9 heures je préfère également la première version, car l'utilisation du "Inverse" nécessite de retourner en arrière pour comprendre la condition. ET de plus, il est source d'erreur : Ce que tu veux, c'est inverser uniquement la première condition, et avec "Inverse", tu inverserais toutes les conditions. Il faudrait donc écrire "Inverse 1". Maintenant, je me trompe peut-être, car je n'ai JAMAIS utilisé cette option, car j'ai toujours privilégié la première solution (qui fonctionne à tous les coups et est plus simple/lisible)
Lazer Posté(e) il y a 6 heures Signaler Posté(e) il y a 6 heures Je ne suis pas sûr, mais je crois que "Inverse" n'a d'effet que sur la première condition.
Messages recommandés