Domoticz – skrypt LUA reagujący na odpowiednią kolejność wzbudzania czujki ruchu PIR

//Domoticz – skrypt LUA reagujący na odpowiednią kolejność wzbudzania czujki ruchu PIR

Domoticz – skrypt LUA reagujący na odpowiednią kolejność wzbudzania czujki ruchu PIR

Zadaniem skryptu jest wykonanie działania w momencie, kiedy domownik przemieszcza się z punktu A, przez punkt B, przez punkt C do punktu D w tej konkretnej kolejności.
Powtórzenia wzbudzania czujki są pomijane.

Przykład:
oznaczmy sobie czujkę w salonie jako A, czujka na korytarzu jako B i na schodach jako C. Czujka D to sypialnia.
Jeśli użytkownik wychodzi z salonu, wzbudzi czujkę A, potem 3x czujkę B w korytarzu i czujkę C a następnie dotrze do sypialni (czujka D) to wykona sie określona akcja.

Osobiście używam skryptu na wychwycenie kiedy należy właczyć scenę SPANIE (scena gasi wszystkie światła i urządzenia).




— (C) 2019 https://github.com/marcinprzybysz86
—  script to trigger event after reading movement scenario using PIRs in specific order   www.vsx.pl
 
t1 = os.time()
s = otherdevices_lastupdate[‚PIR5 salon’]
 
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
 
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
 
 
commandArray = {}
local moznagasic
local regextest
 
if (devicechanged[‚PIR5 salon’] == ‚On’) then
    moznagasic = 0
    commandArray[‚Variable:motion_fire’] = „a”
    end
if (devicechanged[‚PIR6 hol’] == ‚On’) then
    temp = uservariables[‚motion_fire’]
    commandArray[‚Variable:motion_fire’] = temp .. „b”
    end
if (devicechanged[‚PIR7 korytarz’] == ‚On’) then
    temp = uservariables[‚motion_fire’]
    commandArray[‚Variable:motion_fire’] = temp .. „c”
    end
if (devicechanged[‚PIR sypialnia’] == ‚On’) then
    temp = uservariables[‚motion_fire’]
    commandArray[‚Variable:motion_fire’] = temp .. „d”
end
 
wartosc = uservariables[‚motion_fire’]
print(„motion_fire: ” .. wartosc)
 
regextest = string.match(wartosc,’a+b+c+d+’)
    if (regextest ~= nil) then
        moznagasic = 1
        print („RUCH Z SALONU DO SYPIALNI. moznagasic = 1”)
    commandArray[‚Variable:motion_fire’] = „moznagasic”
    end
   
 
if moznagasic == 1 and difference > 120 and otherdevices[‚DEKODER NBOX’] == ‚Off’ and otherdevices[‚Czujnik zmierzchu’] == ‚On’ then
    print(„spelniono warunki do wlaczenia sceny spanie: ” .. difference .. ” – ” .. tostring(moznagasic))
    commandArray[‚Scene:SPANIE’]=’On’
    moznagasic = 0
    end
 
 
return commandArray

Skomentuj wpis

komentarzy

By | 2019-02-13T09:56:24+00:00 Luty 8th, 2019|Arduino i Domoticz Automatyka Domowa|0 Comments

About the Author: