Alarm schalten mit Zipato RFID Tagreader

Hallo, in dem Tutorial von Boomx (Update§) versuchen wir nun schon eine weile mein Problem zu lösen, zur besseren Übersicht mache ich dieses Thema hier erneut auf.

Dies ist meine ersten Gehversuche mit HC2, also noch Anfänger, man möge mir verzeihen.

Das Problem trotz Szene erstellen, Code einfügen und anpassen der ID des RDIF readers sowie des Tags und eingabe der Sensoren, schaltet er die Module nicht scharf. Debug meldet:
[DEBUG] 20:29:42: RFID-Scene -Version 1.5 RC- gestartet
[DEBUG] 20:29:42: Keine Variable für RFID3 gesetzt; Funktion wird nicht genutzt
[DEBUG] 20:29:42: Keine Variable für RFID4 gesetzt; Funktion wird nicht genutzt
[DEBUG] 20:29:42: Szene manuell gestartet. Auslesen der Informationen
[DEBUG] 20:29:42: RFID-INFO: {143, 214, 75, 10, 107, 0, 1, 4, 0, 0}
[DEBUG] 20:29:42: Diese Info in die lokalen Arrays rfid1,rfid2,code eintragen
[DEBUG] 20:29:42: Die Variable PresentState wurde gefunden. Status: Home
[DEBUG] 20:29:42: Kein Arm-Delay erkannt.
[DEBUG] 20:29:42: Kein doorlock erkannt

Dabei ändert sich der Status “Home” nie.

Ich nutze nur einen Tag und möchte nur mit dem Tag Scharf und unscharf schalten, dabei sollen die Türsensoren Scharf und Unscharf gestelt werden, aktuell passiert gar nichts.

Da du Widget auf false hast, ändert sich die Variable beim manuellen Start auch nicht. Bitte lies nochmal in Ruhe die Anleitung und geh die einzelnen Punkte durch. Dann verstehst du auch, was du tust :slight_smile:

Gruß

Moin und Danke.

das war der Hinweis, bei manuellen Auslösen der Szene kommt jetzt folgende meldung:

[DEBUG] 05:56:01: RFID-Scene -Version 1.5 RC- gestartet
[DEBUG] 05:56:01: Keine Variable für RFID3 gesetzt; Funktion wird nicht genutzt
[DEBUG] 05:56:01: Keine Variable für RFID4 gesetzt; Funktion wird nicht genutzt
[DEBUG] 05:56:01: Szene durch Widget gestartet - Welcome@Home
[DEBUG] 05:56:01: Alle Sensoren entschärft. Sende Push
[DEBUG] 05:56:01: Führe eigene Funktionen nach dem Entschärfen aus
[DEBUG] 05:56:09: RFID-Scene -Version 1.5 RC- gestartet
[DEBUG] 05:56:09: Keine Variable für RFID3 gesetzt; Funktion wird nicht genutzt
[DEBUG] 05:56:09: Keine Variable für RFID4 gesetzt; Funktion wird nicht genutzt
[DEBUG] 05:56:09: Szene durch Widget gestartet - Haus wurde verlassen
[DEBUG] 05:56:09: Führe eigene Funktionen vor Schärfen aus
[DEBUG] 05:56:09: Warte 0 Sekunden
[DEBUG] 05:56:10: Es konnten nicht alle Sensoren scharf geschaltet werd

ein Module wird auch scharf gestellt die beiden anderen nicht.
local sensorID = {16, 36, 29} – IDs der Sensoren

DANKE

Habs hinbekommen Lösung: In einem Modul/ Erweitert war der Erforderliche Status auf “ausgelöst” bei Staus “Sicher” wie die anderen Sensoren klappt es.

Noch eine Frage wo ich bei lauter rumprobieren nicht weiterkomme:
Muß in der Ansicht Module/ RFID Tagreader nicht bei scharfschalten das Symbol “Schloß auf” in “Schloß zu” umspringen oder ist das vielleicht nicht umgesetztt?

