Alarm über Variable schalten

Hi,
da das RFID-Pad ja wohl leider auf absehbare Zeit nicht funktionieren wird (habe gerade auf 4.083 upgedated) versuche ich, den Alarm über die Variable PresentState zu schalten.
Das Prinzip ist mir klar (hoffe ich): in einer Szene getriggert durch die Variable den Alarm scharf schalten, z.B. http://www.siio.de/board/thema/manuelle-alarm-szenen-aufgrund-der-beta-4-071/

Nun finde ich das RFID-Script von Daniel / Boomx aus http://www.siio.de/sicherheitalarm/alarm-schalten-mit-zipato-rfid-tagreader-im-fibaro-hc2-update-3/ doch sehr genial, enthält so ziemlich alles, was man sich wünschen kann.
Leider steckt das RFID so tief in der Programmierung, dass ich es mit meinen Kenntnissen nicht umgehen kann.
Hat jemand eine Idee oder einen Lösungsansatz, wie man das Script auch ohne RFID, also z.B. über Variable oder einen simplen Schalter (CentralSceneEvent / -SceneActivation) ausführen könnte?

LG TT

Hi,

da das Skript in der neusten Version den Wigdet-Modus unterstützt, kann man das Skript auch über ein anderen Trigger ausführen lassen. Dazu musst du den Widget-Mode aktivieren und das Skript triggern lassen. Dann funktioniert es auch ohne Keypad.

Fibaro wird wohl den inoffiziellen Support in der nächsten Beta wieder einführen. Zumindest haben sie dies offiziell bestätigt.

Gruß

Hi,
so scheint es zu funktionieren, habe es der Übersichtlichkeit halber zusammengestrichen, da ich ja nur über PresentState schalten will.
Gibt es noch einen Denkfehler?

--[[
%% properties
PresentState
%% globals
--]]
 

-- Szene RFID-Alarm Update 3 von Boomx angepasst
-- HIER DIE ARRAYS ANPASSEN (neue IDs können einfach hinzugefügt werden)
--local tagReader = 96 -- ID des RFID-Leser (bitte auch in dem Header ändern)
local sensorID = {297, 232, 220, 51, 22, 132, 126, 32, 180, 129, 121, 263, 226, 352, 356, } -- IDs der Sensoren
local phoneID = {158, 162} -- IDs der Handys, an die eine Push geschickt werden soll
local countID = 1000 -- Anzahl eurer devices (Muss nicht zwangsläufig geändert werden)
 
-- OPTIONEN

-- FUNKTIONEN FÜR AKTIONEN (z.B. TTS, LICHT AUS)
------------------------------------------------
-- Aktionen nach dem Schärfen mit Delay, bvor die Sensoren geschäft sind
function actionsbeforeArmed()
  fibaro:debug('Führe eigene Funktionen vor Schärfen aus')
  	fibaro:call(349, "pressButton", "1");
        fibaro:debug("Licht rot an");
	fibaro:sleep(5000);
		fibaro:call(349,"pressButton","11");
  fibaro:debug("Licht rot aus");
  fibaro:sleep(10000);
 
end
-- Aktionen nach dem endgültigen Schärfen
function actionsafterArmed()
  fibaro:debug('Führe eigene Funktionen nach dem Schärfen aus')
 fibaro:call(383, 'secure')
end
-- Aktionen nach dem Entschärfen
function actionsafterDisarmed()
  fibaro:debug('Führe eigene Funktionen nach dem Entschärfen aus')
 	fibaro:call(349, "pressButton", "4");
        fibaro:debug("Licht grün an");
	fibaro:sleep(5000);
		fibaro:call(349,"pressButton","11");
  fibaro:debug("Licht grün aus");
end
-------------------------------------------------
-- OPTIONEN ENDE -- AB HIER NICHTS MEHR ÄNDERN --
-- Funktionen:
 function armedcheckSensorID(array)
  for j=1, countID do
    if sensorID[j] ~= nil then
      if (tonumber(fibaro:getValue(sensorID[j], 'armed')) == 0) then
          return false
      end
    end
  end
  return true
end

Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
end

-- Start Script:

   if (fibaro:getGlobal('PresentState') == 'Away') then
      fibaro:debug('Alarm gestartet - Haus verlassen')
     
      if (own_action == 1) then
        actionsbeforeArmed()
      end
      local delay = tonumber(fibaro:getValue(sensorID[1], "armDelay"))
      if (delay ~= 0) then
        fibaro:debug('Arm-Delay erkannt. Arm-Delay: ' ..delay)
      end
      for j=1, countID do
        if sensorID[j] ~= nil then
        if (tonumber(fibaro:getValue(sensorID[j], 'value')) == 0) then
          fibaro:call(sensorID[j], 'setArmed', '1')
        else
          local sensorname = fibaro:getName(sensorID[j])
          local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[j])
          fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher. Sende Push.')
          for k=1, countID do
            if phoneID[k] ~= nil then
              fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
            end
          end
          end
      end
      end
      fibaro:debug('Warte ' .. delay .. ' Sekunden')
      delay = delay + 1
      fibaro:sleep(delay*1000)
      if (fibaro:getGlobal('PresentState') == 'Away') then
        if (armedcheckSensorID(sensorID)) then
          if (own_action == 1) then
            actionsafterArmed()
          end
        for l=1, countID do
        if phoneID[l] ~= nil then
          fibaro:call(phoneID[l], 'sendPush', 'Alarmanlage SCHARF')
        end
        end
      fibaro:debug('Alle Sensoren geschärft. Sende Push')
      if (doorlock) then
        fibaro:call(doorlockID, 'secure')
        fibaro:debug('doorlock vorhanden, Tür wurde geschlossen!')
      end
      else
        fibaro:debug('Es konnten nicht alle Sensoren scharf geschaltet werden')
      end
      else
       fibaro:debug('Alarm wurde während der Delay-Time deaktiviert')
      end
   elseif (fibaro:getGlobal('PresentState') == 'Home') then
      fibaro:debug('Welcome@Home')
 
        for m=1, countID do
          if sensorID[m] ~= nil then
            fibaro:call(sensorID[m], 'setArmed', '0')
          end
        end
      if (armedcheckSensorID(sensorID)) then              
        fibaro:debug('Es konnten nicht alle Sensoren entschäft werden');
        for t=1, countID do
          if sensorID[t] ~= nil then
            if (tonumber(fibaro:getValue(sensorID[t], 'armed')) == 1) then
              local sensorname = fibaro:getName(sensorID[t])
              local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[t])
              fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' konnte nicht entschärft werden. Sende Push.')
              for o=1, countID do
                if phoneID[o] ~= nil then
                  fibaro:call(phoneID[o], 'sendPush', 'ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht entschärft.')
                end
              end
            end
          end
        end
        else
        fibaro:debug('Alle Sensoren entschärft. Sende Push')
        if (doorlock) then
          fibaro:call(doorlockID, 'unsecure')
          fibaro:debug('doorlock vorhanden, Tür wurde geöffnet')
        end
        for l=1, countID do
          if phoneID[l] ~= nil then
            fibaro:call(phoneID[l], 'sendPush','Alarmanlage entschärft')
          end
        end
        if (own_action == 1) then
         actionsafterDisarmed()
        end
      end            
   end
 
 
  if (fibaro:getGlobal('PresentState') ~= nil) then
    local PresentState = fibaro:getGlobal('PresentState')
    Debug( 'green', 'Die Variable PresentState wurde gefunden. Status: ' ..PresentState)
  else
    Debug( 'red', 'Die Variable PresentState wurde nicht gefunden. Bitte einrichten! rfid_alarm wird nicht mehr unterstützt.')
  end
  local delay = tonumber(fibaro:getValue(sensorID[1], 'armDelay'))
    if (delay ~= 0) then
        fibaro:debug('Arm-Delay erkannt. Arm-Delay: ' ..delay)
    else
        fibaro:debug('Kein Arm-Delay erkannt.')
    end

Hi,

wenn es so funktioniert, dann ist es doch top :slight_smile: Schöner Beitrag.

Gruß

Danke!

Klappt aber nur mit Deiner Hilfe und der dieses Forums.
Kurz zusammengefaßt, falls noch jemand einen Weg ohne RFID sucht:

Schalte jetzt mit einem Devolo Schalter die Variable PresentState (http://www.siio.de/board/thema/info-4-072-beta-und-centralsceneevent/page/2/)
Darauf schärft obiges Script den Alarm. Das ließe sich sicher auch z.B. mit dem Danalock oder einem anderen Sensor / Aktor triggern.
Im Alarmpanel habe ich noch Deine Szene aus http://www.siio.de/sicherheitalarm/so-nutzt-du-das-fibaro-alarmpanel-des-homecenters/ eingebaut und etwas angepasst.

Langsam wird das Smart-Home wirklich smart!

LG TT

Cool :slight_smile:

Freut mich, dass dich meine Artikel so weit gebracht haben. Dafür machen wir das hier. :slight_smile:

Gruß