Mithilfe des Zipato RFID Reader lässt sich Alarmfunktion des Fibaro HC2 scharf schalten aber auch eine Abwenheitsvariable setzen. Dazu braucht es diesen Workaround:
[alert variation="alert-info" dismiss="dismiss"]Wir haben die Anwendung weiterentwickelt und eine Lösung ohne Verwendung eines Virtual Device gefunden. Gelöst wurde es über eine Szene. Den Artikel dazu findest du hier: Alarm schalten mit Zipato RFID Tagreader im Fibaro HC2 – UPDATE [/alert]Der Zipato RFID Tagreader kann entweder per PIN Eingabe, RFID Tag oder Zutrittskarte benutzt werden. Dabei kann er das Fibaro System scharf schalten und das Alarmsystem auch entschärfen. Out of the Box geht das leider nicht wir brauchen hier einen Workaround in Form eines Virtuellen Devices. Dann kann zum Beispiel der Alarm mit einem eingegebenen Code aktiviert und mit zum Beispiel zwei RFID-Tags entschärft werden. Dieses Beispiel werden wir jetzt hier umsetzten:
Schritt 1 - Anlernen:
Zum Anlernen muss zum einen das HC2 in den Lernmodus gesetzt werden, zum anderen muss hinten auf dem Tagreader der Schalter für 1 Sekunde gedrückt werden.
Nach dem Anlernen findet Ihr folgendes device im Webinterface, welches leider erst mal ohne Funktion zu seien scheint:
Schritt 2 - Virtuelles Device
Im nächsten Schritt müssen wir ein Virtuelles Device erstellen. Dazu müsst Ihr unter devices auf den Button „Add or remove device“ und dort auf „Add“.
Dort müsst Ihr dann einen neuen Button hinzufügen und dort den folgenden Code einfügen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
-- ÄNDERT FOLGENDE ANGABEN AB: YOUR_HC2_IP, YOUR_ADMIN_PW, RFID_DEVICE_ID, YOUR_RFID_CODE, YOUR_RFID_CODE2, YOUR_PIN_CODE -- DEN RFID-CODE FINDET IHR UNTER: http://YOUR_HC2_IP/api/devices?id=RFID_DEVICE_ID (unter: properties/userCodes/id:0 (looks like u00C2A) local HC2 = Net.FHttp("YOUR_HC2_IP", 80); HC2:setBasicAuthentication("admin", "YOUR_ADMIN_PW"); local response ,status, errorCode = HC2:GET("/api/devices?id=RFID_DEVICE_ID"); jsontbl= json.decode(response) if (tonumber(status)==200 and errorCode==0) then rfid1 = string.match(jsontbl.properties.userCodes, "YOUR_RFID_CODE"); rfid2 = string.match(jsontbl.properties.userCodes, "YOUR_RFID_CODE2"); code = string.match(jsontbl.properties.userCodes, "YOUR_PIN_CODE"); if (rfid1 == "YOUR_RFID_CODE" or rfid2 == "YOUR_RFID_CODE2") then fibaro:debug('home'); -- THE HOME-PART fibaro:setGlobal("rfid_alarm", "0") elseif (code == "YOUR_PIN_CODE") then fibaro:debug('away'); -- THE AWAY-PART fibaro:setGlobal("rfid_alarm", "1") else fibaro:debug('Error'); end else fibaro:debug('Error: Failed to load JSON'); end |
Nennt diesen Button am Besten "Refresh" und speichert ab.
In diesem Skript müsst Ihr folgende Angaben im Code ändern:
Zeile | Angabe | Erklärung |
4 | YOUR_HC2_IP | IP-Adresse des HC2 |
5 | YOUR_ADMIN_PW | Passwort des Admin-Users |
6 | RFID_DEVICE_ID | Device-ID des Tagreaders |
11 + 15 | YOUR_RFID_CODE | RFID-Code Tag1 |
12 + 15 | YOUR_RFID_CODE2 | RFID-Code Tag2 |
13 + 18 | YOUR_PIN_CODE | PIN-Code |
Die Codes für die einzelnen RFID-Tages könnt Ihr folgendermaßen rausfinden:
- Drückt den Home-Button auf dem Tagreader
- Eine Sekunde warten, bis das Gerät piept und die LED leuchtet
- RFID-Tag vorhalten (sollte bei erfolgreichen Einlesen kurz piepen)
- http://YOUR_HC2_IP/api/devices?id=RFID_DEVICE_ID aufrufen
- Folgenden String suchen: properties/userCodes/id:0
- Dort findet Ihr eine Angabe, die so ausieht: u00C2A
- Dies ist der Code eures RFID-Tags.
Nachdem Ihr mit den Angaben im Skript fertig seid, legt Ihr noch eine Variable „rfid_alarm“ an.
Schritt 3 – Szene zum Aktualisieren
Nun benötigt Ihr noch eine Szene, welche in einem 2-Sekundenabstand die Taste des virtuellen Devices „drückt“. Dazu legt Ihr euch eine neue LUA-Szene an und kopiert dort folgenden Code hinein (Ändert bitte in Zeile 12 die device-ID):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
--[[ %% properties %% autostart %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); if (sourceTrigger["type"] == "autostart") then while true do fibaro:debug('Refresh status.') fibaro:call(ID_VD, "pressButton", "1") fibaro:sleep(2*1000) fibaro:debug('Status refreshed') end end |
Schritt 4 – Fertig
Ihr könnt nun mit eurem vergebenen Code die Variable „rfid_alarm“ auf 1 setzen und anhand dieser Variablen die nächsten Aktionen durchführen lassen (z.B. die Türkontakte schärfen). Mit dem RFID-Tag hingegen setzt Ihr die Variable wieder auf 0. Dann könnt Ihr zum Beispiel die Türkontakte wieder entschärfen.
Hier findest du ein kurzes Video, wie das ganze dann aussehen kann. RFID-Tagreader mit Fibaro | SmartHome Blog