Freut mich, dass du es hinbekommen hast.

Nein, dies hat Fibaro nicht umgesetzt… Das Icon ändert sich zu keiner Zeit.

Gruß

Hallo,

wqas funktioniert ist das Scharfschalten manuell,
auf den Chip oder die eingabe manuell reagiert er nicht.

Dann hast du die ID im Header nicht angepasst.

Gruß

welcher Header bitte?

In den ersten Zeilen steht auch eine ID, welche geändert werden muss. -> der Header

also das :

–[[
%% properties

%% globals
–]]
–[[
%% properties
96 userCodes
%% globals
–]]

wenn ich i nder oben geschriebenen ID die ID des RFID Readers einsetze und den Chip oder Pin benutze, sieht man unter Module bei anhalten des Chips nur kurz Übertragung OK, Modul schläft, Übertragung fehlgeschlagen.

Da hat die Szene nichts mit zu tun, sondern das Pad ist wieder nicht im Netzwerk erreichbar.

Wenn ich den Tagreader ins Netzwerk includiere erscheint bei nicht zugeordnet:
Modul “Paketrsymbol” 68 “Status nicht konfiguriert” und daneben der Tagreader Modul 68.0

Ich sende hier noch einmal den Code und den Debug.
Wenn man nachdem drücken Home/Away den Tag ranhält und den DEBUG ausliest kommt keine Meldung über den Tag Code.
–[[
%% properties

%% globals
–]]
–[[
%% properties
71 userCodes
%% globals
–]]

– HIER DIE ARRAYS ANPASSEN (neue IDs können einfach hinzugefügt werden)
local tagReader = 71 – ID des RFID-Leser (bitte auch in dem Header ändern)
local sensorID = {15, 16, 35, 36, 28, 29} – IDs der Sensoren
local phoneID = {68, 113} – IDs der Handys, an die eine Push geschickt werden soll
local countID = 1000 – Anzahl eurer devices (Muss nicht zwangsläufig geändert werden)

– OPTIONEN
– Prüfung einer globalen Variable für Chip 3/4, ob diese gültig ist.
– Bei nicht Nutzung dieser Funktion müsst Ihr nichts weiter einrichten.
– Solltet Ihr diese nutzen wollen, dann müsst Ihr für jeden Chip eine Variable anlegen (z.B rfid_active1)
local rfid_active3 = fibaro:getGlobalValue(‘rfid_active3’) – Variable zum Prüfen ob RFID-Chip3 gültig ist oder nicht (active = gültig/inactive = ungültig)
local rfid_active4 = fibaro:getGlobalValue(‘rfid_active4’) – Variable zum Prüfen ob RFID-Chip4 gültig ist oder nicht (active = gültig/inactive = ungültig)

– Hier könnt Ihr mit der 1 setzen, dass die RFID-Tags nur zum entschärfen genutzt werden sollen
local rfid_use1 = 0 – Wenn Ihr mit dem RFID-Tag1 nur entschärfen wollt, bitte auf 1 setzen
local rfid_use2 = 0 – Wenn Ihr mit dem RFID-Tag2 nur entschärfen wollt, bitte auf 1 setzen
local rfid_use3 = 0 – Wenn Ihr mit dem RFID-Tag3 nur entschärfen wollt, bitte auf 1 setzen
local rfid_use4 = 0 – Wenn Ihr mit dem RFID-Tag4 nur entschärfen wollt, bitte auf 1 setzen

– Prüfung, ob Ihr eigene Aktionen ausführen möchtet (Siehe FUNKTIONEN FÜR AKTIONEN)
local own_action = 0 – Bitte auf 1 setzen, wenn Ihr eigene Aktionen ausführen wollt.

