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

2019-02-13T09:56:24+01:00 8 lutego, 2019|Categories: Automatyka Domowa|

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

Facebook - komentarze