Hallo,
ich habe neuerdings eine Fehlermeldung in meinem Alarmscript die ich nicht nachvollziehen kann:
[DEBUG] 09:13:26: ___________________________
[DEBUG] 09:13:39: Alarm-Szene 2.0 wurde ausgelöst.
[DEBUG] 09:13:39: Aktionen werden ausgeführt.
[DEBUG] 09:13:39: 2019-04-20 09:13:39.247069 [ fatal] Unknown exception: /opt/fibaro/FibaroSceneAPI.lua:258: Assertion failed: Expected number
Das Alarmscript hat eigentlich die gesamte Zeit gut funktioniert. Bei der Fehlermeldung finde ich auch eigenaartig, das es Zeile 258 im Script nicht gibt und damit die Fehlersuche in der Zeile nciht geht. Kann mir hier jemand weiterhelfen woher der Fehler kommt?
Script welches ich nutze:
--[[
%% properties
%% globals
--]]
-- Einstellungen für die Sensoren (Zwingend erforderlich)
local sensorID = {171,119,217,390,223,36,242,387,229,226,65,72,419,393,96}
-- Einstellungen für die Sirene(n) (Wenn keine IDs eingetragen sind, wird die Funktion nicht genutzt)
local sireneID = {453} -- ID der Sirene(n)
-- Einstellungen für Push-Benachrichtigungen (Wenn keine IDs eingetragen sind, wird die Funktion nicht genutzt)
local phoneID = {324,384} -- ID der Handys 324 Amrei S8, 384 Sebastian Pixel 3
-- soll ein stiller Alarm genutzt werden? (true = ja/false = nein; silent_alarm_time: Sekunden wie lang der stille Alarm bestehen soll)
-- hier werden die Sirenen/Licht erst nach einer bestimmten Zeit aktiv. Bild der Kamera, Push und Meldung des Alarmpanels wird VOR dem stillen Alarm ausgeführt
local silent_alarm = false
local silent_alarm_time = 30
-- soll ein Bild der Kamera versendet werden (true = ja/false = nein)
local camera_support = true
-- an welche Mail soll ein Bild der Kamera gesendet werden
local email = 'sebastianbuchholz.79@googlemail.com'
-- Einstellungen für RGBW-Notfallbeleuchtung (Wenn keine IDs eingetragen sind, wird die Funktion nicht genutzt)
local rgbwID = {} -- ID RGBW
local mode = 'programm' -- Auswahl: color = Farbwert setzen; programm = Programm starten
local programm = 5
local color = '255,255,255,255' -- welche Farbe eingestellt werden soll
-- Sollen eigene Aktionen ausgeführt werden? (true = ja/false = nein; Bei true müssen die beiden nächsten Funktionen befüllt werden)
local own_action = true
function ownaction_alarm()
-- eigene Aktion bei Alarm
fibaro:call(188, "turnOn")
fibaro:call(180, "turnOn")
fibaro:call(184, "turnOn")
fibaro:debug('Eigene Aktionen bei Alarm ausgeführt')
end
function ownaction_afteralarm()
-- eigene Aktion nach dem Alarm
fibaro:debug('Eigene Aktionen nach dem Alarm ausgeführt')
end
local countID = 500
-- AB HIER NICHTS MEHR ÄNDERN
Debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
end
-- Funktion zum Versenden der Push
function sendPush(text)
if (phoneID[1] ~= nil) then
for k=1, countID do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k],'sendPush', text, 'alarm')
end
end
end
end
-- Funktion zum Ein-/Ausschalten der Sirene
function onoffSirene(status)
if (sireneID[1] ~= nil) then
if (status) then
fibaro:debug('Sirenen einschalten')
for a=1, countID do
if sireneID[a] ~= nil then
fibaro:call(sireneID[a],'turnOn')
end
end
else
if (sireneID[1] ~= nil) then
fibaro:debug('Sirenen ausschalten')
for a=1, countID do
if sireneID[a] ~= nil then
fibaro:call(sireneID[a],'turnOff')
end
end
end
end
end
end
-- Funktion zum Ein-/Ausschalten der RGBW-Notfallbeleuchtung
function emergencyRGBW(status)
if (rgbwID[1] ~= nil) then
if (status) then
if (mode == 'color') then
fibaro:debug('RGBW-Notfallbeleuchtung einschalten - Setze Farbe')
local RGBWTable = {}
local i = 1
for value in string.gmatch(color,"(%d+)") do
RGBWTable[i] = value
i = i + 1
end
for o=1, countID do
if rgbwID[o] ~= nil then
fibaro:call(rgbwID[o], "setColor", RGBWTable[1], RGBWTable[2], RGBWTable[3], RGBWTable[4])
end
end
elseif (mode == 'programm') then
fibaro:debug('RGBW-Notfallbeleuchtung einschalten - Starte Programm')
for o=1, countID do
if rgbwID[o] ~= nil then
fibaro:call(rgbwID[o], 'startProgram', programm)
end
end
end
else
if (rgbwID[1] ~= nil) then
fibaro:debug('RGBW-Notfallbeleuchtung ausschalten')
for o=1, countID do
if rgbwID[o] ~= nil then
fibaro:call(rgbwID[o], "setColor", 255,0,0,0)
end
end
end
end
end
end
-----------------Function Kamera-------------------
function cameracheck(roomID)
for x=1, countID do
if (fibaro:getType(x) == 'com.fibaro.ipCamera') then
if (roomID == fibaro:getRoomID(x)) then
fibaro:debug('Kamera ' ..x.. ' im betroffenen Raum erkannt. Sende Mail an ' ..email)
fibaro:call(x, 'sendPhotoToEmail', email)
else
fibaro:debug('Keine Kamera im betroffenden Raum gefunden.')
end
end
end
end
------------------Function Sensor Check----------------
function checkSensor()
for j=1, countID do
if sensorID[j] ~= nil then
if (tonumber(fibaro:getValue(sensorID[j], 'value')) == 1) then
return sensorID[j]
end
end
end
end
function checkSensorArmed()
local armed_counter = 0
for j=1, countID do
if sensorID[j] ~= nil then
if (tonumber(fibaro:getValue(sensorID[j], 'armed')) == 1) then
armed_counter = armed_counter+1
end
end
end
if (armed_counter == 0) then
return false
elseif (armed_counter > 0) then
fibaro:debug(armed_counter..' Sensoren noch nicht entschärft ...')
return true
end
end
Debug( 'red', '___________________________')
Debug( 'red', 'Alarm-Szene 2.0 wurde ausgelöst.')
Debug( 'white', 'Aktionen werden ausgeführt.')
--Debug( 'white', 'Sensor im Raum ' ..fibaro:getRoomNameByDeviceID(checkSensor()).. ' ausgelöst')
--DEBUG ('white', 'Sensor im Raum ' .. windowName .. ' im Raum: ' .. roomName .. ' ausgelöst')
sendPush('ACHTUNG: Alarm ausgelöst!')
if camera_support then
cameracheck(fibaro:getRoomID(checkSensor()))
else
Debug( 'red', 'Keine Kameras im Einsatz')
end
if silent_alarm then
fibaro:debug('Stiller Alarm wurde aktiviert. Dauer: ' ..silent_alarm_time)
counter = 0
while (counter <= silent_alarm_time and checkSensorArmed()) do
counter = counter + 1
fibaro:sleep(1*1000)
end
else
Debug( 'white', 'Stiller Alarm wird nicht genutzt.')
end
if checkSensorArmed() then
if (own_action) then
ownaction_alarm()
end
api.post('/mobile/push', {["mobileDevices"]={324,384}, ["message"]=[[Alarmanlage ausschalten?]], ["title"]='Alarm aus?', ["category"]='RUN_CANCEL', ["data"]={["sceneId"]=185}});
fibaro:setGlobal("Alarm", "Ausgelöst")
onoffSirene(true)
emergencyRGBW(true)
elseif silent_alarm then
Debug('green', 'Stiller Alarm beendet, Geräte entschärft.')
end
while checkSensorArmed() do
Debug( 'red', 'Alarm weiterhin ausgelöst.')
fibaro:sleep(2*1000)
end
fibaro:debug('Alle Sensoren entschärft.')
Debug('green', 'Alarm wurde beendet.')
if (own_action) then
ownaction_afteralarm()
end
fibaro:setGlobal("AlarmStatus", "Unarmed")
fibaro:setGlobal("Alarm", "Aus")
emergencyRGBW(false)
onoffSirene(false)