– 10-stellige Byte-Array’s (Bytes, weil RFID-Tags auch Zeichen ausserhalb des lesbaren Bereichs liefern)
local rfid1 = {143, 214, 75, 10, 107, 0, 1, 20, 0, 0} – <–ANPASSEN: Byte-Array eines RFID-Tags
local rfid2 = {143, 174, 97, 84, 42, 0, 1, 4, 0, 0} – <–ANPASSEN: Byte-Array eines RFID-Tags
local rfid3 = {143, 80, 84, 84, 42, 0, 1, 4, 0, 0} – <–ANPASSEN: Byte-Array eines RFID-Tags
local rfid4 = {143, 174, 97, 84, 42, 0, 1, 4, 0, 0} – <–ANPASSEN: Byte-Array eines RFID-Tags
local code = {49, 49, 49, 49, 0, 0, 0, 0, 0, 0} – <–ANPASSEN: Byte-Array für Zahlencode (1234 als Unicode)

– WIDGET-Support
– Solltet Ihr die Widget-Funktion der App nutzen wollen, dann könnt Ihr die Option hier aktivieren
– ACHTUNG: Solltet Ihr die Szene manuell ausführen, dann wird der Alarm gesetzt
local widget = true – false = Widget wird nicht genutzt; true = Widget wird genutzt

– DOORLOCK-Integration
– Hier kann ein Doorlock hinzugefügt werden, was die Tür nach schärfen/entschärfen automatisch auf/zu schließt.
– Die Option kann über die Variable doorlock auf true/false (Standart ist false) gesetzt werden
– ACHTUNG: Die Funktion zum Öffnen mit RFID/Code funktioniert nur, wenn PresentState auf ‘home’ steht; NUTZUNG AUF EIGENE GEFAHR
local doorlock = false – false = Kein Doorlock im Einsatz; true = Doorlock soll über das Skript geschaltet werden
local doorlockID = 211 – ID des Doorlocks
– Wie soll der doorlock geöffnet werden (Falls jemand zu Hause ist und Ihr kommt zusätzlich nach Hause und wollt keinen Schlüssel nutzen)
– rfid = Über den RFID-Chip (dann kann dieser aber nicht mehr zum schärfen der Alarmanlage verwendet werden)
– pin = Dann könnt Ihr mit einem zusätzlichen Code (open_code) die Tür öffnen
local doorlock_open = ‘pin’
local open_code = {50, 50, 50, 50, 0, 0, 0, 0, 0, 0} – <–ANPASSEN: Byte-Array für Zahlencode (1234 als Unicode)
local rfid_doorlock1 = 1 – Wenn Ihr mit dem RFID-Tag1 die Tür aufschließen wollt, bitte auf 1 setzen
local rfid_doorlock2 = 1 – Wenn Ihr mit dem RFID-Tag2 die Tür aufschließen wollt, bitte auf 1 setzen
local rfid_doorlock3 = 0 – Wenn Ihr mit dem RFID-Tag3 die Tür aufschließen wollt, bitte auf 1 setzen
local rfid_doorlock4 = 0 – Wenn Ihr mit dem RFID-Tag4 die Tür aufschließen wollt, bitte auf 1 setzen

local readerCode = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0} – leeres Byte-Array, in dem nachher der gelesene Code steht (RFID-Tag oder Zahlencode)

– 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’)

end
– Aktionen nach dem endgültigen Schärfen
function actionsafterArmed()
fibaro:debug(‘Führe eigene Funktionen nach dem Schärfen aus’)

end
– Aktionen nach dem Entschärfen
function actionsafterDisarmed()
fibaro:debug(‘Führe eigene Funktionen nach dem Entschärfen aus’)

end

– OPTIONEN ENDE – AB HIER NICHTS MEHR ÄNDERN –

fibaro:debug(‘RFID-Scene -Version 1.5 RC- gestartet’);

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

if (rfid_active3 == nil) then
fibaro:debug(‘Keine Variable für RFID3 gesetzt; Funktion wird nicht genutzt’)
local rfid_active3 = ‘active’
end

