Aller au contenu

Messages recommandés

Posté(e)
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

Posté(e)
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 ...

Posté(e)
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)

Posté(e)

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")

 

Posté(e) (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é par 971jmd
Posté(e)

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
})

 

Posté(e)

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

  • Haha 2
Posté(e)
à 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

 

Posté(e)
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

 

Posté(e)

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

Posté(e)

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
%% globals
LED
--]]

 

local MESSAGE = fibaro:getGlobal("LED")
local http = net.HTTPClient()

Posté(e)

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.

  • Like 1
  • Upvote 1
Posté(e)

super boulot steven comme dab

 

j'ai tester moi avec raquette télégramme, ça fonctionne mai il y des soucie avec le è é ê à......

 

 

Posté(e)

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")})
Posté(e)

voici la requête

GEA.add(true, 0, "", {"httprequest", "https://api.telegram.org/bot99999999:AAGxxxxxxxxxx/sendMessage?chat_id=9999999&text=la tête é è à"})
  

 

Posté(e)

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

 

498195591_Capturedecran.2019-09-26a11_25_36.thumb.png.369083f81d742fd701181aa52560a66e.png

 

2.thumb.png.45cf867b6c46f768faeedde57f8af385.png

 

 

  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,
                },

 

Posté(e)
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

×
×
  • Créer...