Ja die 4.140 Version. Davor 4.130 gehabt.
Ich sehe gerade folgende Info:
[DEBUG] 10:10:03: RFID-Szene 3.1 (Official) gestartet.
[DEBUG] 10:10:03: Status Away gesetzt.
[DEBUG] 10:10:03: Sensoren werden scharf geschaltet.
[DEBUG] 10:10:03: line 79: attempt to concatenate local 'sensorroom' (a nil value)
[DEBUG] 12:14:48: RFID-Szene 3.1 (Official) gestartet.
Line 79 wäre:
fibaro:debug(‘ACHTUNG: ’ … sensorname … ’ im Raum: ’ … sensorroom … ’ nicht sicher. Sende Push.’)
Hier noch der komplette Code:
--[[
%% properties
131 value
%% events
%% globals
--]]
-- notwendige IDs
local sensorID = {141, 40, 42, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64} -- IDs der Sensoren
local phoneID = {152, 36} -- 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