CharlesO Posté(e) le 25 septembre 2019 Signaler Posté(e) le 25 septembre 2019 il y a 31 minutes, 971jmd a dit : salut est tu sur de ta requête http teste la dans un explorateur http://192.168.1.188/Notification?msg=bonjour et salut&lum=15&type=PAC&txt=notif&flash=1 mache top
CharlesO Posté(e) le 25 septembre 2019 Signaler Posté(e) le 25 septembre 2019 il y a 16 minutes, 971jmd a dit : j'ai une autre scène a tester plus musclé --[[ %% properties %% globals --]] local debug = true; local url = "http://192.168.1.188/Notification?&lum=15&type=PAC&txt=notif&flash=1"&msg=" local function log(str) if debug then fibaro:debug(str); end; end local function errorlog(str) fibaro:debug("<font color='red'>"..str.."</font>"); end --Empêche la scène de fonctionner à nouveau if (tonumber(fibaro:getGlobalValue("SMARTLED")) == 0) then fibaro:abort(); end local selfhttp = net.HTTPClient({timeout=2000}) local msge = fibaro:getGlobalValue("SMARTLED") log(msge); url = url .. msge selfhttp:request(url, { options={ headers = selfhttp.controlHeaders, data = requestBody, method = 'GET', timeout = 5000 }, success = function(status) local result = json.decode(status.data); if result.ok == true then log("successful"); else errorlog("failed"); log(status.data); end end, error = function(error) errorlog("ERROR") log(error) end }) --Remet le variable a 0 fibaro:setGlobal("SMARTLED", "0") ok changer ...
CharlesO Posté(e) le 25 septembre 2019 Signaler Posté(e) le 25 septembre 2019 il y a 9 minutes, 971jmd a dit : dans GEA teste simple GEA.add(true, 30, "", {{"Global", "SMARTLED", "bonjour et bienvenue"}}) ne marche pas du tout
971jmd Posté(e) le 25 septembre 2019 Signaler Posté(e) le 25 septembre 2019 la variable est bien a 0 verifi dans le gestionnaire des variables
971jmd Posté(e) le 25 septembre 2019 Signaler Posté(e) le 25 septembre 2019 rajoute das l'entête de la scène SMARTLED sous globas --[[ %% properties %% globals SMARTLED --]]
CharlesO Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 Il y a 18 heures, 971jmd a dit : rajoute das l'entête de la scène SMARTLED sous globas --[[ %% properties %% globals SMARTLED --]] Salut et merci Résultats : GEA ce mais en route , la command aussi , la variable passe de 0 a bonjour (je ne voie pas la suite du message) mais plus de message sur les led (soit la 2eme scene na pas recu l ordre soit elle ne marche plus du au dernier changement meme si je fais play sur elle alors nada)
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 salut pas de souci 1- la scène suivante, copie la et enregistre 2- Dans GEA : colle le code suivant et enregistre GEA.add(true, 0 , "", {{"Global", "SMARTLED", "bonjour Démarage GEA"}}) et dit moi ce qui se passe --[[ %% properties %% globals SMARTLED --]] local debug = true; local url = "http://192.168.1.188/Notification?&lum=15&type=PAC&txt=notif&flash=1"&msg=" local function log(str) if debug then fibaro:debug(str); end; end local function errorlog(str) fibaro:debug("<font color='red'>"..str.."</font>"); end --Empêche la scène de fonctionner à nouveau if (tonumber(fibaro:getGlobalValue("SMARTLED")) == 0) then fibaro:abort(); end local selfhttp = net.HTTPClient({timeout=2000}) local msge = fibaro:getGlobalValue("SMARTLED") log(msge); url = url .. msge selfhttp:request(url, { options={ headers = selfhttp.controlHeaders, data = requestBody, method = 'GET', timeout = 5000 }, success = function(status) local result = json.decode(status.data); if result.ok == true then log("successful"); else errorlog("failed"); log(status.data); end end, error = function(error) errorlog("ERROR") log(error) end }) --Remet le variable a 0 fibaro:setGlobal("SMARTLED", "0")
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 (modifié) et si ça ne fonctionne pas essaye avec la scène suivante 1- la scène suivante, copie la et enregistre 2- Dans GEA : colle le code suivant et enregistre GEA.add(true, 0 , "", {{"Global", "SMARTLED", "bonjour Démarage GEA"}}) --[[ %% properties %% globals SMARTLED --]] local times = os.date("%H:%M") fibaro:debug("HEURE>>>: " ..times) local timestamp = os.date("%Y%m%d") fibaro:debug("DATE>>>: " ..timestamp) local MESSAGE = fibaro:getGlobalValue("SMARTLED") local http = net.HTTPClient() http:request("http://192.168.1.188/Notification?msg="..MESSAGE.."&lum=15&type=PAC&txt=notif&flash=1", {options = {method = 'GET'} success = function(response) fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end }) --Remet le variable a 0 fibaro:setGlobal("SMARTLED", "0") Modifié le 26 septembre 2019 par 971jmd
CharlesO Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 non ni la 1er ni la 2eme ne marche
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 (modifié) rien ne se passe, aucun réaction Modifié le 26 septembre 2019 par 971jmd
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 tu ma dit que la requête suivante fonctionne nikel http://192.168.1.188/Notification?msg=bonjour et salut&lum=15&type=PAC&txt=notif&flash=1 si on n'oublie les global variable et et gea alors teste la scene suivante --[[ %% properties %% globals --]] local http = net.HTTPClient() http:request("http://192.168.1.188/Notification?msg=Bonjour et madamme&lum=15&type=PAC&txt=notif&flash=1", {options = {method = 'GET'} success = function(response) fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end })
Steven Posté(e) le 26 septembre 2019 Auteur Signaler Posté(e) le 26 septembre 2019 Je veux pas vous déranger mais cela n'a pas grand chose à voir avec GEA ou je me trompe ? Envoyé de mon SM-G935F en utilisant Tapatalk 2
CharlesO Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 à l’instant, Steven a dit : Je veux pas vous déranger mais cela n'a pas grand chose à voir avec GEA ou je me trompe ? Envoyé de mon SM-G935F en utilisant Tapatalk oui et peut etre non si tu veux je peux continuer en priver et maximum copier le code quand on trouvera la solution
CharlesO Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 il y a 11 minutes, 971jmd a dit : tu ma dit que la requête suivante fonctionne nikel http://192.168.1.188/Notification?msg=bonjour et salut&lum=15&type=PAC&txt=notif&flash=1 si on n'oublie les global variable et et gea alors teste la scene suivante --[[ %% properties %% globals --]] local http = net.HTTPClient() http:request("http://192.168.1.188/Notification?msg=Bonjour et madamme&lum=15&type=PAC&txt=notif&flash=1", {options = {method = 'GET'} success = function(response) fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end }) http://192.168.1.188/Notification?msg=bonjour%20et%20salut&lum=15&type=PAC&txt=notif&flash=1 Marche tres bien gea change toujour la variable mais toujour pas dans le led meme a la main
CharlesO Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 j'ai remis ca : --[[ %% properties %% globals SMARTLED --]] local MESSAGE = fibaro:getGlobal("SMARTLED") local http = net.HTTPClient() if MESSAGE ~= "" then http:request("http://192.168.1.188/Notification?msg="..MESSAGE.."&lum=15&type=PAC&txt=notif&flash=1", {options = {method = 'GET'}, success = function(response) fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end }) end et ca marche avec ca en manuel play pas a partire de GEA
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 Je vois une seul chose à faire suprime ta variable SMARTLED et crée une nouvelle :LED Et dans GEA GEA.add(true, 0 , "", {{"Global", "LED", "bonjour Démarage GEA"}}) N’oublie pas dans la scène de modifier le nom de la variable --[[%% properties%% globalsLED--]] local MESSAGE = fibaro:getGlobal("LED")local http = net.HTTPClient()
Steven Posté(e) le 26 septembre 2019 Auteur Signaler Posté(e) le 26 septembre 2019 Bon allez, je me lance : Tu crées un scène qui DOIT s'appeler httprequest cette scène est un plugin à GEA 6.x (Il est souhaitable de vérifier que la variable global GEA_Plugins existe bien) : --[[ %% properties %% events %% globals --]] -- ========================================================== -- -- Ligne a ajouter pour rendre votre scénarion compatible GEA -- ========================================================== -- if not tools then tools={version="2.00",addstyle="",isdebug=false,log=function(a,b,c)a=tools.tostring(a)for d,e in string.gmatch(a,"(#spaces(%d+)#)")do local f=""for g=1,e do f=f.."."end;a=string.gsub(a,d,"<span style=\"color:black;"..tools.addstyle.."\">"..f.."</span>")end;if tools.isdebug or c then fibaro:debug("<span style=\"color:"..(b or"white")..";"..tools.addstyle.."\">"..a.."</span>")end end,error=function(a,b)tools.log(a,b or"red",true)end,warning=function(a,b)tools.log(a,b or"orange",true)end,info=function(a,b)tools.log(a,b or"white",true)end,debug=function(a,b)tools.log(a,b or"gray",false)end,tostring=function(h)if type(h)=="boolean"then if h then return"true"else return"false"end elseif type(h)=="table"then if json then return json.encode(h)else return"table found"end else return tostring(h)end end,split=function(i,j)local j,k=j or":",{}local l=string.format("([^%s]+)",j)i:gsub(l,function(m)k[#k+1]=m end)return k end,trim=function(n)return n:gsub("^%s*(.-)%s*$","%1")end,deep_print=function(o)for g,p in pairs(o)do if type(p)=="table"then deep_print(p)else print(g,p)end end end,iif=function(q,r,s)if q then return r else return s end end,cut=function(t,u)u=u or 10;if u<t:len()then return t:sub(1,u-3).."..."end;return t end,isNumber=function(v)if type(v)=="number"then return true end;if type(v)=="string"then return type(tonumber(v))=="number"end;return false end,getStringTime=function(w)if w then return os.date("%H:%M:%S")end;return os.date("%H:%M")end,toTime=function(x)local y,z=string.match(x,"(%d+):(%d+)")local A=os.date("*t")local B=os.time{year=A.year,month=A.month,day=A.day,hour=y,min=z,sec=0}if B<os.time()then B=os.time{year=A.year,month=A.month,day=A.day+1,hour=y,min=z,sec=0}end;return B end,getStringDate=function()return os.date("%d/%m/%Y")end,isNil=function(C)return type(C)=="nil"end,isNotNil=function(C)return not tools.isNil(C)end}end if not GEAPlugin then GEAPlugin={}GEAPlugin.version=6.00;local a=fibaro:args()if a then for b,c in ipairs(a)do for d,e in pairs(c)do GEAPlugin[d]=e end end else fibaro:debug("nothing to do")fibaro:abort()end;GEAPlugin.retour=function(f)if GEAPlugin.geamode=="action"then return end;fibaro:startScene(GEAPlugin.geaid,{{gealine=GEAPlugin.gealine},{result=f}})end end -- ========================================================== -- -- Votre code ici -- les paramètres sont utilisable ainsi -- Exemple : {"http", "url", "method", "content"} -- local url = GEAPlugin.param1 -- local method = GEAPlugin.param2 -- ... -- ========================================================== -- -- Code du scenario -- tools.isdebug = true local httpClient = net.HTTPClient() local http = { getHeaders = function(self, user, pwd, content) local headers = {} local c = content or 'application/json' headers['Content-Type'] = c if (user and user ~= "") then headers["Authorization"] = 'Basic '..user..":"..password end if (pwd) and pwd ~= ""then headers["Authorization"] = 'Basic '..password end return headers end, manageReturn = function(self, resp) local response = "OK" print("resp : ", json.encode(resp)) if (type(resp) == "table" and resp.data) then response = tools.trim(json.encode(resp.data)) else response = resp.data end print(response) --GEAPlugin.retour(response) end, getOptions = function(self, m, u, p, c, d) local opt = { method = m, success = function(response) self:manageReturn(response) end, error = function(err) tools.error(' error = ' .. err) end, --GEAPlugin.retour('error = ' .. err) end, ["options"] = {} } local h = self:getHeaders(u, p, c) if (h) then opt.options["headers"] = h end if (d) then opt.options["data"] = d end return opt end, get = function(self, url, user, pwd) print(url, user, pwd) httpClient:request(url, { success = function(response) self:manageReturn(response) end, error = function(err) tools.error(' error = ' .. err) end, options = { method = 'GET' }, }) end, post = function(self, url, user, pwd, content, datas) httpClient:request(url, self:getOptions('POST', user, pwd, content, datas)) end, call = function(self, method, url, user, pwd, content, datas) if (method == "GET") then print("GET") self:get(url, user, pwd) end if (method == "POST") then self:post(url, user, pwd, content, datas) end end, } --GEAPlugin = {} local url = GEAPlugin.param1 or "http://www.perdu.com" local method = GEAPlugin.param2 or "GET" local content = GEAPlugin.param3 local datas = GEAPlugin.param4 local user = GEAPlugin.param5 local pwd = GEAPlugin.param6 http:call(method, url, user, pw , content, datas) tools.debug(method .. " : " .. url) Dans ton GEA tu ajoute simplement cela : GEA.add(true, 30, "", {"httprequest", "http://192.168.1.188/Notification?msg=Bonjour et madamme&lum=15&type=PAC&txt=notif&flash=1"}) Bien évidement, tu modifieras la conditions (true) par celle/ceux que tu as besoin. 1 1
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 super boulot steven comme dab j'ai tester moi avec raquette télégramme, ça fonctionne mai il y des soucie avec le è é ê à......
Steven Posté(e) le 26 septembre 2019 Auteur Signaler Posté(e) le 26 septembre 2019 Dans ce cas, tu devrais essayer de faire ainsi GEA.add(true, 30, "", {"httprequest", "http://192.168.1.188/Notification?msg="..urlencode("raquette télégramme")})
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 voici la requête GEA.add(true, 0, "", {"httprequest", "https://api.telegram.org/bot99999999:AAGxxxxxxxxxx/sendMessage?chat_id=9999999&text=la tête é è à"})
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 A ok je vient de comprendre ..urlencode ça fonctionne nikel avec le ..urlencode de GEA merci
Steven Posté(e) le 26 septembre 2019 Auteur Signaler Posté(e) le 26 septembre 2019 Ce n'est pas l'urlencode de GEA. Cette fonction existe dans le LUA de la HC2. 1
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 ok merci pour cette précision
971jmd Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 Steven j'ai développée une version de GEA alarme plus complète qui tourne nikel depuis 6mois le SP (super programmateur) dispose de 6 programmes et chaque programme dispose d'une heure de DÉBUT et une Heure de FIN je souhaite avoir un avis sur une éventuel possibilité d’intégrée le SP dans la future GEA exemple du programme N1 local P1 = "Blocage inter CH Enfant" local P2 = "Lampe du jardin" local P3 = "VL de la Cuisine O/F" local P4 = "" local P5 = "" local P6 = "" --P1 ----Mise a jour de la label du programme 1 selon votre choix GEA.add(true, 0, "", {{"Label", id["GEA_ALARM_A"], "v1", P1} }) GEA.add( {"Label", id["GEA_ALARM_A"], "nprog", "P1"}, -1, "", {{"Label", id["GEA_ALARM_A"], "information", P1}}) ----Hologe n°1 programme 1 GEA.add({{"Alarm", id["GEA_ALARM_A"]},{"Label", id["GEA_ALARM_A"], "ActifDesac01", "Activé"}}, 0, "Interupteur bloqué" , {{"Label", 337, "Label2", "Bloquée"}}) ----Hologe n°2 programme 1 GEA.add({{"Alarm2", id["GEA_ALARM_A"]}, {"Label", id["GEA_ALARM_A"], "ActifDesac01", "Activé"}}, 0, "Interupteur débloqué", {{"Label", 337, "Label2", "Débloque"}}) et du cotée du code GEA -----Programe 1 alarm = {name = "Alarm", optimize = true, control=function(id) return GEA.options.number.control(id) end, getValue=function(id) if (os.date("%H:%M", GEA.runAt) == fibaro:getValue(id, "ui.lblAlarme.value")) then local days = fibaro:getValue(id, "ui.lblJours.value") days = days:lower() selected = tools.split(days, " ") for i = 1, #selected do for j = 1, #GEA.trad.week_short do if (GEA.trad.week_short[j] == selected[i]) then if (GEA.traduction.en.week[j]:lower() == os.date("%A"):lower()) then return true end end end end end return false end, }, alarm2 = {name = "Alarm2", optimize = true, control=function(id) return GEA.options.number.control(id) end, getValue=function(id) if (os.date("%H:%M", GEA.runAt) == fibaro:getValue(id, "ui.lblAlarme2.value")) then local days = fibaro:getValue(id, "ui.lblJours.value") days = days:lower() selected = tools.split(days, " ") for i = 1, #selected do for j = 1, #GEA.trad.week_short do if (GEA.trad.week_short[j] == selected[i]) then if (GEA.traduction.en.week[j]:lower() == os.date("%A"):lower()) then return true end end end end end return false end, },
CharlesO Posté(e) le 26 septembre 2019 Signaler Posté(e) le 26 septembre 2019 Il y a 5 heures, Steven a dit : Bon allez, je me lance : Tu crées un scène qui DOIT s'appeler httprequest cette scène est un plugin à GEA 6.x (Il est souhaitable de vérifier que la variable global GEA_Plugins existe bien) : --[[ %% properties %% events %% globals --]] -- ========================================================== -- -- Ligne a ajouter pour rendre votre scénarion compatible GEA -- ========================================================== -- if not tools then tools={version="2.00",addstyle="",isdebug=false,log=function(a,b,c)a=tools.tostring(a)for d,e in string.gmatch(a,"(#spaces(%d+)#)")do local f=""for g=1,e do f=f.."."end;a=string.gsub(a,d,"<span style=\"color:black;"..tools.addstyle.."\">"..f.."</span>")end;if tools.isdebug or c then fibaro:debug("<span style=\"color:"..(b or"white")..";"..tools.addstyle.."\">"..a.."</span>")end end,error=function(a,b)tools.log(a,b or"red",true)end,warning=function(a,b)tools.log(a,b or"orange",true)end,info=function(a,b)tools.log(a,b or"white",true)end,debug=function(a,b)tools.log(a,b or"gray",false)end,tostring=function(h)if type(h)=="boolean"then if h then return"true"else return"false"end elseif type(h)=="table"then if json then return json.encode(h)else return"table found"end else return tostring(h)end end,split=function(i,j)local j,k=j or":",{}local l=string.format("([^%s]+)",j)i:gsub(l,function(m)k[#k+1]=m end)return k end,trim=function(n)return n:gsub("^%s*(.-)%s*$","%1")end,deep_print=function(o)for g,p in pairs(o)do if type(p)=="table"then deep_print(p)else print(g,p)end end end,iif=function(q,r,s)if q then return r else return s end end,cut=function(t,u)u=u or 10;if u<t:len()then return t:sub(1,u-3).."..."end;return t end,isNumber=function(v)if type(v)=="number"then return true end;if type(v)=="string"then return type(tonumber(v))=="number"end;return false end,getStringTime=function(w)if w then return os.date("%H:%M:%S")end;return os.date("%H:%M")end,toTime=function(x)local y,z=string.match(x,"(%d+):(%d+)")local A=os.date("*t")local B=os.time{year=A.year,month=A.month,day=A.day,hour=y,min=z,sec=0}if B<os.time()then B=os.time{year=A.year,month=A.month,day=A.day+1,hour=y,min=z,sec=0}end;return B end,getStringDate=function()return os.date("%d/%m/%Y")end,isNil=function(C)return type(C)=="nil"end,isNotNil=function(C)return not tools.isNil(C)end}end if not GEAPlugin then GEAPlugin={}GEAPlugin.version=6.00;local a=fibaro:args()if a then for b,c in ipairs(a)do for d,e in pairs(c)do GEAPlugin[d]=e end end else fibaro:debug("nothing to do")fibaro:abort()end;GEAPlugin.retour=function(f)if GEAPlugin.geamode=="action"then return end;fibaro:startScene(GEAPlugin.geaid,{{gealine=GEAPlugin.gealine},{result=f}})end end -- ========================================================== -- -- Votre code ici -- les paramètres sont utilisable ainsi -- Exemple : {"http", "url", "method", "content"} -- local url = GEAPlugin.param1 -- local method = GEAPlugin.param2 -- ... -- ========================================================== -- -- Code du scenario -- tools.isdebug = true local httpClient = net.HTTPClient() local http = { getHeaders = function(self, user, pwd, content) local headers = {} local c = content or 'application/json' headers['Content-Type'] = c if (user and user ~= "") then headers["Authorization"] = 'Basic '..user..":"..password end if (pwd) and pwd ~= ""then headers["Authorization"] = 'Basic '..password end return headers end, manageReturn = function(self, resp) local response = "OK" print("resp : ", json.encode(resp)) if (type(resp) == "table" and resp.data) then response = tools.trim(json.encode(resp.data)) else response = resp.data end print(response) --GEAPlugin.retour(response) end, getOptions = function(self, m, u, p, c, d) local opt = { method = m, success = function(response) self:manageReturn(response) end, error = function(err) tools.error(' error = ' .. err) end, --GEAPlugin.retour('error = ' .. err) end, ["options"] = {} } local h = self:getHeaders(u, p, c) if (h) then opt.options["headers"] = h end if (d) then opt.options["data"] = d end return opt end, get = function(self, url, user, pwd) print(url, user, pwd) httpClient:request(url, { success = function(response) self:manageReturn(response) end, error = function(err) tools.error(' error = ' .. err) end, options = { method = 'GET' }, }) end, post = function(self, url, user, pwd, content, datas) httpClient:request(url, self:getOptions('POST', user, pwd, content, datas)) end, call = function(self, method, url, user, pwd, content, datas) if (method == "GET") then print("GET") self:get(url, user, pwd) end if (method == "POST") then self:post(url, user, pwd, content, datas) end end, } --GEAPlugin = {} local url = GEAPlugin.param1 or "http://www.perdu.com" local method = GEAPlugin.param2 or "GET" local content = GEAPlugin.param3 local datas = GEAPlugin.param4 local user = GEAPlugin.param5 local pwd = GEAPlugin.param6 http:call(method, url, user, pw , content, datas) tools.debug(method .. " : " .. url) Dans ton GEA tu ajoute simplement cela : GEA.add(true, 30, "", {"httprequest", "http://192.168.1.188/Notification?msg=Bonjour et madamme&lum=15&type=PAC&txt=notif&flash=1"}) Bien évidement, tu modifieras la conditions (true) par celle/ceux que tu as besoin. merci merci merci mais : GEA debug : [DEBUG] 21:44:35: Option : httprequest n'existe pas
Messages recommandés