Alarm Skript optimieren

Hallo :slight_smile:

ich brauche eure Hilfe, das folgende Skript zu optimieren. Ich möchte, dass nach dem Aktivieren des RFID der Alarm eingeschaltet wird. Zuvor prüft das Skript noch, ob Fenster/Türen geschlossen sind und quittiert mir dies als TTS über die Sonos-Boxen. Am Ende bekomme ich eine Push auf das Handy, dass der Alarm aktiviert wurde oder eben nicht. Und hier ist das Problem! Ich bekomme die Push immer zweimal?! Hat jemand eine Idee warum?

--[[
%% properties
%% globals
rfid_alarm
alarm
Sirene
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ( fibaro:getGlobalValue("rfid_alarm") == "On" ) 
)
then    
   fibaro:debug('Überprüfe Sensoren')     
        if (tonumber(fibaro:getValue(154, 'value')) == 1) then
                  local sensorname = fibaro:getName(154)
                  local sensorroom = fibaro:getRoomNameByDeviceID(154)
                  fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
                  local http = net.HTTPClient()  
                  http:request('http://192.168.178.47:5005/Kueche/say/Das%20Fenster%20im%20Schlafzimmer%20ist%20noch%20ge%C3%B6ffnet./de-de/40')
        end
        if (tonumber(fibaro:getValue(175, 'value')) == 1) then
                  local sensorname = fibaro:getName(175)
                  local sensorroom = fibaro:getRoomNameByDeviceID(175)
                  fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
                  local http = net.HTTPClient()  
                  http:request('http://192.168.178.47:5005/Kueche/say/Die%20Terrassent%C3%BCr%20ist%20noch%20ge%C3%B6ffnet./de-de/40')
        end  
if (tonumber(fibaro:getValue(175, 'value')) == 0 and 
    tonumber(fibaro:getValue(154, 'value')) == 0) then
    fibaro:debug('Alle Sensoren sicher - Alarm aktiviert')
    local http = net.HTTPClient()  
      http:request('http://192.168.178.47:5005/Kueche/say/Alarm%20aktiviert./de-de/40')
    ----Variable ALARM AN setzen---- 
    fibaro:sleep(7000);
    fibaro:setGlobal('alarm', 'an')
    ----Lichter im Haus aus----
   fibaro:startScene(145)
   ----Nachricht auf das Handy----
   fibaro:call(242,'sendPush','ALARM aktiviert')
else 
if (tonumber(fibaro:getValue(175, 'value')) == 1 or 
    tonumber(fibaro:getValue(154, 'value')) == 1) then 
    fibaro:setGlobal('alarm', 'aus')
    fibaro:setGlobal('rfid_alarm', 'Off')
    fibaro:call(242,'sendPush','Tür oder Fenster offen - ALARM deaktiviert')
    fibaro:debug('Sensoren nicht sicher - deaktiviere Alarm')
  end
 end
end

Hab das Skript noch etwas angepasst, trotzdem bekomme ich den Debug, das der Alarm aktiviert wurde und die Push nach wie vor 2x :frowning:

--[[
%% properties
%% globals
rfid_alarm
--]]
local startSource = fibaro:getSourceTrigger();
if ( fibaro:getGlobalValue("rfid_alarm") == "On" ) 
then    
   fibaro:debug('Überprüfe Sensoren')     
        if (tonumber(fibaro:getValue(154, 'value')) == 1) then
                  local sensorname = fibaro:getName(154)
                  local sensorroom = fibaro:getRoomNameByDeviceID(154)
                  fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
                  local http = net.HTTPClient()  
                  http:request('http://192.168.178.47:5005/Kueche/say/Das%20Fenster%20im%20Schlafzimmer%20ist%20noch%20ge%C3%B6ffnet./de-de/40')
        elseif 
                  (tonumber(fibaro:getValue(175, 'value')) == 1) then
                  local sensorname = fibaro:getName(175)
                  local sensorroom = fibaro:getRoomNameByDeviceID(175)
                  fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
                  local http = net.HTTPClient()  
                  http:request('http://192.168.178.47:5005/Kueche/say/Die%20Terrassent%C3%BCr%20ist%20noch%20ge%C3%B6ffnet./de-de/40')
        end  
if 
    (tonumber(fibaro:getValue(175, 'value')) == 0 and 
    tonumber(fibaro:getValue(154, 'value')) == 0) then
    fibaro:debug('Alle Sensoren sicher - Alarm aktiviert')
    local http = net.HTTPClient()  
    http:request('http://192.168.178.47:5005/Kueche/say/Alarm%20aktiviert./de-de/40')
    ----Variable ALARM AN setzen---- 
    fibaro:setGlobal('alarm', 'an')
    ----Lichter im Haus aus----
    fibaro:startScene(145)
    ----Nachricht auf das Handy----
    fibaro:call(242,'sendPush','ALARM aktiviert')
elseif 
    (tonumber(fibaro:getValue(175, 'value')) == 1 or 
    tonumber(fibaro:getValue(154, 'value')) == 1) then 
    fibaro:setGlobal('alarm', 'aus')
    fibaro:call(242,'sendPush','Tür oder Fenster offen - ALARM deaktiviert')
    fibaro:debug('Sensoren nicht sicher - deaktiviere Alarm')
 end
end

Hi,

warum nutzt du nicht unser fertiges Skript für den RFID-Reader? Dies findest du hier:

https://www.siio.de/sicherheitalarm/so-aktivierst-du-deinen-alarm-mit-dem-rfid-tagreader/

Gruß

Hi boomx,

weil eure Skript keine Abfrage offener Türen und Fenster inklusive Ausgabe über Sonos realisiert. Es läuft ja auch alles, bis auf die doppelte Alarm aktiviert Ausgabe im Debug, Push und über die Sonos :frowning:

Klar funktioniert das :slight_smile: Müsstest nur die TTS-Ausgabe für deinen Sonos einbauen.

Gruß

Stimmt :slight_smile: Jetzt weiß ich aber auch wieder warum nicht - ich benutze zur Aktivierung des Alarms nicht den armed-Status des HC2, sondern ein eigenes Skript, welches in Abhängikeit der Variable “alarm an/aus” den Alarm auslöst. Der Vorteil, das Skript löst erst aus wenn zwei Bewegungen innerhalb 60sec von zwei Sensoren gemeldet wurden. Seither hab ich nicht einen Fehlalarm mehr gehabt. Früher mindesten 1x die Woche :slight_smile:

Das möchte ich ungern ersetzten. Hat jemand eine Lösung für meine Frage?

Hi,
Versuch mal die Anzahl der laufenden Szenen auf 1 zu limitieren.
Ggf hilft das schon.

Viele Grüße Hoggle

Hallo Eldar, ich würde auch auf den Tip von Hoggle setzen.

Wie hast du das mit dem TTS gemacht?

Grüße

Matthias

Hallo Matthias,

für TTS habe ich node-sonos-http-api auf einem extra Server laufen und dann das entsprechende Virtual Device dafür installiert. Viel besser als alles andere was ich vorher hatte! Google mal danach. Gibt es 1-2 gute Seiten inkl. How-to Anleitung. Lohnt sich.