Aller au contenu
flamalex

Allumage Si Detection De Mouv/extinction Si Abs Mouv

Recommended Posts

comment peut on ajouter les "minutes" pour etre plus précis

et

en GEA, qu'est ce que ca donnerait?

 

--[[
%% properties
90 value
%% globals
--]]
local now = tonumber ((os.date("%H")));
local luminosite = tonumber(fibaro:getValue(92, "value"))
local mouvement = tonumber(fibaro:getValue(90, "value"))
local seuilluminosite = 2
local heuredebut = 19
local heurefin = 21
fibaro:debug("Il est "..now)
 -- test si on est dans la fourchette horaire sinon STOP
if (now < heuredebut or now > heurefin)then 
  fibaro:abort();
end
local scenenum = fibaro:countScenes();
 -- test si première instance de la scène. on allume et stop
if (scenenum >= 1 and luminosite < seuilluminosite and mouvement >= 1 ) then
    fibaro:call(88, "turnOn")
    fibaro:abort();
end
 -- ici pour les passages suivants devant le fgms
 -- après 8sec sans mouvement on éteint
setTimeout(function()
 local delayedCheck0 = false;
 local tempDeviceState0, deviceLastModification0 = fibaro:get(90, "value")
 fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0)
 if (mouvement == 0 and (os.time() - deviceLastModification0) >= 9) 
 then delayedCheck0 = true;
      else fibaro:call(88, "turnOn")
  end  
 if ( delayedCheck0 == true ) 
 then fibaro:call(88, "turnOff") 
      end
 end,10000) 

Partager ce message


Lien à poster
Partager sur d’autres sites

ok, avec les minutes ca donne ça

reste a réaliser la mm chose en GEA

 

--[[
%% properties
90 value
%% globals
--]]
local currentDate = os.date("*t");
local currentTime = string.format("%02d", currentDate.hour)..":".. string.format("%02d",currentDate.min);
local luminosite = tonumber(fibaro:getValue(92, "value"))
local mouvement = tonumber(fibaro:getValue(90, "value"))
local seuilluminosite = 2
local heuredebut = 19
local heurefin = 20

fibaro:debug("Il est "..currentTime)
 -- test si on est dans la fourchette horaire sinon STOP
if currentTime < "19:30" or currentTime > "20:50"
  then
  fibaro:abort();
end
local scenenum = fibaro:countScenes();
 -- test si première instance de la scène. on allume et stop
if (scenenum >= 1 and luminosite < seuilluminosite and mouvement >= 1 ) then
    fibaro:call(88, "turnOn")
    fibaro:abort();
end
 -- ici pour les passages suivants devant le fgms
 -- après 8sec sans mouvement on éteint
setTimeout(function()
 local delayedCheck0 = false;
 local tempDeviceState0, deviceLastModification0 = fibaro:get(90, "value")
 fibaro:debug("Temps écoulé "..os.time() - deviceLastModification0)
 if (mouvement == 0 and (os.time() - deviceLastModification0) >= 9) 
 then delayedCheck0 = true;
      else fibaro:call(88, "turnOn")
  end
 if ( delayedCheck0 == true ) 
 then fibaro:call(88, "turnOff") 
      end
 end,10000) 

Partager ce message


Lien à poster
Partager sur d’autres sites

"ma réponse"à  "ma question" 1 an apres, pcq

cela pourrait toujours servir à  d'autre

 

Merci à  Nikko pour son aide

----------------------------------------------------------------------------  
function setEvents() 
local id = {PIR_ESCALIER = 90, LUMINOSITE_ESCALIER= 92,DIM_ESC = 88}

  --ESCALIER ECL

--la lumière s'allume à  1% si detection de MOUV et LUX<5 entre 19h30 et 20h50
GEA.add({id["PIR_ESCALIER"],{"Value-",id["LUMINOSITE_ESCALIER"], 5 }}, -1 , "" , {{"Time","19:30","20:50"},{"Value", id["DIM_ESC"],1}})  
-- On définit une fonction qui au bout de 6 secondes éteint la lumière si PIR escalier Inactif
function test2()
    setTimeout(function()
        if tonumber(fibaro:getValue(id["PIR_ESCALIER"],'value')) == 0 then fibaro:call(id["DIM_ESC"], "turnOff") end
    end, 6000)
end
-- Au déclenchement de 1 -> 0 du PIR (et les autres conditions vraies, on déclenche la fonction test()
GEA.add({id["PIR_ESCALIER"],id["DIM_ESC"]}, -1 , "" , {{"Inverse"},{"Function",function() test2() end }})

---------------------------------------------------------------------------- 
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×