Crockett Posté(e) le 7 août 2016 Signaler Partager Posté(e) le 7 août 2016 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, Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 7 août 2016 Signaler Partager Posté(e) le 7 août 2016 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"}}) 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 16 août 2016 Signaler Partager Posté(e) le 16 août 2016 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés