Aller au contenu

Recommended Posts

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.

ok ca marche mais j'ai que le premier mot

Partager ce message


Lien à poster
Partager sur d’autres sites

:93:   incroyable 

 

teste comme ça 

GEA.add(true, 30, "", {"httprequest", "http://192.168.1.188/Notification?&lum=15&type=PAC&txt=notif&flash=&msg=Bonjour et madamme"})

j'ai placée le texte a l'arrière 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

ok top avec ca :

GEA.add(true, 30, "", {"httprequest", "http://192.168.1.188/Notification?msg="..urlencode("raquette télégramme")})

mais il me faut ca apres :

&lum=15&type=PAC&txt=notif&flash=1

comment ?

 


 

Partager ce message


Lien à poster
Partager sur d’autres sites

Il faut mettre des + à la place des espaces

Bonjour+Madame

Au lieu de

Bonjour Madame

Envoyé de mon SM-G935F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
GEA.add(true, 0, "", {"httprequest", "http://192.168.1.188/Notification?&lum=15&type=PAC&txt=notif&flash=&msg="..urlencode("Bonjour et madamme")})

 

Partager ce message


Lien à poster
Partager sur d’autres sites

GEA.add(true, 30, "", {"httprequest", "http://192.168.1.188/Notification?msg="..urlencode("raquette télégramme").. "&lum=15&type=PAC&txt=notif&flash=1"})


Envoyé de mon SM-G935F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
à l’instant, Steven a dit :

GEA.add(true, 30, "", {"httprequest", "http://192.168.1.188/Notification?msg="..urlencode("raquette télégramme").. "&lum=15&type=PAC&txt=notif&flash=1"})
GEA.add(true, 30, "", {"httprequest", "http://192.168.1.188/Notification?msg="..urlencode("raquette télégramme").."&lum=15&type=PAC&txt=notif&flash=1"})


Envoyé de mon SM-G935F en utilisant Tapatalk

top top top 

merci a vous deux !!!!

grand prince !

Partager ce message


Lien à poster
Partager sur d’autres sites

Par contre je préfère prévenir. Le script httprequest est une pure ébauche que j'ai commencé il y a longtemps.

Le GET fonctionne bien mais le POST et le PUT n'ont jamais été testé.

Dans ton cas, tu utilises le GET donc pas de soucis

Envoyé de mon SM-G935F en utilisant Tapatalk

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
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 1GEA.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 1GEA.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")) thenlocal days = fibaro:getValue(id, "ui.lblJours.value")                       days = days:lower()                       selected = tools.split(days, " ")for i = 1, #selected dofor j = 1, #GEA.trad.week_short doif (GEA.trad.week_short[j] == selected[i]) then if (GEA.traduction.en.week[j]:lower() == os.date("%A"):lower()) thenreturn trueendendendendendreturn falseend,},       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")) thenlocal days = fibaro:getValue(id, "ui.lblJours.value")                       days = days:lower()                       selected = tools.split(days, " ")for i = 1, #selected dofor j = 1, #GEA.trad.week_short doif (GEA.trad.week_short[j] == selected[i]) then if (GEA.traduction.en.week[j]:lower() == os.date("%A"):lower()) thenreturn trueendendendendendreturn falseend,},

 

Je regarderais ça dès que j'aurais accès à un ordinateur.

Envoyé de mon SM-G935F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

ok merci 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à vous,

J'aurai besoin de votre aide et conseils....

 

J'essaie ceci:

local EclHall_Auto = {"Global","EclAutoHall","Automatique"}
	local ExtinctHallH = GEA.add(true, 3*60, "", {{"TurnOff",id["ECL_HALL_H"]}, {"NotStart"}})-- OFF
  		GEA.add({{"Value", id["ECL_HALL_H"], 50}, EclHall_Auto}, 30, "", {"RestartTask", ExtinctHallH})
  		GEA.add({{id["MVT_HALL_H"]}, {"Value-", id["LUX_HALL_H"], 10}, EclHall_Auto}, -1, "", {{"Value", id["ECL_HALL_H"], 50}, {"RestartTask", ExtinctHallH}})

le OFF fonctionne MAIS après ~ 4min20 (sur + essais) :mellow:, une idée....

Merci à vous

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Ben ca marche, ca reste allumé 1 '20" de plus  mais ca éteint :-)

 

Essaie cela sans certitude

local ExtinctHallH = GEA.add(id["ECL_HALL_H"], 3*60, "", {{"TurnOff",id["ECL_HALL_H"]}, {"NotStart"}})-- OFF

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Imaginons que GEA tourne toutes les 30 secondes en partant de 00h00:00

 

00h00:00 1er tour de GEA --- rien à faire

00h00:01 :  Ta 3ème ligne va allumer la lumière sur détection ... il y aura donc 29 secondes avant le prochain tour.

00h00:30 :  Ne va rien faire car la lampe est allumée depuis 29s et non pas 30 -- cf ta 2ème ligne

