Website-Icon Dein Smart Home Blog

Alarm schalten mit Zipato RFID Tagreader im Fibaro HC2 – UPDATE 3

Mit diesem Update erweitern wir das RFID Skript um eine Widget-Funktion, sowie der Möglichkeit ein Doorlock zu integrieren und dies dann automatisch zu öffnen und zu verschließen.

ACHTUNG: Seit der Beta-Version 4.071 und den späteren Versionen funktioniert das Skript nicht mehr, da Fibaro Änderungen an der API des Gerätes vorgenommen hat und das Skript deshalb die Codes nicht mehr auslesen kann.

[alert variation="alert-info" dismiss="dismiss"]ACHTUNG! Die Nutzung des Skriptes erfolgt auf eigene Gefahr![/alert]

Neue Funktionen

Solltet Ihr die Variable "PresentState" noch nicht eingerichtet haben, dann begebt euch bitte in euer Variablenpanel und erstellt hier eine neue vordefinierte Variable mit den Status "Home", "Away" und "Holiday".

Kommen wir also nun zu den vorzunehmenden Anpassungen am Skript. Da diese mit den ganzen Updates sehr umfangreich geworden sind, erklären wir an dieser Stelle alle noch einmal explizit. Wir gehen dabei von oben nach unten vor.

Die notwendigen IDs

In diesem Teil werden die notwendigen IDs festgelegt. Die Angaben sind zwingend einzutragen, die Erklärungen zu den einzelnen Punkten findet Ihr in den Kommentaren zu den jeweiligen Punkten und sind eigentlich selbsterklärend.

Die Variable "countID" muss nur angepasst werden, wenn eure IDs größer sind als 200.

Optionale Einstellungen

RFID Tags inaktiv setzen

Mit dieser Einstellung könnt Ihr über globale Variablen die RFID Tags 3 und 4 als aktiv oder inaktiv kennzeichen.

Hier kam es in der Vergangenheit zu vielen Verständnisfragen, weshalb wir hier einmal ausführlicher drauf eingehen möchten. Wir haben mit dieser Option die Möglichkeit geschaffen, Szenenübergreifend RFID Tags zu aktivieren oder zu deaktiveren. Dies könnte man zum Beispiel einsetzen, um einer Haushaltshilfe den Zutritt in der Zeit von 13:00 Uhr bis 14:00 Uhr zu gewähren. Dazu müssen nur die oben beschriebenen globalen, vordefinierten Variablen mit den Status "active" und "inactive" erstellt werden. Mit einer zeitgesteuerten Szene können dann die RFID Tags in diesem Zeitraum auf aktiv gesetzt werden und nach der Zeit wieder auf inaktiv gesetzt werden.

Solltet Ihr diese Funktion nicht nutzen wollen, dann müssen die Variablen nicht erstellt werden. Die RFID Tags sind dann automatisch auf aktiv gestellt.

Mit PIN/RFID den Alarm aktivieren

Hier kann festgelegt werden, wie der Alarm geschärft werden soll.

Solltet Ihr also die Möglichkeit präferieren, nur mit einem PIN-Code den Alarm zu aktivieren, dann muss die Option auf 1 gesetzt werden. In diesem Fall kann dann der Alarm nur mit dem PIN aktiviert werden und mit dem RFID-Tag deaktiviert werden. Solltet Ihr es bevorzugen ohne PIN die Alarmanlage zu steuern, dann müssen die Optionen auf 0 gesetzt werden.

Eigene Aktionen ausführen

In der Zeile 27 legt Ihr fest, ob zu bestimmten Zeitpunkten Aktionen ausgeführt werden sollen.

Damit ist es zum Beispiel möglich beim erfolgreichen Schärfen/Entschärfen kurz die Sirene einzuschalten und dies als akustisches Signal zu nutzen. Ein weitere Möglichkeit wäre alle nicht benötigten Verbraucher stromlos zu setzen, um die Energie zu sparen. Hier kann grundsätzlich erstmal alles frei eingetragen werden. Die Befehle können in die Funktionen ab Zeile 59 eingetragen werden. Es gibt dabei 3 Zeitpunkte, welche unterschieden werden:

  1. actionsbeforeArmed(): Nach der Aktivierung des Alarms; der Alarm aber noch nicht aktiv ist, da eine Delay-Time vorhanden ist
  2. actionsafterArmed(): Nachdem der Alarm endgültig aktiv ist
  3. actionsafterDisarmed(): Nachdem der Alarm entschärft wurde

In die Funktionen kann beliebiger LUA-Code eingetragen werden.

Eigene Aktionen in die Funktion eintragen

RFID/PIN

Kommen wir zu dem wichtigsten Teil des Skriptes. Hier werden alle Informationen zu den einzelnen Tags und dem PIN hinterlegt. (Zeile 30-34)

