jojo Posté(e) le 27 juin 2022 Signaler Posté(e) le 27 juin 2022 Il y a 14 heures, Lazer a dit : Pour ce que tu veux faire, il faut utiliser le QuickApp GEA Alarm : mais en fait je serai confronté à un problème similaire : configurer l'alarme sur base d'une variable (valeur calculée tous les jours à 5h30) -- Réglage de l'heure de l'alarme n°2 sur 22h22 : GEA.add( {CONDITION}, 30, "", {"QuickApp", id["QA_ALARM"], "setTime", 2, "22:22"}) (je devrais remplacer "22:00" dans ton exemple par le contenu d'une variable ...)
Lazer Posté(e) le 27 juin 2022 Signaler Posté(e) le 27 juin 2022 (modifié) J'ai regardé le code de GEA, et je confirme que ce n'est pas possible, "Time" ne peut prendre que des chaines de caractères contenant une heure. Pour définir l'heure avec GEA Alarm, comme tu l'as vu il faut appeler la fonction setTime() du QuickApp. Et là pour le coup, tu n'es pas limité à une chaine de caractère de type string, tu peux la définir programmatiquement. Je n'ai pas essayé depuis une Variable Globale ou une Variable Cache (ça devrait fonctionner), mais je l'ai testé avec "Function" (qui est bien plus puissant car on peut s'en servir pour calculer l'heure désirée en fonction de plein de critères). Exemple basique : GEA.add( {CONDITION}, 30, "", {"QuickApp", id["QA_ALARM"], "setTime", 2, {"Function", function() return "22:22" end}}) Dans cet exemple ultra simple, la fonction retourne bêtement la chaine "22:22" (j'espère que tu as relevé le choix de cette heure si particulière pas du tout due au hasard ), mais comme c'est du LUA dans la fonction, tu peux faire ce que tu veux, et retourner la valeur qui te plait, du moment que la valeur retournée est une heure au format chaine de caractères. Et puisque tu parles de valeur calculée tous les jours à 5h30, je pense qu'avec cette astuce tu vas pouvoir grouper 2 règles GEA en 1 seule, c'est à dire la règle qui calcule l'heure est la même que celle qui affecte l'heure au QA GEA Alarm. Cela simplifie le code, et cela économise l'emploi d'une variable qui devient inutile. "Function" est ultra puissant, la seule limite est notre imagination. Modifié le 27 juin 2022 par Lazer
jojo Posté(e) le 27 juin 2022 Signaler Posté(e) le 27 juin 2022 Il y a 2 heures, Lazer a dit : j'espère que tu as relevé le choix de cette heure si particulière pas du tout due au hasard La grande claaaaasse , surtout que posté à Il y a 2 heures, Lazer a dit : je l'ai testé avec "Function" (qui est bien plus puissant en fait j'utilise GEA comme trigger d'exécution de mon code LUA dans une QA, car tout est plus lisible ainsi. -- Pompe GEA.add ({"Time", "05:15", "05:30"}, 0, "", {"QuickApp", id["GESTION_PISCINE"], "DureePompe"}) et le code LUA : function QuickApp:DureePompe() self:debug("DureePompe") local TmpSeuil = fibaro.getValue(id["PISCINE_TMPSEUIL"],"value") local PiscineHrDebut = self:getVariable("PiscineHrDebut") self:trace("Piscine_TmpSeuil = "..TmpSeuil.."°C") self:trace("QAVariable PiscineHrDebut = "..PiscineHrDebut) PiscineHrDebut = tonumber(string.sub(PiscineHrDebut,1,string.find(PiscineHrDebut,":")-1)) self:trace("PiscineHrDebut = "..tostring(PiscineHrDebut)) if TmpSeuil < tonumber(self:getVariable("PiscineTmp0")) then PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur0")) elseif (TmpSeuil >= tonumber(self:getVariable("PiscineTmp0")) and TmpSeuil < tonumber(self:getVariable("PiscineTmp1"))) then PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur1")) elseif (TmpSeuil >= tonumber(self:getVariable("PiscineTmp1")) and TmpSeuil < tonumber(self:getVariable("PiscineTmp2"))) then PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur2")) elseif (TmpSeuil >= tonumber(self:getVariable("PiscineTmp2")) and TmpSeuil < tonumber(self:getVariable("PiscineTmp3"))) then PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur3")) elseif (TmpSeuil >= tonumber(self:getVariable("PiscineTmp3")) and TmpSeuil < tonumber(self:getVariable("PiscineTmp4"))) then PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur4")) elseif TmpSeuil >= tonumber(self:getVariable("PiscineTmp4")) then PiscineHrFin = PiscineHrDebut + tonumber(self:getVariable("PiscineHrDur5")) end if PiscineHrFin > 24 then PiscineHrFin = PiscineHrFin - 24 end PiscineHrFin = tostring(PiscineHrFin) if string.len(PiscineHrFin) == 1 then PiscineHrFin = "0"..PiscineHrFin end PiscineHrFin = PiscineHrFin .. ":00" self:trace("PiscineHrFin = "..PiscineHrFin) self:setVariable("PiscineHrFin", PiscineHrFin) self:trace("QAVariable PiscineHrFin = "..self:getVariable("PiscineHrFin")) end maintenant l'idée serait de mettre le résultat de mon LUA dans la variable du QA (idéalement, ou dans une VG) au bon format (avec ou sans " ou autre ?) et d'en récupérer la valeur avec la fonction. Mais quel code pour la fonction ?
Lazer Posté(e) le 27 juin 2022 Signaler Posté(e) le 27 juin 2022 (modifié) Ah ben si tu as un QA externe qui fait tout le boulot de détermination de l'heure, alors c'est encore plus facile, je ne sais même pas pourquoi tu poses la question puisque tu connais (mais a oublié ) déjà les réponses fibaro.call(ID_GEA_Alarm, "setTime", numéro_alarme, PiscineHrFin) Au format "00:00" bien entendu. (ou hub.call si tu préfères) Modifié le 1 juillet 2022 par Lazer Fautes de syntaxe 1
jojo Posté(e) le 27 juin 2022 Signaler Posté(e) le 27 juin 2022 c'est vrai que c'est encore mieux ! => merci
Yannick Posté(e) le 28 juin 2022 Signaler Posté(e) le 28 juin 2022 (modifié) Le 24/06/2022 à 17:52, jojo a dit : et ne pas oublier de dire l'id de l'utilisateur à qui il faut envoyer la notif GEA.portables = {2} (ici toutes les notifs sont envoyées à l'utilisateur 2, qui est (normalement) l'utilisateur admin créé automatiquement lors du premier démarrage de la box Salut @jojo pour ma part dans GEA, j'ai renseigné l'ID de mon smartphone (729) et les notifs passent nickel. Mais merci pour d'avoir soulevé ce point Modifié le 28 juin 2022 par Yannick
Manu31 Posté(e) le 28 juin 2022 Signaler Posté(e) le 28 juin 2022 Bonjour, Il serait intéressant d'avoir tout ton GEA à la fin @jojo. Tu as l'air d'avoir des trucs assez complet Si jamais tu peux poster ça, ça m'intéresse Bonne journée 1
Yannick Posté(e) le 28 juin 2022 Signaler Posté(e) le 28 juin 2022 (modifié) Ben tu m'étonnes !! Modifié le 28 juin 2022 par Yannick
Lazer Posté(e) le 28 juin 2022 Signaler Posté(e) le 28 juin 2022 Pour rappel, il y a 2 showroom GEA sur le forum. Qui datent de la HC2 certes, mais la plupart des exemples sont encore valables, ça peut vous servir d'inspiration. En tout cas c'est là bas qu'il faut partager vos codes, ici c'est le topic du Support GEA, donc pour demander de l'aide.
jojo Posté(e) le 29 juin 2022 Signaler Posté(e) le 29 juin 2022 ne ferait-on pas alors un Showroom GEA HC3 pour éviter la confusion . Il y a 22 heures, Manu31 a dit : Si jamais tu peux poster ça, ça m'intéresse c'est le principe fondamental de ce forum : entraide et partage. En ce qui me concerne, je ne suis qu'en phase de préparation de ma migration (même si mon GEA fait déjà plus de 200 lignes) D'ici fin août (j'espère) il devrait être ok à 90%. Mais je peux, si tu le désires, déjà poster ce que j'ai, là où dieu me dira de le faire
Yannick Posté(e) le 30 juin 2022 Signaler Posté(e) le 30 juin 2022 Trop bien !!! Bon moi je suis pas à 90% loin de là, et quand je commence simplement à essayer de faire des trucs ça plante. Voilà : je veux simplement déclarer mes id locaux j'ai un crash local id = { spa = 777 Danfoss_sejour = 723 } et j'ai ça dans le debug [30.06.2022] [10:16:00] [ERROR] [QUICKAPP728]: QuickApp crashed[30.06.2022] [10:16:00] [ERROR] [QUICKAPP728]: config.lua:16: '}' expected (to close '{' at line 14) near 'Danfoss_sejour' et autre question : si j'ai plusieurs modules identiques que je veux piloter en mêle temps, est-ce que je peux faire ça ? comme dans une scène ? local Danfoss_sejour = {723,724,725} Merci
jojo Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 dans la définition de ton tableau d'id, tu as oublié une , après ... = 177 tu as deux solutions : dans GEA, tu crées plusieurs actions (séparées par des , ) tu crées un QA "Linked Devices" Binary Sensor, c'est comme un groupe de modules que tu peux actionner en agissant que sur ce QA => essaie. P.S. prends le temps de lire la super doc de syntaxe écrite par @Lazer, tu auras pleins d'idées
Lazer Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 Pour répondre à ta 2nde question @Yannick oui tu peux exécuter la même action sur plusieurs devices en même temps avec GEA, il faut les regrouper entre accolades. Il y a plusieurs exemples dans la doc de syntaxe. Exemple : GEA.add( CONDITIONS, 30, "", {"TurnOn", {id["lampe_sejour"], id["lampe_salon"]}})
Yannick Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 Il y a 3 heures, jojo a dit : dans la définition de ton tableau d'id, tu as oublié une , après ... = 177 tu as deux solutions : dans GEA, tu crées plusieurs action (séparées par des , ) tu crées un QA "Linked Devices" Binary Sensor, c'est comme un groupe de modules que tu peux actionner en agissant que sur ce QA => essaie. P.S. prends le temps de lire la super doc de syntaxe écrite par @Lazer, tu auras pleins d'idées Salut @jojo Aaaaaaaaah voilà pourquoi alors. Je vais regarder cette doc alors et revenir vers vous si je ne m'en sors pas !!! Merci
Yannick Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 Il y a 3 heures, Lazer a dit : Pour répondre à ta 2nde question @Yannick oui tu peux exécuter la même action sur plusieurs devices en même temps avec GEA, il faut les regrouper entre accolades. Il y a plusieurs exemples dans la doc de syntaxe. Exemple : GEA.add( CONDITIONS, 30, "", {"TurnOn", {id["lampe_sejour"], id["lampe_salon"]}}) Merci @Lazer
Yannick Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 le doc de la syntaxe que je trouve est celui de @Steven en V6.11. il y en a un autre plus récent : mis à jour pour HC3 par exemple ?
Lazer Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 Sur le topic de GEA pour HC3 PS : profites-en pour mettre à jour ta signature afin d'indiquer que tu as une HC3, ça simplifiera l'aide qu'on peut t'apporter, car il y a des différences entre les 2 box.
jojo Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 il y a 3 liens à mettre dans tes favoris (en plus de celui vers ce forum) tous les autres favoris sont PARFAITEMENT inutiles (allez, soyons fair-play, tu peux rajouter Google) 1
jojo Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 Le 27/06/2022 à 14:56, Lazer a dit : fibaro.call(ID_GEA_Alarm, setTime, PiscineHrFin) Au format "00:00" bien entendu. dans le fibaro.call, ça ne devrait pas être "setTime" au lieu de setTime (=> rajouter des ") et si on veut préciser que c'est l'heure de l'alarme # 2, que faut-il mettre ? (car dans GEA c'est possible) -- Réglage de l'heure de l'alarme n°2 sur 22h22 : GEA.add( {CONDITION}, 30, "", {"QuickApp", id["QA_ALARM"], "setTime", 2, "22:22"}) Merci (encore une fois)
Lazer Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 Si, bien vu pour "setTime" Et du coup, mon exemple était doublement faux, car il manque le numéro d'alarme désirée. Donc ça donne : hub.call(ID_GEA_Alarm, "setTime", 2, "22:22") Quand tu as un doute, tu vas voir le code source LUA (c'est ce que je fais tout le temps.... car on fait plus d'erreurs dans les docs) La fonction est définir ainsi : function QuickApp:setTime(alarmID, heure) -- end Donc on a bien l'ID de l'alarme en 1er argument, avant l'heure. Que ça soit en LUA, via GEA, ou encore l'API HTTP, les arguments des fonctions doivent toujours être donnés dans le même ordre si on veut que ça fonctionne. 1
jojo Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 n'espérant pas une réponse si rapide (tu as mis un -1 dans ce topic ?), j'étais en train d'essayer de faire du reverse engineering de ce code de malade. Mais n'étant PAS DU TOUT développeur, j'avais peu d'espoir de trouver la réponse ...
Lazer Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 Ouais, le -1 en langage courant ça s'appelle une notification, c'est magique Le code du QuickApp "GEA Alarm" est très simple C'est le code de GEA qui est un truc de malade...
Yannick Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 merci les chefs... Bon par contre, j'ai réglé mon pb de capteur qui capte pas ça c'est bon mais l'action GEA ne fonctionne pas. je redonne mon code GEA.add({{"Value+", id["BAL"], 0}}, 0, "GEA Courrier reçu") c'est pas Value pour un FGK qu'il faut checker ???
Lazer Posté(e) le 1 juillet 2022 Signaler Posté(e) le 1 juillet 2022 Réponse par une question : c'est pour HC2 ou HC3 cette règle là ? Parce que 0 et 1 c'étaient les valeurs que prennaient les capteurs sur HC2. Sur HC3 c'est plus propre, c'est true/false en disant cela normalement ça te donne la réponse
Messages recommandés