00h01:00 :  La lampe est allumée depuis plus de 30s GEA va redémarrer le compteur de 3*60 --> cf ta 2ème ligne

00h04:30 :  GEA va éteindre la lampe.

 

Ca c'est le pire scénario car ton détecteur déclenche l'allumage JUSTE après le passage de GEA. Mais si dans ton cas il se déclenche plus ou moins 10 secondes après, tu auras donc bien 4mn et 20s.

 

Tu peux déjà gagner quelques secondes en mettant 0 à la place de 30 sur ta 2ème ligne afin que GEA n'attende pas que ta lampe soit allumée plus de 30s.

 

Voici donc l'explication de ce mystère.

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci à vous 2 pour vos conseils et l'explications du mystère :60:

Vais mettre ça en pratique...

 

Remplacer GEA.add(true,  par  GEA.add(id["ECL_HALL_H"], n'a rein changé

Remplacer le 30 par 0, ok ça fonctionne (-30 sec)

Modifié par Ghoosti
Re après test

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai pas osé expliquer :-)

Mea culpa de flemingite

 

Envoyé de mon BND-L21 en utilisant Tapatalk

 

 

 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

@pepite

J'ai vu passer ceci dans un autre poste et cela m’intéresse mais j'ai un message d'erreur suivant 

image.png.a893cda9dbbb4bd639c672feeb862824.png

j'ai bien essayé de modifier certaines {} mais sans succès, helpppppp :huh:

voici la ligne 358

GEA.add({"Time", "05:40"}, 30, "", {{"TurnOn", id["ECL_HALL_H"]}, {"Sleep", 1*60, {"TurnOff", id["ECL_HALL_H"]}}, {"Sleep", 2*60, {"TurnOn", id["ECL_HALL_H"]}}, {"Sleep", 3*60, {"TurnOff", id["ECL_HALL_H"]}})

 --GEA.add({"Time", "14:55"}, 30, "", {{"ACTION1"}, {"Sleep", 3*60, {"ACTION2}}, {"Sleep", 3*60, {"ACTION3}}, {"Sleep", 3*60, {"ACTION4}})

Merci

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as du faire un mauvais copier coller, si tu regarde bien au niveau du deuxième sleep tu ferme la 1er accolade du coup tu ferme l'action et t'es sleep suivant ne compte pas. Mais ton code dans notepad++ et passe sur chaque accolade pour voir pour elle se ferme ça te permettra de détecter ce genre de problème.

Envoyé de mon Nexus 5X en utilisant Tapatalk

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Ghoosti,

 

@ADN182 a raison, il te manque bien une accolade, qui est bien spécifié dans le message d'erreur FIbaro..pour une fois ;-)

 

Voilà le code corrigé, écrit comme cela ca permet de voir où on s'est trompé quand il y a plusieurs actions.

 

GEA.add( {"Time", "05:40"}, 30, "", {
     {"TurnOn", id["ECL_HALL_H"]},
     {"Sleep", 1*60, {"TurnOff", id["ECL_HALL_H"]} },
     {"Sleep", 2*60, {"TurnOn", id["ECL_HALL_H"]} },
     {"Sleep", 3*60, {"TurnOff", id["ECL_HALL_H"]} }
     })

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok, un grand merci à vous 2

@pepite oui bien plus facile comme tu l'as présenté, j'ai encore appris qq chose.... :yes:

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello, 

 

J'ai une question comment détecter avec GEA qu'un module RGB est allumé ou éteint ?

 

Sachant que un getvalue retourne 0 quand un program et lancé mais bien une valeur quand il ne s'agit pas d'un program et 0 quand il est éteint.

 

Merci d'avance.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @ADN182

 

Je ferais comme ceci :

 

Hors programme lancé : tu peux récupérer l'état du module RGB

GEA.add(id["RGB"], 30, "Je suis allumé", {"ACTIONS"})

 

Et quand un programme est lancé

GEA.add( {"Program", id["RGB"]}, 30, "Programme en cours : {Result}", {ACTIONS} ) 

 

En combinant les 2 tu dois pouvoir donc savoir s'il est allumé ou non avec

 

GEA.add({"Or", id["RGB"], {"Program", id["RGB"]}}, 30, "RGB peut-etre allumé ;-) mais non testé je n'en ai pas", {"ACTIONS"})

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Pepite, du coup si je cherche à savoir si il sont éteins plutôt je rajoute un {"Inverse"} comme cela ? 

GEA.add({"Or", id["RGB"], {"Program", id["RGB"]}}, 30, "RGB peut-etre allumé ;-) mais non testé je n'en ai pas", {{"Inverse"},{"ACTIONS"}})

 

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

j'ai tester 

 

  GEA.add(354, 30, "RGB on")
  
  GEA.add({"Or", 354, {"Program", 354}}, 30, "RGB OFF ", {{"Inverse"}})

et ça fonctionne 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×