Hallo,
nutze dieses script:
--[[
%% properties
365 value
%% events
%% globals
--]]
-- notwendige IDs
local sensorID = {221,214,228,251,184,237,244,388} -- IDs der Sensoren
local phoneID = {4,202} -- IDs der Handys
local doorlockID = {} -- IDs der doorlocks
-- zusätzliche Optionen
local own_action = false -- 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')
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.1 (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 (armedcheckSensorID(sensorID)) then
if (own_action) then
actionsafterDisarmed()
end
sendPush('ALARMANLAGE inaktiv!')
openDoor()
end
end
else
fibaro:debug('Szene manuell gestartet. Widget-Support deaktiviert.')
fibaro:debug('Hier werden noch weitere Funktionen folgen.')
end
mein Problem (schalte Alarm mal über RFID und mal direkt über das Alarmpanel an) ist, dass der Alarm zwar “ausgelöst” wird, aber
a. bekomme keine Nachricht “Alarm ausgelöst”
und
b. die Sirenen gehen nicht an und der Counter zählt fleißig weiter… nach 3 minuten habe ich den Alarm manuell deaktiviert
Woran kann es liegen?
Danke