if (rfid_active4 == nil) then
fibaro:debug(‘Keine Variable für RFID4 gesetzt; Funktion wird nicht genutzt’)
local rfid_active4 = ‘active’
end

– FUNKTIONEN (bitte nicht ändern)
function compareCodes(array1, array2)
if (#array1 ~= 10 or #array2 ~= 10) then
fibaro:debug(‘Grösse der Arrays ungültig…’)
return false
end
for i = 1, #array1 do
if (array1[i] ~= array2[i]) then
return false
end
end
return true
end

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

local startSource = fibaro:getSourceTrigger()

if (startSource[‘deviceID’] == tagReader) then

local delay = 0

– RFID auslesen
local userCodes = fibaro:get(tagReader, ‘userCodes’)
jsontbl = json.decode(userCodes)

– nach dem Code mit der ID 0 suchen
for i = 1, #jsontbl do
if (jsontbl[i].id == 0) then

  -- die 10 Zeichen lesen und in das leere Byte-Array abfüllen
  for b = 1, string.len(jsontbl[i].code) do
    readerCode[b] = string.byte(jsontbl[i].code,b)
  end

  if (compareCodes(rfid1, readerCode) or compareCodes(rfid2, readerCode) or (compareCodes(rfid3, readerCode) and rfid_active3 == 'active') or (compareCodes(rfid4, readerCode) and rfid_active4 == 'active')) then
    if (fibaro:getGlobal('PresentState') == 'Home') then
         
        -- Prüfung, ob RFID zum Schärfen genutzt werden darf/Zum Öffnen der Tür
        if (compareCodes(rfid1, readerCode) and rfid_use1 == 1) then
          fibaro:debug('Scene abgebrochen. Mit diesem RFID-Tag 1 dürfen die Sensoren nicht geschärft werden.')
           if (doorlock and rfid_doorlock1 == 1) then
             fibaro:debug('Doorlock vorhanden, Tür wird geöffnet.')
             fibaro:call(doorlockID, 'unsecure')
           end
          fibaro:abort()
        end
        ---------------ENDE PRÜFUNG--------------------------
        -- Prüfung, ob RFID zum Schärfen genutzt werden darf/Zum Öffnen der Tür
        if (compareCodes(rfid2, readerCode) and rfid_use2 == 1) then
          fibaro:debug('Scene abgebrochen. Mit diesem RFID-Tag 2 dürfen die Sensoren nicht geschärft werden.')
            if (doorlock and rfid_doorlock2 == 1) then
             fibaro:debug('Doorlock vorhanden, Tür wird geöffnet.')
             fibaro:call(doorlockID, 'unsecure')
           end
          fibaro:abort()
        end
        ---------------ENDE PRÜFUNG--------------------------
        -- Prüfung, ob RFID zum Schärfen genutzt werden darf/Zum Öffnen der Tür
        if (compareCodes(rfid3, readerCode) and rfid_use3 == 1) then
          fibaro:debug('Scene abgebrochen. Mit diesem RFID-Tag 3 dürfen die Sensoren nicht geschärft werden.')
            if (doorlock and rfid_doorlock3 == 1) then
             fibaro:debug('Doorlock vorhanden, Tür wird geöffnet.')
             fibaro:call(doorlockID, 'unsecure')
           end
          fibaro:abort()
        end
        ---------------ENDE PRÜFUNG--------------------------
        -- Prüfung, ob RFID zum Schärfen genutzt werden darf/Zum Öffnen der Tür
        if (compareCodes(rfid4, readerCode) and rfid_use4 == 1) then
          fibaro:debug('Scene abgebrochen. Mit diesem RFID-Tag 4 dürfen die Sensoren nicht geschärft werden.')
            if (doorlock and rfid_doorlock4 == 1) then
             fibaro:debug('Doorlock vorhanden, Tür wird geöffnet.')
             fibaro:call(doorlockID, 'unsecure')
           end
          fibaro:abort()
        end
       
        fibaro:debug('RFID-Tag akzeptiert - Haus wurde verlassen')
        fibaro:setGlobal('PresentState', 'Away')
        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', 'RFID: 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') == 'Away') then
        fibaro:debug('RFID-Tag akzeptiert - Welcome@Home')
        fibaro:setGlobal('PresentState', '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', 'RFID: Alarmanlage entschärft')
                  end
              end
        if (own_action == 1) then
          actionsafterDisarmed()
        end
        end            

    else
      fibaro:debug('RFID-Tag akzeptiert - Variablen nicht korrekt gesetzt.')
    end
   
  elseif (compareCodes(code, readerCode)) then
    fibaro:debug('PIN-Code akzeptiert.')
    fibaro:setGlobal('PresentState', 'Away')
        for z=1, countID do
          if sensorID[z] ~= nil then
            if (tonumber(fibaro:getValue(sensorID[z], 'value')) == 0) then
              fibaro:call(sensorID[z], 'setArmed', '1')
            else
              local sensorname = fibaro:getName(sensorID[z])
              local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[z])
              fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher. Sende Push.')
              for y=1, countID do
                  if phoneID[y] ~= nil then
                    fibaro:call(phoneID[y], 'sendPush', 'ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
                  end
              end
            end
          end
        end
        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
        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', 'PIN-CODE: 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 (compareCodes(open_code, readerCode) and fibaro:getGlobal('PresentState') == 'Home' and doorlock_open == 'pin') then
      fibaro:debug('PIN-Code zum Öffnen der Tür akzeptiert.')
            if (doorlock) then
              fibaro:call(doorlockID, 'unsecure')
              fibaro:debug('doorlock vorhanden, es war schon jemand zu Hause, Tür wird geöffnet')
            for r=1, countID do
                  if phoneID[r] ~= nil then
                    fibaro:call(phoneID[r], 'sendPush', 'Tür würde mit PIN geöffnet')
                  end
              end
            end
  else
    fibaro:debug('RFID-Tag/PIN-Code wurde abgelehnt. Manipulation oder Karte inaktiv? Push versendet')
    for r=1, countID do
                  if phoneID[r] ~= nil then
                    fibaro:call(phoneID[r], 'sendPush', 'ACHTUNG: Code falsch eingegeben/RFID inaktiv')
                  end
              end
  end
end

end
else
if (widget) then
if (fibaro:getGlobal(‘PresentState’) == ‘Home’) then
fibaro:debug(‘Szene durch Widget gestartet - Haus wurde verlassen’)
fibaro:setGlobal(‘PresentState’, ‘Away’)
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’, ‘Widget: 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’) == ‘Away’) then
fibaro:debug(‘Szene durch Widget gestartet - Welcome@Home’)
fibaro:setGlobal(‘PresentState’, ‘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’, ‘Widget: Alarmanlage entschärft’)
end
end
if (own_action == 1) then
actionsafterDisarmed()
end
end
end

