Aller au contenu
Crockett

Allumage Manuel Ou Auto Sur Détection

Recommended Posts

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,

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

voici comment je fais avec GEA

-- Hall de Nuit
  -- Lampe SdJ
    -- Extinction automatique de la lampe après 30s.
     local autoOffSdJ = GEA.add ({DeviceID["LUM_HALLNUIT_SDJ"], auth_LumInterieur, pasIncendie}, 31, "", {{"turnOff", DeviceID["LUM_HALLNUIT_SDJ"]}, {"NotStarted"}})
    -- Appuie sur l'interrupteur de la lampe, on stoppe l'extinction automatique.
     GEA.add (DeviceID["LUM_HALLNUIT_SDJ"], -1, "", {{"StopTask", autoOffSdJ}})
    -- Allumage de la lampe sur détection mouvement
     GEA.add ({DeviceID["MVT_HALLNUIT_SDJ"], auth_LumInterieur, estNuit, {"Value", DeviceID["LUM_HALLNUIT_SDJ"], 0}}, -1, "", {{"turnOn", DeviceID["LUM_HALLNUIT_SDJ"]}, {"RestartTask", autoOffSdJ}})
    -- Extinction de la lampe dans tous les cas après 10 min
     GEA.add ({DeviceID["ALARME_ACTIVE"], DeviceID["LUM_HALLNUIT_SDJ"], pasIncendie}, 10*60, "Extinction du Hall de Nuit SdJ, car allumée depuis #duration#. (#date# à#time#)", {{"Inverse"}, {"turnOff", DeviceID["LUM_HALLNUIT_SDJ"]}, {"Email", UserID["Vincent"], "ALERTE - Lumière Hall de Nuit"}})

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Heuu , le triple click est déjà  pris en compte dans sceneActivation 

 

 

Triple Click 15 = S1 25 = S2

 

 

Donc pourquoi calculer si le simple click a été activé 3x ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×