Dgille Posté(e) le 3 novembre 2018 Signaler Posté(e) le 3 novembre 2018 Bonjour à tous, j'ai un soucis avec (l'exceptionnel) GEA, qui étant déjà présent en 6.07, même si je suis passé en 6.10 entre temps. J'ai un détecteur vision sur une porte de garage et je veux être averti si elle reste ouverte trop longtemps, puis éventuellement si elle a été refermée. Deux lignes simplissimes sur le principe: GEA.add(148, 10*60, "La porte du garage est ouverte depuis plus de 10 minutes",{{"Global","pushover", "La porte du garage est ouverte depuis plus de 10 minutes"},{"Global","PorteG1", "1"},{"Repeat"}}) GEA.add( {{"Global","PorteG1", "1"},{"Value",148,"0"}}, -1, "La porte du garage est refermée...",{{"Global","pushover", "La porte du garage est refermée"}, {"Global","PorteG1", "0"} }) La VG PorteG1 est positionnée a 1 quand elle est restée ouverte trop longtemps pour déclencher la notification qu'elle est maintenant fermée. La 1ere ligne fonctionne, la VG est bien positionnée à 1. La seconde jamais. Pour vérifier la partie variable, j'ai ajouté cette ligne, cela fonctionne. GEA.add( {"Global","PorteG1", "1"}, 30, "la VG PorteG1 vaut 1..., mise à zéro",{{"Global","pushover", "la VG PorteG1 vaut 1..., mise à zéro"}, {"Global","PorteG1", "0"} }) Quand je mets les deux conditions, pas de déclenchement. J'ai vérifié que "value" est bien a zéro sur le Vision (148) quand est elle fermée. J'ai 30 autres règles, plus compliquées que cela et pas de problème. Une idée ?? Merci pour votre aide
fredokl Posté(e) le 3 novembre 2018 Signaler Posté(e) le 3 novembre 2018 Citation utilises tu les plugins ? Cela te le fait pour tous les déclenchements instantanés ? Peux tu mettre ta ligne correspondant au module 791 stp ? Commente la ligne pour tester stp. @pepiteSalut, non je n'utilise pas de plugins. Oui cela me le fait pour tous le déclenchements instantanés. J'ai fait la mise à jour GEA 6.10. Je précise qu'avant de passer sur les firmwares 4.510 puis 4.511b, tous fonctionnait bien. Je n'ai rien modifié. Les autres déclenchements instantanés sont sur le même schéma et ne concernent que des lampes. --LAMPE COULOIR (791) --La lampe s'allume à 05% de 23h à 06h si il n'y a pas d'invité GEA.add({id["LAMPE_VAR_COULOIR"], {"Time", "23:01", "07:00"},{"Global","Invites_Maison","NON"}}, -1, "", {"Value", id["LAMPE_VAR_COULOIR"], 05}) --La lampe s'allume à 65% de 23h à 06h si il y a des invités GEA.add({id["LAMPE_VAR_COULOIR"], {"Time", "23:01", "07:00"},{"Global","Invites_Maison","OUI"}}, -1, "", {"Value", id["LAMPE_VAR_COULOIR"], 65}) --La lampe s'allume à 65% en journée GEA.add({id["LAMPE_VAR_COULOIR"], {"Time", "07:01", "23:00"}}, -1, "", {"Value", id["LAMPE_VAR_COULOIR"], 65}) --Éteindre la lampe du couloir au bout de 1 mn si pas de détection avec le capteur du couloir. GEA.add({id["DETECTEUR_MOUVEMENT_COULOIR"], {"Value+", id["LAMPE_VAR_COULOIR"],1}}, 60, "", {{"Inverse"}, {"turnOff", id["LAMPE_VAR_COULOIR"]}}) --Mise à jour Variable Prédéfinie LampeCouloir GEA.add(id["LAMPE_VAR_COULOIR"], -1, "", {"Global", "LampeCouloir", "ON"}) GEA.add(id["LAMPE_VAR_COULOIR"], -1, "", {{"Inverse"},{"Global", "LampeCouloir", "OFF"}}) Merci.
Dragoniacs Posté(e) le 3 novembre 2018 Signaler Posté(e) le 3 novembre 2018 GEA 6.10 installé... pour le moment ça tourne. Je le trouve même plus rapide à démarrer 1
fredokl Posté(e) le 5 novembre 2018 Signaler Posté(e) le 5 novembre 2018 @pepite Bon j'en ai eu marre de ce bug alors hier j'ai décidé de tout effacer (GEA + ses variables). Ensuite j'ai créé une nouvelle scène et remis GEA et la depuis j'ai l'impression que tout re-fonctionne comme avant. Par contre je n'ai jamais eu de plugins et la variables GEA_Plugins existait. Penses-tu que cela pouvait être à l'origine du problème?
pepite Posté(e) le 5 novembre 2018 Signaler Posté(e) le 5 novembre 2018 Bonjour, @fredokl, quelle bonne nouvelle ;-) aucune idée, pourtant cette variable n'est créée que lorsque GEA trouve une correspondance et qu'elle n'existe pas. Le 03/11/2018 à 10:42, Dgille a dit : GEA.add( {{"Global","PorteG1", "1"},{"Value",148,"0"}}, -1, "La porte du garage est refermée...",{{"Global","pushover", "La porte du garage est refermée"}, {"Global","PorteG1", "0"} }) Bonjour @Dgille Ta variable "PorteG1" est-elle dans ton entête puisqu'en déclenchement instantané ? Si tel est le cas, est-ce que la ligne ci-dessous fonctionne ? GEA.add( {{"Global","PorteG1", "1"},{"Value",148,"0"}}, 30, "La porte du garage est refermée...",{{"Global","pushover", "La porte du garage est refermée"}, {"Global","PorteG1", "0"} }) Peux-tu tester ceci aussi après avoir vérifié que ta variable "PorteG1" soit bien dans ton entête stp ? GEA.add( {{"Global","PorteG1", "1"},{"(Value)",148,"0"}}, -1, "La porte du garage est refermée...",{{"Global","pushover", "La porte du garage est refermée"}, {"Global","PorteG1", "0"} })
Steven Posté(e) le 5 novembre 2018 Auteur Signaler Posté(e) le 5 novembre 2018 Je me permet une légère correction, c'est l'ID 148 qui doit être dans l'entête car c'est la fermeture de la porte qui doit déclenché la ligne. La VG elle ne change pas car elle a été positionnée sur "1" lors de l'ouverture de la porte. 1 1
pepite Posté(e) le 5 novembre 2018 Signaler Posté(e) le 5 novembre 2018 ah oui exact, merci pour la relecture lol @Steven trop vite sur ce coup là lol Dans ce cas GEA.add( {{"(Global)","PorteG1", "1"},{"Value",148,"0"}}, -1, "La porte du garage est refermée...",{{"Global","pushover", "La porte du garage est refermée"}, {"Global","PorteG1", "0"} })
Dgille Posté(e) le 5 novembre 2018 Signaler Posté(e) le 5 novembre 2018 Merci à tous les deux. Au départ, je n'avais pas besoin de l'information en instantané, je pensais que les deux conditions seraient évaluées lors du contrôle toutes les 30s, mais si le déclencheur peut aider, pourquoi pas. Modification effectuée à distance, je vous donne le résultat dès que je suis sur place.
Dgille Posté(e) le 5 novembre 2018 Signaler Posté(e) le 5 novembre 2018 Cela fonctionne avec la modification de l'entête !! Merci encore. Juste sur le principe (et histoire de faire avance rle smilblic), pourquoi la condition (value du 148) n'est elle pas évaluée lors du lancement régulier ?
971jmd Posté(e) le 5 novembre 2018 Signaler Posté(e) le 5 novembre 2018 (modifié) salut @pepite il y un moment de ça tu m'avais aidée a intégrée une nouvelle option à GEA GEA.add(condition , 30, "Interrupteur Bloquée",{ {"Protection", 452, 2}} GEA.options.protection = {name="Protection", optimize=true, control=function(id) if (not id) then id = GEA.currentMainId end return GEA.options.number.control(id) end, action=function(id, value) if (not id) then id = GEA.currentMainId end if (type(id) ~= "table") then id = {id} end for i=1, #id do fibaro:call(id[i],"setProtection", value) end end }, Option que j'ai intégré a GEA 6.10 sans problème mai voilà aujourd’hui je cherche a offrir a GEA une option de protection plus complète ( Local protection et RF protection*) *Local protection = blocage de l’interrupteur en local *RF protection = blocage de l’interrupteur depuis un smartphone ou autre le code suivant permet d'activée et désactivée Local protection et RF protection mai il fonctionne en method = 'POST' en mettant à jour l'argument d'un module ---Mode Protection active---- SI ---{ "args": [2,0]} uniquelent Local SI ---{ "args": [0,1]} uniquement RF SI ---{ "args": [2,1]} Local et RF Si ---Mode protection inactive--- Si ---{ "args": [0,1]} uniquelent Local SI ---{ "args": [2,0]} uniquelent RF SI ---{ "args": [0,0]} Local et RF ma question comment intégrée ce code ou la méthode a GEA ? local function postMethod(requestUrl, data, successCallback, errorCallback) local http = net.HTTPClient() print (data) http:request(requestUrl, { options = { method = 'POST', headers = {}, data = data, timeout = data.timeout or 5000 }, success = successCallback, error = errorCallback }) end local function fibaroBlindProtection(id, onOff) -- ID , [on/off] local url = 'http://127.0.0.1:11111/api/devices/'..id..'/action/setProtection' ---Mode Protection active---- ---{ "args": [2,0]} uniquelent Local ---{ "args": [0,1]} uniquement RF ---{ "args": [2,1]} Local et RF ---Mode protection inactive ---{ "args": [0,1]} uniquelent Local ---{ "args": [2,0]} uniquelent RF ---{ "args": [0,0]} Local et RF local data = '{"args": [0,0]}' if onOff == "on" then data = '{ "args": [2,1]}' ----Protection active de Local et RF end postMethod(url, data, function(resp) if resp.status < 300 then print('Connection successful, status ' .. resp.status) else print('Connection failed, status ' .. resp.status) end end, function(err) print('error ' .. err) end ) end -- Utilisez fibaroBlindProtection ( deviceID , "on" ou "off") fibaroBlindProtection (123, "on") Modifié le 5 novembre 2018 par 971jmd
pepite Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 Il y a 15 heures, Dgille a dit : pourquoi la condition (value du 148) n'est elle pas évaluée lors du lancement régulier ? Bonjour, Tu as mis -1 donc en déclenchement instantané et non en automatique. La condition n'est donc évaluée qu'au changement de valeur de ton module 148 qui lance la scène sur le changement de valeur. @971jmd Je regarde et te tiens au courant. Tu peux mettre le json de ton 452 pour RF lorsqu'il est active ou non active stp ? Pour le local, Protection active : 2 et pour le desactiver : 0 ?
pepite Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 @971jmd A toi de jouer tu peux tester ;-) stp. Attention, non testé. Code à mettre dans config() GEA.options.protection = {name="Protection", optimize=true, control=function(id) if (not id) then id = GEA.currentMainId end return GEA.options.number.control(id) end, action=function(id,type,args) if (type(id) ~= "table") then id = {id} end for i=1, #id do local url = 'http://127.0.0.1:11111/api/devices/'..id..'/action/setProtection' local datas if (not type) then if args:lower() == "on" then datas = '{ "args": [2,1]}' else datas = '{"args": [0,0]}' end end if type:lower() == "local" then if args:lower() == "on" then datas = '{ "args": [2,0]}' else datas = '{"args": [0,1]}' end end if type:lower() == "rf" then if args:lower() == "on" then datas = '{ "args": [0,1]}' else datas = '{"args": [2,0]}' end end local http = net.HTTPClient() http:request(url, { options = { method = "POST", data = datas }, success = function(response) end, error = function(err) tools.error(err) end }) end end Puis les lignes : -- Pour LOCAL et RF GEA.add(condition , 30, "Interrupteur Bloqué RF & LOCAL",{ {"Protection", 452, "On"}} GEA.add(condition , 30, "Interrupteur Bloqué RF & LOCAL",{ {"Protection", {452, 32}, "On"}} GEA.add(condition , 30, "Interrupteur DEBloqué RF & LOCAL",{ {"Protection", 452, "Off"}} GEA.add(condition , 30, "Interrupteur DEBloqué RF & LOCAL",{ {"Protection", {452, 32}, "Off"}} -- Pour LOCAL UNIQUEMENT GEA.add(condition , 30, "Interrupteur Bloqué LOCAL UNIQUEMENT",{ {"Protection", 452, "Local", "On"}} GEA.add(condition , 30, "Interrupteur Bloqué LOCAL UNIQUEMENT",{ {"Protection", {452,32}, "Local", "On"}} GEA.add(condition , 30, "Interrupteur DEBloqué LOCAL UNIQUEMENT",{ {"Protection", 452, "Local", "Off"}} GEA.add(condition , 30, "Interrupteur DEBloqué LOCAL UNIQUEMENT",{ {"Protection", {452,32}, "Local", "Off"}} -- Pour RF UNIQUEMENT GEA.add(condition , 30, "Interrupteur Bloqué RF UNIQUEMENT",{ {"Protection", 452, "RF", "On"}} GEA.add(condition , 30, "Interrupteur Bloqué RF UNIQUEMENT",{ {"Protection", {452, 32}, "RF", "On"}} GEA.add(condition , 30, "Interrupteur DEBloqué RF UNIQUEMENT",{ {"Protection", 452, "RF", "Off"}} GEA.add(condition , 30, "Interrupteur DEBloqué RF UNIQUEMENT",{ {"Protection", {452, 32}, "RF", "Off"}} Amuse toi bien
Dgille Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 @Pepite Ok, je pensais que les -1 étaient évaluées lors des déclenchements réguliers ET lors sur événements liés au module. Donc si je supprime de l'entête, il faut mettre une condition minimale, style 30s dans l'état 0. C'est plus clair et on en apprend tous les jours Merci pour ce support efficace (comme d'hab). 1
pepite Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 Il y a 2 heures, Dgille a dit : il faut mettre une condition minimale, style 30s Exactement, En fait avec GEA, toutes les durées multiples de 30 restent dans la même instance, alors que les "-1" créent une autre instance.
971jmd Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 (modifié) @pepite salut oui effectivement je m'amuse j'ai tester plusieurs combinaison et j'ai comme erreur : [DEBUG] 07:25:48: [Démarrage] #7 [true][Protection, [452,"Local","On"]] [DEBUG] 07:25:48: Erreur, vérifier : [Protection, [452,"Local","On"]] [DEBUG] 07:26:18: ... vérification en cours #2 @60s... protection = {name="Protection", optimize=true, control=function(id) if (not id) then id = GEA.currentMainId end return GEA.options.number.control(id) end, action=function(id,type,args) if (type(id) ~= "table") then id = {id} end for i=1, #id do local url = 'http://127.0.0.1:11111/api/devices/'..id..'/action/setProtection' local datas if (not type) then if args:lower() == "on" then datas = '{ "args": [2,1]}' else datas = '{"args": [0,0]}' end end if type:lower() == "local" then if args:lower() == "on" then datas = '{ "args": [2,0]}' else datas = '{"args": [0,1]}' end end if type:lower() == "rf" then if args:lower() == "on" then datas = '{ "args": [0,1]}' else datas = '{"args": [2,0]}' end end local http = net.HTTPClient() http:request (url, { options = { method = "POST", data = datas }, success = function(response) end, error = function(err) tools.error(err) end }) end end }, si on le code lua qui fonctionne, nous avons : local data = '{"args": [0,0]}' if onOff == "on" then data = '{ "args": [2,1]}' end Modifié le 6 novembre 2018 par 971jmd
pepite Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 Ce n'est pas du tout le code que je t'ai proposé, tu as tout modifié. Quand tu te demandes de l'aide, fais au moins semblant de tester le code qu'on te propose. Certes c'est certainement sur que j'ai fait des erreurs...fait au moins semblant avant de tout modifier
971jmd Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 (modifié) désolé j'ai pas coller le bon code, j'ai rectifiée Modifié le 6 novembre 2018 par 971jmd
971jmd Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 j'ai toujours le code erreur Erreur, vérifier : [Protection, [452,"Local","On"]]
971jmd Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 Pour info reçois bien la notif : Interrupteur Bloqué RF & LOCAL GEA.add(true, 30, "Interrupteur Bloqué RF & LOCAL",{ {"Protection", 452, "local", "On"}} )
971jmd Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 (modifié) bon je n'y a rive pas je pense que ça vient de la méthode post Modifié le 6 novembre 2018 par 971jmd
pepite Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 @971jmd Essaie cela dans config() pour voir : GEA.options.protection = {name="Protection", optimize=true, control=function(id) if (not id) then id = GEA.currentMainId end return GEA.options.number.control(id) end, action=function(id,type,args) if (type(id) ~= "table") then id = {id} end for i=1, #id do local url = 'http://127.0.0.1:11111/api/devices/'..id[i]..'/action/setProtection' local datas if (not type) then if args:lower() == "on" then datas = '{ "args": [2,1]}' else datas = '{"args": [0,0]}' end end if type:lower() == "local" then if args:lower() == "on" then datas = '{ "args": [2,0]}' else datas = '{"args": [0,1]}' end end if type:lower() == "rf" then if args:lower() == "on" then datas = '{ "args": [0,1]}' else datas = '{"args": [2,0]}' end end local http = net.HTTPClient() http:request(url, { options = { method = "POST", data = datas }, success = function(response) end, error = function(err) tools.error(err) end }) end end },
971jmd Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 (modifié) enfin mai il y avait des problèmes au niveau des arguments mai le plus gros problème est sur la ligne local url = 'http://127.0.0.1:11111/api/devices/340/action/setProtection' ne prend pas en compte ID pour que ça fonctionne j'ai du placée ID manuellement ID340 protection = {name="Protection", optimize=true, control=function(id) if (not id) then id = GEA.currentMainId end return GEA.options.number.control(id) end, action=function(id,typee,args) if (type(id) ~= "table") then id = {id} end for i=1, #id do action=function(id, property, value) if (type(id) ~= "table") then id = {id} end for i=1, #id do fibaro:call(id[i], "setProperty", property, GEA.getMessage(GEA.incdec(value, GEA.options.property.getValue(id, property)))) end end local url = 'http://127.0.0.1:11111/api/devices/340/action/setProtection' local datas if typee:lower() == "local_rf" then if args:lower() == "on" then datas = '{ "args": [2,1]}' end end if typee:lower() == "local_rf" then if args:lower() == "off" then datas = '{ "args": [0,0]}' end end if typee:lower() == "local" then if args:lower() == "on" then datas = '{ "args": [2,0]}' end end if typee:lower() == "local" then if args:lower() == "off" then datas = '{ "args": [0,2]}' end end if typee:lower() == "rf" then if args:lower() == "on" then datas = '{ "args": [0,1]}' end end if typee:lower() == "rf" then if args:lower() == "off" then datas = '{ "args": [1,0]}' end end local http = net.HTTPClient() http:request (url, { options = { method = "POST", data = datas }, success = function(response) end, error = function(err) tools.error(err) end }) end end }, Modifié le 6 novembre 2018 par 971jmd
971jmd Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 (modifié) oufffff voila tout semble bien fonctionné protection = {name="Protection", optimize=true, control=function(id) if (not id) then id = GEA.currentMainId end return GEA.options.number.control(id) end, action=function(id,typee,args) if (type(id) ~= "table") then id = {id} end for i=1, #id do GEA.getMessage(GEA.incdec(value, GEA.options.property.getValue(id, property)))) end end local url = 'http://127.0.0.1:11111/api/devices/'..id[i]..'/action/setProtection' local datas if typee:lower() == "local_rf" then if args:lower() == "on" then datas = '{ "args": [2,1]}' end end if typee:lower() == "local_rf" then if args:lower() == "off" then datas = '{ "args": [0,0]}' end end if typee:lower() == "local" then if args:lower() == "on" then datas = '{ "args": [2,0]}' end end if typee:lower() == "local" then if args:lower() == "off" then datas = '{ "args": [0,2]}' end end if typee:lower() == "rf" then if args:lower() == "on" then datas = '{ "args": [0,1]}' end end if typee:lower() == "rf" then if args:lower() == "off" then datas = '{ "args": [1,0]}' end end local http = net.HTTPClient() http:request (url, { options = { method = "POST", data = datas }, success = function(response) end, error = function(err) tools.error(err) end }) end end }, -- Pour LOCAL et RF --Bloqué GEA.add(condition , 30, "Interrupteur Bloqué RF & LOCAL",{ {"Protection", 340, "local_rf", "on"}}) GEA.add(condition , 30, "Interrupteur Bloqué RF & LOCAL",{ {"Protection", {340,452}, "local_rf", "on"}}) --Débloqué GEA.add(condition , 30, "Interrupteur Débloqué RF & LOCAL",{ {"Protection", 340, "local_rf", "off"}}) GEA.add(condition , 30, "Interrupteur Débloqué RF & LOCAL",{ {"Protection", {340,452}, "local_rf", "off"}}) -- Pour LOCAL uniquement --Bloqué GEA.add(condition , 30, "Interrupteur Bloqué LOCAL",{ {"Protection", 340, "local", "on"}}) GEA.add(condition , 30, "Interrupteur Bloqué LOCAL",{ {"Protection", {340,452}, "local", "on"}}) --Débloqué GEA.add(condition , 30, "Interrupteur Débloqué LOCAL",{ {"Protection", 340, "local", "off"}}) GEA.add(condition , 30, "Interrupteur Débloqué LOCAL",{ {"Protection", {340,452}, "local", "off"}}) -- Pour RF uniquement --Bloqué GEA.add(condition , 30, "Interrupteur Bloqué RF ",{ {"Protection", 340, "rf", "on"}}) GEA.add(condition , 30, "Interrupteur Bloqué RF ",{ {"Protection", {340,452}, "rf", "on"}}) --Débloqué GEA.add(condition , 30, "Interrupteur Débloqué RF ",{ {"Protection", 340, "rf", "off"}}) GEA.add(condition , 30, "Interrupteur Débloqué RF ",{ {"Protection", {340,452}, "rf", "off"}}) merci a toi @pepite Modifié le 7 novembre 2018 par 971jmd
971jmd Posté(e) le 6 novembre 2018 Signaler Posté(e) le 6 novembre 2018 (modifié) mon premier code avec la fonctionne protection couvre feu de la chambre des enfants a 21h00 ---extinction de la suspension et blocage de l'interupteur GEA.add( true, 30 "Interrupteur CH Bloqué",{ {"Time", "21:00", "21:01"}, {"turnOff", id["SUSPLMAPEENFANT"]}, {"Protection", id["SUSPLMAPEENFANT"], "local", "on"}}) ---Déblocaghe de l'interupteur GEA.add(true, 30, "Interrupteur CH Débloqué",{{"Time", "00:00", "00:01"}, {"Protection", id["SUSPLMAPEENFANT"], "local", "off"}}) Modifié le 7 novembre 2018 par 971jmd
Steven Posté(e) le 7 novembre 2018 Auteur Signaler Posté(e) le 7 novembre 2018 tant mieux si cela fonctionne mais perso, je ne ferais pas un httpRequest mais un api.post() . Mais vu que cela fonctionne, ne touche plus rien.
Messages recommandés