else
fibaro:debug(‘Szene manuell gestartet. Auslesen der Informationen’)
local userCodes = fibaro:get(tagReader, ‘userCodes’)
jsontbl = json.decode(userCodes)

– nach dem Code mit der ID 0 suchen
for i = 1, #jsontbl do
if (jsontbl[i].id == 0) then

  -- die 10 Zeichen lesen und in das leere Byte-Array abfüllen
  for b = 1, string.len(jsontbl[i].code) do
    readerCode[b] = string.byte(jsontbl[i].code,b)
  end
  fibaro:debug('RFID-INFO: {' .. readerCode[1] .. ', ' .. readerCode[2] .. ', ' .. readerCode[3] .. ', ' .. readerCode[4] .. ', ' .. readerCode[5] .. ', ' .. readerCode[6] .. ', ' .. readerCode[7] .. ', ' .. readerCode[8] .. ', ' .. readerCode[9] .. ', ' .. readerCode[10] .. '}')
end

end
fibaro:debug(‘Diese Info in die lokalen Arrays rfid1,rfid2,code eintragen’)
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
if (doorlock) then
Debug( ‘green’, ‘doorlock mit der ID ’ …doorlockID… ’ erkannt’);
else
fibaro:debug(‘Kein doorlock erkannt’)
end
if (doorlock) then
if (doorlock_open == ‘rfid’) then
Debug( ‘white’, ‘doorlock soll mit den RFID-Tags geöffnet werden können. Prüfe Abhängigkeiten.’)
local error_rfid = 0
if (rfid_use1 == 0 and rfid_doorlock1 == 1) then
Debug( ‘red’, ‘RFID-Tag 1 soll zum Schärfen und zum Öffnen genutzt werden. Dies ist nicht möglich. Bitte ändern!’)
error_rfid = 1
end
if (rfid_use2 == 0 and rfid_doorlock2 == 1) then
Debug( ‘red’, ‘RFID-Tag 2 soll zum Schärfen und zum Öffnen genutzt werden. Dies ist nicht möglich. Bitte ändern!’)
error_rfid = 1
end
if (rfid_use3 == 0 and rfid_doorlock3 == 1) then
Debug( ‘red’, ‘RFID-Tag 3 soll zum Schärfen und zum Öffnen genutzt werden. Dies ist nicht möglich. Bitte ändern!’)
error_rfid = 1
end
if (rfid_use4 == 0 and rfid_doorlock4 == 1) then
Debug( ‘red’, ‘RFID-Tag 4 soll zum Schärfen und zum Öffnen genutzt werden. Dies ist nicht möglich. Bitte ändern!’)
error_rfid = 1
end
if (error_rfid == 0) then
Debug( ‘green’, ‘Abhängigkeiten bei den RFID-Tags in Ordnung’)
end
elseif (doorlock_open == ‘pin’) then
Debug( ‘white’, ‘doorlock soll mit einem PIN geöffnet werden. Prüfe PINs.’)
if (compareCodes(code, open_code)) then
Debug( ‘red’, ‘Die PINs zum öffnen und schärfen sind gleich, bitte einen ändern.’)
else
Debug( ‘green’, ‘Die PINs sind in Ordnung’)
end
end
end
end
end

