jojo Posté(e) le 3 juillet 2022 Signaler Posté(e) le 3 juillet 2022 je teste GEA Alarm. Les alarmes sont bien réglées comme je veux mais elles n'agissent pas comme je le souhaite. Ai-je fait une erreur dans mon code GEA ? GEA.add ({"Alarm", id["GEA_ALARME_PISCINE"], 1}, 0, "Démarrage pompe piscine", {"TurnOn", id["PISCINE_POMPE"]}) GEA.add ({"Alarm", id["GEA_ALARME_PISCINE"], 2}, 0, "Arrêt pompe piscine", {"TurnOff", id["PISCINE_POMPE"]})
Lazer Posté(e) le 3 juillet 2022 Signaler Posté(e) le 3 juillet 2022 A priori la syntaxe est OK. Mais comme je ne suis pas devin, je n'arrive pas à voir le log que tu n'as pas copié/collé
jojo Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 Le 30/06/2022 à 10:21, Yannick a dit : 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 } @Yannick voici le code d'une scène LUA qui dans son débug génère (pièce par pièce) une liste des modules et leur id. Il s'agit d'un code qui (de mémoire) a été créé par @Steven er je suppose (comme d'hab) rendu compatible avec la HC3 par @Lazer. local hidden = false --- true pour exporter les devices cachés local dead = false -- true pour exporter les devices morts local excludeType = {"com.fibaro.zwaveDevice", "weather", "HC_user", "iOS_device", "com.fibaro.voipUser"} local excludeID = {} local devicesJSon = api.get("/devices") local devices = {} local names = {} local rooms = {} function addName(name, roomname) if (type(names[name]) == "nil") then names[name] = true return name else return addName(name.."_"..roomname, roomname) end end function getRooms() local roomsJSon = api.get("/rooms") rooms[0] = "inconnu" for k, v in ipairs(roomsJSon) do rooms[v.id] = v.name end end function rename(name, roomname) local name = name:upper():gsub("[éêèë]", "E"):gsub("EE", "E"):gsub("[ûüù]", "U"):gsub("UU", "U"):gsub("[àâä]", "A"):gsub("AA", "A"):gsub("[öô]", "O"):gsub("OO", "O"):gsub("[îï]", "I"):gsub("II", "I"):gsub("%W", "_") local roomname = roomname:upper():gsub("[éêèë]", "E"):gsub("EE", "E"):gsub("[ûüù]", "U"):gsub("UU", "U"):gsub("[àâä]", "A"):gsub("AA", "A"):gsub("[öô]", "O"):gsub("OO", "O"):gsub("[îï]", "I"):gsub("II", "I"):gsub("%W", "_") return addName(name, roomname) end getRooms() for k, v in pairs(devicesJSon) do local doit = (hidden or v.visible) and (dead or not v.dead) if (doit) then for h, w in pairs(excludeType) do if (v.type == w) then doit = false end end if (doit) then for h, w in pairs(excludeID) do if (v.id == w) then doit = false end end end end if (doit) then table.insert(devices, v) end end table.sort(devices, function(a,b) return a.roomID<b.roomID end) local result = "<BR><BR>-- IDs générés le : " .. os.date("%d/%m/%y à %X") local room = -1 local lastinfo = ""; result = result .. "<BR><BR>local id = {" for k, v in ipairs(devices) do if (room ~= v.roomID) then room = v.roomID result = result .. "<BR>--"..rooms[v.roomID].."<BR>" end lastinfo = rename(v.name, rooms[v.roomID]) result = result .. lastinfo .. " = " .. v.id .. ", " end result = result .. "<BR>}" result = result .. "<BR>" result = result .. "<BR>-- usage :" result = result .. "<BR>-- fibaro:getValue(id[\""..lastinfo .."\"], \"value\")" result = result .. "<BR>-- GEA.add(id[\""..lastinfo .."\"], 30, \"\")" result = result .. "<BR>-- to add in the following QA :" result = result .. "<BR>-- GEA" print(result)
Lazer Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 Je n'ai pas souvenir avoir jamais utilisé cette scène, donc ce n'est pas moi qui l'ai porté sur HC3 ; )
Yannick Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 (modifié) Salut, salut, Alors après lecture de la doc de syntaxe, j'avoue ne pas vraiment trouver la réponse à mon interrogation. Voici ma ligne GEA GEA.add({{"Value+", id["BAL"], 0}}, -1, "GEA Courrier reçu") Voici le DEBUG [04.07.2022] [12:29:43] [TRACE] [QA_GEA_728]: ---------------------------------------------------------------------------------------------------- [04.07.2022] [12:29:43] [TRACE] [QA_GEA_728]: Démarrage par événement de GEA 7.37 : mode device #653 Boîte à Lettres (Couloir) value [04.07.2022] [12:29:43] [TRACE] [QA_GEA_728]: ---------------------------------------------------------------------------------------------------- [04.07.2022] [12:29:43] [DEBUG] [QA_GEA_728]: Ajout immédiat #7 : ["Value+",[653,0]] => [04.07.2022] [12:29:43] [DEBUG] [QA_GEA_728]: @0s [Validation] #7 : ["Value+",[653,0]] => Mais je ne reçois pas la notif mais sans aucun message d'erreur ! une subtilité ? @Lazer tu me dis que les 0 et 1 sur la HC3 sont devenus "true" et "false" mais apparemment, au vu du debug, ça à l'air de fonctionner on ? Autre truc que je ne comprends pas : Voici ma ligne GEA GEA.add({"Time","Sunset+45"}, 0, "Fermeture des volets",{"Close", id["Volets"]}) lorsque je je modifie la variable "Time" avec une heure fixe----> ça fonctionne Si je mets "Sunset+45"... rien ne se passe sans aucun message d'erreur Enfin voilà à l'aide quoi Sinon j'ai fait cela aussi : GEA.add({"Value+", id["temp_ext"], 23}, 30, "Température > 23° Je Baisse les Volets", {"Open", id["Volets"],25}) et ben là ça fonctionne nickel !!!!! Merci beaucoup Modifié le 4 juillet 2022 par Yannick
Lazer Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 1/ Non parce que sinon dans GEA tu aurais eu [Démarrage] ... Explication : 0 ou 1 ne peut en aucun cas être égal à true ou false, donc pour GEA, d'un point de vue LUA, la condition n'est jamais valide. Je t'ai déjà dit d'oublier les 0 et les 1, c'était sur HC2 ça Donc soit tu utilises true/false dans tes conditions, soit tu utilises l'écriture abrégée avec uniquement l'ID de ton module (voir la doc pour les nombreux exemples) Attention aussi à ton "+" aussi qui traine dans le Value et qui n'a rien à faire là. 2/ Essaye de mettre un intervalle plutôt qu'une heure fixe dans ta condition Time. Je le redis à chaque fois, mais GEA n'est pas adapté au déclenchement à heure fixe. Un intervalle de 1 ou 2 minutes suffit normalement. Là aussi, dans la doc il y a plusieurs exemples.
Yannick Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 (modifié) GEA.add({"Time", "sunset", "22:00"}, 30, "Fermeture des volets",{"Close", id["Volets"]}) GEA.add({"Value", id["BAL"], true}, -1, "GEA Courrier reçu") de ce style ? On est d'accord que, comme dans l'exemple de la doc, je lui dis que, au coucher du soleil, et pas avant 22:00, tu fermes les volets ? Ah, non zut, comme ça GEA.add({"Time", "sunset>22:00", "22:05"}, 30, "Fermeture des volets",{"Close", id["Volets"]}) et pas après 22H05 Modifié le 4 juillet 2022 par Yannick
Lazer Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 ça m'a l'air bon ainsi. Cela dit pour les Sunset "pas avant..." je ne maitrise vraiment pas, donc il faut faire confiance à ce qui est documenté. 1
jojo Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 il y a une heure, Yannick a dit : GEA.add({"Time", "sunset", "22:00"}, 30 cela veut dire : si on est pendant 30 sec entre le sunset (d'après la doc cela devrait être Sunset) et 22h00, alors ... il y a une heure, Yannick a dit : GEA.add({"Value", id["BAL"], true} tu pourrais mettre (comme suggéré par @Lazer) GEA.add(id["BAL"], -1, ... il y a une heure, Yannick a dit : GEA.add({"Time", "sunset>22:00", "22:05"}, 30, Remarque 1 : il faudrait écrire Sunset (et pas sunset) La condition ici est au coucher du soleil (si le coucher du soleil est après 22h) sinon entre 22h et 22h05.
jojo Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 il y a 17 minutes, Lazer a dit : Cela dit pour les Sunset "pas avant..." je ne maitrise vraiment pas, donc il faut faire confiance à ce qui est documenté. c'est vraue cette partie là de la doc, il faut essayer de la comprendre avant l'apéro
jojo Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 Le 03/07/2022 à 17:30, Lazer a dit : Mais comme je ne suis pas devin, je n'arrive pas à voir le log que tu n'as pas copié/collé ou bien je ne suis pas bon en Français, mais être devin, n'est-ce pas le propre des dieux ? J'ai donc mis une alarme à 18h29 , j'ai mis en commentaire toutes les autres règles GEA (pour avoir un log lisible) [04.07.2022] [18:28:18] [DEBUG] [QA_GEA_167]: ... check running #16 @480s... [04.07.2022] [18:28:19] [DEBUG] [QA_GEA_167]: @480s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat* [04.07.2022] [18:28:19] [DEBUG] [QA_GEA_167]: @480s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat* [04.07.2022] [18:28:48] [DEBUG] [QA_GEA_167]: ... check running #17 @510s... [04.07.2022] [18:28:48] [DEBUG] [QA_GEA_167]: @510s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat* [04.07.2022] [18:28:48] [DEBUG] [QA_GEA_167]: @510s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat* [04.07.2022] [18:29:18] [DEBUG] [QA_GEA_167]: ... check running #18 @540s... [04.07.2022] [18:29:18] [DEBUG] [QA_GEA_167]: @540s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat* [04.07.2022] [18:29:18] [DEBUG] [QA_GEA_167]: @540s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat* [04.07.2022] [18:29:48] [DEBUG] [QA_GEA_167]: ... check running #19 @570s... [04.07.2022] [18:29:48] [DEBUG] [QA_GEA_167]: @570s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat* [04.07.2022] [18:29:48] [DEBUG] [QA_GEA_167]: @570s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat* [04.07.2022] [18:30:18] [DEBUG] [QA_GEA_167]: GEA run since 10m - Memory used: 937.34 KB - CPU consumed: 552.18 ms ( 0.046 % ) [04.07.2022] [18:30:18] [DEBUG] [QA_GEA_167]: ... check running #20 @600s... [04.07.2022] [18:30:18] [DEBUG] [QA_GEA_167]: @600s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat* [04.07.2022] [18:30:18] [DEBUG] [QA_GEA_167]: @600s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat* [04.07.2022] [18:30:48] [DEBUG] [QA_GEA_167]: ... check running #21 @630s... [04.07.2022] [18:30:48] [DEBUG] [QA_GEA_167]: @630s [Validation] #5 : ["Alarm",[254,1]] => ["TurnOn",[233]] *repeat* [04.07.2022] [18:30:48] [DEBUG] [QA_GEA_167]: @630s [Validation] #6 : ["Alarm",[254,2]] => ["TurnOff",[233]] *repeat* pour rappel voici mon GEA function setEvents() -- ========================================================== -- Règles utilisateur -- ========================================================== -- IDs générés le : 01/07/22 à 19:47:16 local id = { ... --Piscine PISCINE_CHAUFFAGE = 234, PISCINE_TMP = 232, PISCINE_TMPSEUIL = 230, PISCINE_TMPLAST = 231, PISCINE_THERMOSTAT = 235, PISCINE_POMPE = 233, GEA_ALARME_PISCINE = 254, PISCINE_MODEHIVER = 213, GESTION_PISCINE = 214, PISCINE_TMPAUTH = 252, ... } ... GEA.add ({"Alarm", id["GEA_ALARME_PISCINE"], 1}, 0, "Démarrage pompe piscine", {"TurnOn", id["PISCINE_POMPE"]}) GEA.add ({"Alarm", id["GEA_ALARME_PISCINE"], 2}, 0, "Arrêt pompe piscine", {"TurnOff", id["PISCINE_POMPE"]}) ... end je ne vois de spécial dans le log
Lazer Posté(e) le 4 juillet 2022 Signaler Posté(e) le 4 juillet 2022 Effectivement, tout semble OK, et pourtant rien ne se déclenche. Là, ça ressemble à un bug.... hum, ça ne va pas être évident à trouver ça, il va falloir que je me replonge dans le code Juste comme ça, tu peux essayer avec 1 seule règle d'alarme dans ta config ?
Yannick Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 (modifié) Il y a 15 heures, jojo a dit : cela veut dire : si on est pendant 30 sec entre le sunset (d'après la doc cela devrait être Sunset) et 22h00, alors ... Salut Jojo. J'ai modifié avec le S au lieu du s.. mais hier soir, ça a fonctionné. je verrais ce soir. Il y a 15 heures, jojo a dit : tu pourrais mettre (comme suggéré par @Lazer) GEA.add(id["BAL"], -1, ... tu veux dire comme ça ? GEA.add({"Value", id["BAL"],-1, true},30, "Courrier reçu") je vais faire une scène blocs pour ma notif de courrier, cela fonctionnait avant, je voulais juste faire un minimum de scènes pour ne pas blinder ma box. Merci pour votre aide quand même @Lazeret @jojo. si ça pouvait marcher ce serait cool pour la gestion centralisée. j'avais rajouté ça dans mon GEA pour avoir les heures de levé et couché du soleil de la box mais j'ai pas les infos dans mon push GEA.add(true, 0, "Le levé du soleil est prévu à #Sunrise# et le couché à #Sunset#") ça me renvoie le texte brut : "Le levé du soleil est prévu à #Sunrise# et le couché à #Sunset#" et une dernière question pour aujourd'hui svp ? J'ai fait cette ligne de code pour faire cela : Entre 08h et 22h, si la t° ext redescend en dessous de 20°, j'ouvre les volets. Pour moi ça se traduit comme ça : j'ai bon ? GEA.add({{"Time", "08:00", "22:00"}, "Value-", id["temp_ext"], 20}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]}) J'ai un doute Modifié le 5 juillet 2022 par Yannick
Lazer Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 il y a une heure, Yannick a dit : tu veux dire comme ça ? GEA.add({"Value", id["BAL"],-1, true},30, "Courrier reçu") Non non, inutile de rajouter tout ces trucs inutiles, il fallait l'écrire comme Jojo te l'a dit. C'est l'écriture abrégée, très pratique, surtout plus lisible. Encore une fois, il y a plein d'exemples dans la doc, tu devrais vraiment l'ouvrir. il y a une heure, Yannick a dit : J'ai fait cette ligne de code pour faire cela : Entre 08h et 22h, si la t° ext redescend en dessous de 20°, j'ouvre les volets. Pour moi ça se traduit comme ça : j'ai bon ? GEA.add({{"Time", "08:00", "22:00"}, "Value-", id["temp_ext"], 20}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]}) Attention il te manque des accolades autour de ta seconde condition Value- 1
Yannick Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 GEA.add({{"Time", "08:00", "22:00"}, {"Value-", id["temp_ext"], 20}}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]}) de cette façon alors... ouais je vais plancher là-dessus. quand tu me parle de la doc c'est bien la doc de syntaxe ?
Lazer Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 Oui la doc de syntaxe, surtout que @jojo l'a mis à jour récemment. Ta syntaxe me semble OK. Il y a 2 heures, Yannick a dit : GEA.add(true, 0, "Le levé du soleil est prévu à #Sunrise# et le couché à #Sunset#") Il faudrait vérifier dans la doc (toujours elle ) mais je pense que ça ne doit pas être supporté.
Yannick Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 Ben pourtant c'est dans la doc !!! Line 2010 -- #sunrise# - #sunset# : {Sunrise} / {Sunset} Line 2011 GEA.add(true, 0, "Le levé du soleil est prévu à {Sunrise} et le couché à {Sunset}")
Yannick Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 (modifié) Il y a 6 heures, Lazer a dit : Il y a 7 heures, Yannick a dit : tu veux dire comme ça ? GEA.add({"Value", id["BAL"],-1, true},30, "Courrier reçu") Non non, inutile de rajouter tout ces trucs inutiles, il fallait l'écrire comme Jojo te l'a dit. C'est l'écriture abrégée, très pratique, surtout plus lisible. Encore une fois, il y a plein d'exemples dans la doc, tu devrais vraiment l'ouvrir. ça fonctionne !!!! Simple en fait GEA.add(id["BAL"], -1, "Courrier Reçu") Merciiiiiiiiiiiiiiiiiiiiii Modifié le 5 juillet 2022 par Yannick
jojo Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 Il y a 7 heures, Yannick a dit : GEA.add({{"Time", "08:00", "22:00"}, "Value-", id["temp_ext"], 20}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]}) l'idée est bonne mais erreurS de { c'est ceci qu'il faut GEA.add({{"Time", "08:00", "22:00"}, {"Value-", id["temp_ext"], 20}}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]})
Yannick Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 Il y a 6 heures, Yannick a dit : GEA.add({{"Time", "08:00", "22:00"}, {"Value-", id["temp_ext"], 20}}, 30, "Température < 20° J'ouvre les Volets", {"Open", id["Volets"]}) Oui c'est ce que j'avais corrigé @jojo
jojo Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 Il y a 7 heures, Yannick a dit : GEA.add({"Value", id["BAL"],-1, true},30, "Courrier reçu") ce que j'ai compris de @Lazer, c'est ceci (je ne peux pas tester) GEA.add(id["BAL"],30, "Courrier reçu")
jojo Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 il y a 16 minutes, Yannick a dit : {"Value", id["BAL"],-1, true} comment cela peut-il fonctionner ? d'après la doc : -- "Value" : Teste/modifie la valeur d'un module -- SYNTAXE : {"Value" , <id module>, <valeur>} -- CONDITIONS : GEA.add( {"Value" , 73, 50}, 30, "", {ACTIONS} ) -- Si la valeur du module 73 est égale à 50 \\ If value of device 73 is equal to 50
Yannick Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 (modifié) Non non il y a 13 minutes, jojo a dit : GEA.add(id["BAL"], -1, "Courrier Reçu") Comme tu m'as dit de faire ça fonctionne. ... avec ce code ! c'est parfait et instantané Modifié le 5 juillet 2022 par Yannick
jojo Posté(e) le 5 juillet 2022 Signaler Posté(e) le 5 juillet 2022 Il y a 22 heures, Lazer a dit : Effectivement, tout semble OK, et pourtant rien ne se déclenche. Là, ça ressemble à un bug.... hum, ça ne va pas être évident à trouver ça, il va falloir que je me replonge dans le code Juste comme ça, tu peux essayer avec 1 seule règle d'alarme dans ta config ? où souhaites-tu continuer la discussion puisque c'est un bug suspecté ? ici ou ?
Messages recommandés