Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- %% properties
- 177 value
- %% events
- %% globals
- --]]
- -- notwendige IDs
- local sensorID = {9, 35, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146} -- IDs der Sensoren
- local phoneID = {25} -- IDs der Handys
- local doorlockID = {} -- IDs der doorlocks
- -- zusätzliche Optionen
- local own_action = true -- eigene Aktionen ausführen; Funktionen müssen befüllt werden
- local disarmed_bug = false -- Firmware Bug umgehen
- -- eigene Funktionen
- function actionsafterArmed()
- fibaro:debug('Führe eigene Funktionen nach dem Schärfen aus')
- fibaro:call(25, 'sendPush', "ALARMANLAGE aktiv!")
- end
- function actionsafterDisarmed()
- fibaro:debug('Führe eigene Funktionen nach dem Entschärfen aus')
- end
- -- AB HIER NICHTS MEHR ÄNDERN
- local trigger = fibaro:getSourceTrigger()
- local rfid_value_status = ''
- Debug = function ( color, message )
- fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
- end
- function armedcheckSensorID(array)
- for j=1, #sensorID do
- if sensorID[j] ~= nil then
- if (tonumber(fibaro:getValue(sensorID[j], 'armed')) ~= 0) then
- return false
- end
- end
- end
- return true
- end
- -- Funktion für die Öffnung der Tür
- function openDoor()
- if (doorlockID[0] ~= nil) then
- fibaro:debug('Türschlösser werden geöffnet.')
- for j=0, #doorlockID do
- if doorlockID[j] ~= nil then
- fibaro:call(doorlockID[j],'unsecure')
- end
- end
- end
- end
- -- Funktion zum Versenden der Push
- function sendPush(text)
- if (phoneID[1] ~= nil) then
- for i=1, #phoneID do
- if phoneID[i] ~= nil then
- fibaro:debug('Versende Push an ID ' ..phoneID[i])
- fibaro:call(phoneID[i],'sendPush', text, 'alarm')
- end
- end
- end
- end
- function setArmedStatus(set_status)
- if set_status then
- fibaro:debug('Sensoren werden scharf geschaltet.')
- for k=1, #sensorID do
- if sensorID[k] ~= nil then
- if (tonumber(fibaro:getValue(sensorID[k], 'value')) == 0) then
- fibaro:call(sensorID[k], 'setArmed', '1')
- else
- local sensorname = fibaro:getName(sensorID[k])
- local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[k])
- fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher. Sende Push.')
- sendPush('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
- end
- end
- end
- else
- fibaro:debug('Sensoren werden entschärft.')
- for j=1, #sensorID do
- if sensorID[j] ~= nil then
- if (disarmed_bug) then
- setArmed(sensorID[j])
- else
- fibaro:call(sensorID[j], 'setArmed', '0')
- end
- end
- end
- end
- end
- function setArmed(deviceId)
- local dev = api.get('/devices/' .. deviceId)
- dev.properties.armed = false
- api.put('/devices/' .. deviceId, dev)
- end
- -- Funktion zum Anlegen einer Globalen Variablen
- function globalVar(var,val)
- local http = net.HTTPClient()
- http:request("http://127.0.0.1:11111/api/globalVariables", {
- options = {
- method = 'POST',
- headers = {},
- data = '{"name":"'..var..'","value":"'..val..'"}',
- timeout = 10000
- },
- success = function(response)
- local result = response.data;
- if response.status == 200 or response.status == 201 then
- fibaro:debug('Status: ' ..response.status.. ' - Variable wurde angelegt')
- else
- fibaro:debug('Error: ' ..response.status.. ' - Zugriff verweigert')
- end
- end,
- error = function(err)
- fibaro:debug('[ERROR] ' .. err)
- end
- })
- end
- if (trigger['type'] == 'property') then
- fibaro:debug('RFID-Szene 3.2 (Official) gestartet.')
- local rfid_ID = tonumber(trigger['deviceID'])
- local rfid_value = tonumber(fibaro:getValue(rfid_ID, 'value'))
- if (rfid_value == 1) then
- rfid_value_status = 'Away'
- Debug('red', 'Status ' ..rfid_value_status.. ' gesetzt.')
- setArmedStatus(true)
- if (fibaro:getGlobal('PresentState') ~= nil) then
- fibaro:debug('Benötigte Variable PresentState erkannt.')
- fibaro:setGlobal('PresentState', 'Away')
- else
- fibaro:debug('Benötigte Variable PresentState NICHT erkannt. Wird erstellt.')
- globalVar('PresentState', 'Away')
- end
- local delay = tonumber(fibaro:getValue(sensorID[1], "armDelay"))
- if (delay ~= 0) then
- fibaro:debug('Arm-Delay erkannt. Arm-Delay: ' ..delay)
- delay = delay + 1
- fibaro:sleep(delay*1000)
- end
- if (not armedcheckSensorID(sensorID)) then
- if (own_action) then
- actionsafterArmed()
- end
- sendPush('ALARMANLAGE aktiv!')
- end
- elseif (rfid_value == 0) then
- rfid_value_status = 'Home'
- Debug('green', 'Status ' ..rfid_value_status.. ' gesetzt.')
- setArmedStatus(false)
- if (fibaro:getGlobal('PresentState') ~= nil) then
- fibaro:debug('Benötigte Variable PresentState erkannt.')
- fibaro:setGlobal('PresentState', 'Home')
- else
- fibaro:debug('Benötigte Variable PresentState NICHT erkannt. Wird erstellt.')
- globalVar('PresentState', 'Home')
- end
- if (own_action) then
- actionsafterDisarmed()
- end
- sendPush('ALARMANLAGE inaktiv!')
- openDoor()
- end
- else
- fibaro:debug('Szene manuell gestartet. Widget-Support deaktiviert.')
- fibaro:debug('Hier werden noch weitere Funktionen folgen.')
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement