Polepszyłem scenę, którą udostępniłem jako prezent pod linkiem https://www.zfibarozapanbrat.pl/prezent
Zauważyłem, że zaproponowane przeze mnie rozwiązanie nie działa jak Dimmer'em steruje np. inna scena załączająca/wyłączająca światło (od Motion Sensor) lub gdy sam sterujesz Dimmer'em z aplikacji.
Postanowiłem temu zagadnieniu, a zwłaszcza obsłudze naciskania przycisków ściennych, poświęcić jedną z przyszłych serii filmów... ale teraz każdemu, kto się do mnie zgłosi indywidualnie z chęcią udostępnię kod sceny pod centralę HC3 celem przetestowania !
Wysyłam kod prywatnie celem przetestowania przed opublikowaniem.
Witam mam cos takiego Motion sensor steruje światłem jak jest ruch ale dodatkowo działa przycisk którym można włączyć światło ( jak motion nie wykrył i samo po czasie sie wyłączy ) lub wyłączyć światło wcześniej.
{ conditions = { { id = 133, isTrigger = true, operator = "==", property = "value", type = "device", value = true } }, operator = "all" }
local sensors = {133} local debug = false local delay = 0 function actionsMotion() print('Wykonaj akcje po wykryciu ruchu') fibaro.call(87, "turnOn") end function actionsNoMotion() print('Wykonaj akcje po zakonczeniu ruchów') fibaro.call(87, "turnOff") end function getSensorStatus() for i,n in ipairs(sensors) do if (fibaro.getValue(n, "value")) then return 1; end end return 0; end function getLastBreach() local breach = 0; for i,n in ipairs(sensors) do local nBreach = tonumber(fibaro.getValue(n, "lastBreached")); if(nBreach > breach) then breach = nBreach; end end return breach; end function checkMotion() lastBreached = getLastBreach(); time = os.time(); if (debug) then print("Ostatnio wyzwolone PRZED.: "..(time-lastBreached).." Sek."); end if (getSensorStatus() == 1) then return true; end if ((time-lastBreached)>=delay) then return false; end return true; end local lastBreached = getLastBreach() if (getSensorStatus() == 1) then print('Wykryto ruch w pomieszczeniu - Start licznika czasu') actionsMotion() while (checkMotion()) do fibaro.sleep(5000); end if (debug) then print("Nie wykryto wiecej ruchu."); end actionsNoMotion() end
U mnie wygląda to tak ale z chęcią przetestuje i porównam Pana rozwiązanie.
Pozdrawiam
Rafał