Muss ich, wenn die Szene automatisch ausgeführt werden muss, etwas in dem Code ändern?

Könnte mir jemand mal erklären wie ich den RFID Tagreader hinzufüge?
Entweder er ist kaputt oder ich füge ihn nicht richtig hinzu.

Ich füge das Modul so hinzu:
Batterien rein, Metallclip dreimal hintereinander gedrückt, Modul wird vom HC2 erkannt und hinzugefügt.
Danach Abdeckung des Gehäuses wieder schliessen.

Nachdem hinzufügen ist dieser unter “nicht zugeordnet” daneben noch ein Paketsymbol unter diesem steht “nicht konfiguriert”,
ist das soweit richtig oder liegt hier schon der Fehler?

Danch füge ich den Reader und das “Paketmodul” dem Raum Flur hinzu.

Bitte helft mir!

Ne, kommt nicht. Macht ja auch irgendwie keinen Sinn, da der Tag ja schon hinterlegt ist :wink:

Die Szene wird durch Änderung der Tabelle userCodes getriggert, dazu muss die ID in den Propeties eingetragen werden. Oder was meinst du mit automatisch?

Zum Ex/Inkludieren die Taste auf der Rückseite eine Sekunde drücken.

Das Problem mit dem RFID Tagreader Modul hab ich erstmal gelöst, er wurde jetzt richtig hinzugefügt. Danke lag anscheinend an der Entfernung.

Was muß ich machen damit ich mit dem Tag die Türsensoren scharfstellen kann?
Durch manuelles Starten der Szene funktioniert das ja.

Was brauchst du für Angaben damit du mir helfen kannst?

Das hier

–[[
%% properties

%% globals
–]]

muss bei dir aus dem Code entfernt werden. Dann sollte es so funktionieren.