Aller au contenu

Messages recommandés

Posté(e)

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,

 

 

Posté(e)

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
  • 2 semaines après...
Posté(e)

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 ?

×
×
  • Créer...