Nachdem ich das Projekt für ein Codeschloss für den Keymatic/Abus Türschlossantrieb online gestellt hatte (Teil 1, Teil 2, Teil 3), sind viele Kommentare und Wünsche per Mail gekommen. Zwei Wünschen konnte ich entsprechen. Diese möchte ich hier kurz vorstellen und natürlich den Code als Version 1.1 zur Verfügung stellen.
1. Unterstützung weiterer und günstigerer Wiegand Leser
Ziel ist die Unterstützung von einer breiteren Auswahl an Wiegand Lesern. Positive Rückmeldungen habe ich konkret zum TDSI Optica und zum IK-500 von I-Keys (und natürlich läuft das ursprünglich verwendete Sebury sTouch auch weiterhin und bleibt mein Favorit).
Mit dieser Codeänderung sollte hoffentlich fast jedes Codeschloss gehen (ich verspreche aber nix verbindlich). Wer erfolgreich weitere Modelle testet, kann dies gerne als Kommentar vermerken.
Viele Wiegand Codeschlösser geben bei einer Codeeingabe nur die einzelnen Tastendrücke als 4-Bit Wiegand Codes aus. Dies trifft insbesondere auch auf günstigere Varianten zu. Bei den „besseren“ Schlössern kann man typischerweise konfigurieren, ob die Codeeingaben als 26 oder 37 Bit Wiegand Codes weitergegeben werden sollen. In diesem Fall sammelt das Codeschloss die einzelnen Tastendrücke ein und erzeugt eine 26 oder 37-Bit Zahl daraus.
Bei der 4-Bit Variante werden einfach die Tastendrücke als 4-Bit Zahl kodiert und einzeln gesendet. Dabei sind 0..9 jeweils durch ihren numerischen Wert repräsentiert; * ist eine 10 und # eine 11. Mit der Version 1.1 wird diese 4-Bit Codeeingabe nun unterstützt. Das Format wird automatisch erkannt.
Die Bedienung erfolgt so:
* startet ein Codeeingabe bzw startet sie neu falls man sich vertippt hat.
# schließt die Codeeingabe ab
Den anfänglichen * kann man auch weglassen. 10 Sekunden nach dem letzten Tastendruck wird die Codeeingabe in jedem Fall neu gestartet.
Weiterhin wird ein Spezialfall unterstützt. Bei dem TDSI Optica kommen aus irgendeinem Grund die 4-Bit Eingaben invertiert an. Warum auch immer das der Fall sein mag, invertieren ist nicht schwer und nochmal invertieren hebt’s auf. Für dieses Codeschloss und für eventuell auch andere muss man in der Wiegand_Controller.ino in der folgende Zeile die 0 durch eine 1 ersetzen:
#define INVERT4BIT 1 // invert 4 Bit entry (some Wiegand devices need this)
Wenn es also nicht klappt und die Tasten im seriellen Monitor falsch angezeigt werden: Einfach mal mit der Invertierung probieren.
2. Bei mehrfacher Fehleingabe einen externen Pin schalten
Wenn zu oft ein falscher Code eingegeben wurde (Default: 5), dann wird das Codeschloss für eine gewisse Zeit (Default: 180s) gesperrt. Dies soll verhindern, dass jemand mit einer Brute-Force Attacke Zugang bekommt.
In der neuen Version 1.1 wird in diesem Fall zusätzlich der Pin 6 (PINWRONGCODE in HandelCodes.ino) auf high gezogen. Der Pin wird in der ursprünglichen Schaltung nicht benutzt, so dass diese Anpassung keine Hardware Änderung erfordert.
Dadurch lassen sich zusätzliche Aktionen triggern, wie eine Warnlampe oder das senden einer SMS mit Hilfe eines RFduinos usw.
Hier gibt es den Arduino Code: Wiegand_Controller_V.1.1
Upgrade auf die Version 1.1:
Wer von der ersten Version auf die 1.1 upgraden will kann das problemlos tun. Das Speicherformat im EEProm wurde nicht verändert, so dass alle Einstellungen erhalten bleiben.
In Teil 5 geht es dann um die Unterstützung der neueren Version des Türschlossantriebs namens Keymatic eQ-3.