Hallo,
ich wollte das Alarmscript für meine Wünsche etwas anpassen. Ich wollte das bei stillen Alarm mir eine Push-Nachricht auf mein Handy geschickt wird, wo einmal der Alarm angezeigt wird und in welchem Raum bzw. Fenster der Alarm ausgelöst wird. Die Nachricht bei stillen Alarm kommt, aber wo er ist funktioniert einfach nicht. Vielleicht kann mir hier jemand helfen wo mein Fehler ist. Bei Zeile 165 fängt der stille Alarm an ! Ich bin langsam am verzweifeln wo der Fehler liegt.
Grüße und schon mal Danke
--[[
%% properties
%% globals
--]]
-- Einstellungen für die Sensoren (Zwingend erforderlich)
local sensorID = {209, 40, 43, 222, 237, 248, 253, 227, 219, 258} -- ID der Sensoren(n)
-- Einstellungen für die Sirene(n) (Wenn keine IDs eingetragen sind, wird die Funktion nicht genutzt)
local sireneID = {86} -- ID der Sirene(n)
-- Einstellungen für Push-Benachrichtigungen (Wenn keine IDs eingetragen sind, wird die Funktion nicht genutzt)
local phoneID = {161} -- ID der Handys
-- 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 = true
local silent_alarm_time = 10
-- soll ein Bild der Kamera versendet werden (true = ja/false = nein)
local camera_support = false
-- an welche Mail soll ein Bild der Kamera gesendet werden
local email = 'test@test.de'
-- 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 = false
function ownaction_alarm()
-- eigene Aktion bei Alarm
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 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 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 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.2 wurde ausgelöst.')
Debug( 'white', 'Aktionen werden ausgeführt.')
Debug( 'white', 'Sensor im Raum ' ..fibaro:getRoomNameByDeviceID(checkSensor()).. ' 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
for k=1, countID do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k],'sendPush', "Stiller Alarm wurde ausgelöst für "..silent_alarm_time.." sec");
for id = 1, #sensorID do
if (tonumber(fibaro:getValue(sensorID[id], 'armed')) == 1) then
local name = fibaro:getName(sensorID[id])
local room = fibaro:getRoomNameByDeviceID(sensorID[id])
fibaro:call(phoneID[k],'sendPush', " ACHTUNG! " ..name.. " im Raum " ..room.. " hat Alarm geschlagen");
end
end
end
while (counter <= silent_alarm_time and checkSensorArmed()) do
counter = counter + 1
fibaro:sleep(1*1000)
end
end
else
Debug( 'white', 'Stiller Alarm wird nicht genutzt.')
end
if checkSensorArmed() then
if (own_action) then
ownaction_alarm()
end
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.')
if (phoneID[1] ~= nil) then
for k=1, countID do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k],'sendPush', "ALARM, ALARM");
end
end
end
fibaro:sleep(2*1000)
end
fibaro:debug('Alle Sensoren entschärft.')
Debug('green', 'Alarm wurde beendet.')
if (own_action) then
ownaction_afteralarm()
end
emergencyRGBW(false)
onoffSirene(false)