Um die Informationen von dem RFID Tag abrufbar zu machen, drückt Ihr auf eurem Tag Reader die Home/Away-Taste, wartet 1 Sekunde, bis die LED dauerhaft leuchtet und haltet dann den Tag davor. Es wird mit einem kurzen Signal bestätigt, dass das Tag von dem Reader erkannt wurde. Um nun das Byte-Array zu erhalten, könnt Ihr die Szene manuell ausführen. Im Debug findet Ihr dann alle notwendigen Informationen.

Der PIN-Code kann genauso abgefragt werden. Dazu einfach wieder die Home/Away-Taste betätigen und innerhalb einer Sekunde anfangen den Code einzutippen. Nach dem Eintippen mit Enter bestätigen und die Szene manuell ausführen.

ACHTUNG: Die Variable "widget" muss dazu auf false gesetzt sein, sonst wird die Szene normal ausgeführt

Widget-Support

Mit der App-Version 2.8 gibt uns Fibaro die Möglichkeit sogenannte Widgets zu nutzen. Dies sind kleine Icons in der Mitteilungszentrale von iOS. Hier können, ohne die eigentliche App zu starten, 4 Szenen ausgeführt werden. Da bietet es sich natürlich an, dies auch in diesem Skript umzusetzen.

RFID Widget

Hier kann der Wert auf "true/false" gesetzt werden. Wenn der Wert auf "true" steht, dann wird beim manuellen Ausführen der Szene geprüft, welchen Status die Variable "PresentState" hat und dort dann das jeweilige Gegenteil (Also "Home" wird zu "Away" und der Alarm aktiv) gesetzt. Die Sensoren werden dabei dann natürlich auch geschärft/entschärft. Dies hat den Vorteil, dass Ihr die Szene bereits ausführen könnt, ohne den physischen Zugriff auf den RFID Tagreader zu besitzen. So ist die Tür bereits aufgeschlossen, wenn Ihr vor eurer Tür steht. Es ist daher grundsätzlich möglich, das Skript auch ohne vorhandenen Tagreader zu nutzen und den Alarm mit der Szene zu aktivieren/deaktivieren.

doorlock

Kommen wir zur nächsten Option: dem doorlock. Hier könnt Ihr auswählen, ob Ihr ein doorlock nutzen wollt. Dazu könnt Ihr die Variable doorlock auf "true" setzen. Solltet Ihr die Option aktivieren, dann wird immer, wenn Ihr den Alarm entschärft, das Türschloss aufgeschlossen und wenn Ihr den Alarm aktiviert zugeschlossen. Die ID des doorlocks muss natürlich auch eingetragen werden.

Zusätzlich besteht die Möglichkeit das doorlock ohne Schlüssel aufzuschließen, wenn die Variable "PresentState" den Status "Home" hat. Dies kann entweder mit einem PIN-Code oder alternativ mit den RFID-Tags erfolgen. Dies könnt Ihr in den folgenden Optionen einstellen. Solltet Ihr mit einem PIN aufschließen wollen, dann bitte die Option "doorlock_open" auf "pin" setzen. Ansonsten hier bitte "rfid" eintragen. Mit dem "open_code" könnt Ihr im oben genannten Fall die Tür aufschließen, diesen könnt Ihr in der Variable frei vergeben.

Ab der Zeile 52 könnt Ihr festlegen mit welchen RFID Tags es möglich sein soll, die Tür ohne Schlüssel zu öffnen, wenn bereits jemand zu Hause ist. Solltet Ihr dies nutzen wollen, dann muss der Wert auf 1 gesetzt werden. Soll dies nicht funktionieren, dann den Wert auf 0.

ACHTUNGEs ist natürlich NICHT möglich, mit einem RFID Tag den Alarm zu aktivieren und gleichzeitig die Tür damit aufzuschließen. Parallel dazu kann auch nicht mit EINEM PIN-Code der Alarm aktiviert werden und mit dem gleichen PIN-Code die Tür aufgeschlossen werden. Um diese Abhängigkeiten zu prüfen könnt Ihr die Szene im ausgeschalteten Widget-Modus ausführen. Das Skript prüft dann die oben erwähnten Abhängigkeiten:

Prüfung der Abhängigkeiten

Diese Prüfung solltet Ihr in jedem Fall vor der ersten Inbetriebnahme durchführen. Sofern dort kein roter Debug erscheint, könnt Ihr das Skript in eurer vorliegender Konfiguration nutzen.

Das Skript könnt Ihr euch hier herunterladen. Das Skript liegt in Form einer Zip-Datei vor. Ihr könnt diese entpacken, woraufhin Ihr eine LUA-Datei vorfindet. Diese könnt Ihr mit dem Editor öffnen und in euer HC2 kopieren. Danach sollten alle notwendigen Einstellungen vorgenommen werden und dann ein umfangreicher Test durchgeführt werden.

Die weiteren Anregungen in den vergangenen Artikeln haben wir natürlich nicht vergessen und versuchen diese auch noch umzusetzen. Und nun viel Spaß bei der Umsetzung. Würden uns freuen, wenn Ihr eure Erfahrung oder auftretende Fehler mit dem Skript in den Kommentaren teilt. :)

Die mobile Version verlassen