Bonjour,
C'est mon premier script en LUA et je rencontre un petit soucis.
Cela me permet d'allumer une lumière via le détecteur de mouvement (si mouvement et si nuit)
Je teste aussi si il y a un appui sur l'interrupteur pour annuler l'extinction via la tempo sur la détection de mouvement.
Mon soucis est que je n'arrive pas ou ne sais pas détecter si je fais un allumage manuel depuis l'interface du Home Center
--[[
%% properties
5 value
40 sceneActivation
%% events
%% globals
--]]
-- Initialisation des variables --
local Detecteur = 5;
local DetecteurLux = 7;
local Inter = 40;
local InterNumScene = '';
local startSource = fibaro:getSourceTrigger();
fibaro:debug('Variable BureauLumManuelle : '..fibaro:getGlobalValue("BureauLumManuelle"));
-- teste si on a appuyé sur l'interrupteur --
InterNumScene = tonumber(fibaro:getValue(Inter, "sceneActivation"));
if (tonumber(startSource['deviceID']) == Inter) and ( InterNumScene > 0 ) then
fibaro:sleep(500);
-- Teste l'intervalle de temps entre les clics -- (3 clics servent à désactiver la détection automatique)
if (os.time() -2 < tonumber(fibaro:getGlobalValue("BureauLumAutoTime")) and InterNumScene == 16) then
fibaro:setGlobal("BureauLumNbClic", fibaro:getGlobalValue("BureauLumNbClic")+1);
fibaro:setGlobal("BureauLumAutoTime", os.time());
else
fibaro:setGlobal("BureauLumNbClic", 1);
fibaro:setGlobal("BureauLumAutoTime", os.time());
end
-- Teste si suite à l'appui sur l'interrupteur on a allumer ou éteint (sert à désactiver l'extinction par le détecteur)
if ( ( tonumber(fibaro:getValue(40, "value")) > 0 ) or startSource["type"] == "other") then
fibaro:setGlobal("BureauLumManuelle", "Oui");
else
fibaro:setGlobal("BureauLumManuelle", "Non");
end
-- Si pas d'appui sur l'interrupteur et NbClic < 3 (détection désactivée) --
elseif (fibaro:getGlobalValue("BureauLumManuelle") == 'Non' and tonumber(fibaro:getGlobalValue("BureauLumNbClic")) <3) then
-- Activation via le détecteur --
if ( (tonumber(fibaro:getValue(Detecteur, "value")) > 0 or startSource["type"] == "other") and tonumber(fibaro:getValue(DetecteurLux, "value")) < 50) then
fibaro:call(Inter, "setValue", "20");
-- désactivation via le détecteur --
elseif (( tonumber(fibaro:getValue(Detecteur, "value")) == 0 )) then
setTimeout(function()
local TempsEcouler = false;
local tempDeviceState0, HeureModifStatut = fibaro:get(Detecteur, "value");
if (( tonumber(fibaro:getValue(Detecteur, "value")) == 0 ) and (os.time() - HeureModifStatut) >= 1) then
TempsEcouler = true;
end
local startSource = fibaro:getSourceTrigger();
if ((TempsEcouler == true or startSource["type"] == "other" and fibaro:getGlobalValue("BureauLumManuelle") == 'Non')) then
fibaro:call(Inter, "turnOff");
end
end, 1000)
end
end
Merci,