Arduino: 26-Bit-Wiegand-Leser (3-fach) 17900020
Arduino: 26-Bit-Wiegand-Leser (3-fach)
▸ E1Aktiviert1FunktionA1 ▸
▸ E2KO ↔ DatenBlockiertA2 ▸
▸ E3KO ↔ IDFehlerA3 ▸
▸ E4KO ↔ CodeKlartextA4 ▸
▸ E5KO ↔ LesegerätCode 1A5 ▸
▸ E6KO ↔ FunktionCode 2A6 ▸
▸ E7KO ↔ NameCode 3A7 ▸
▸ E8BefehlProgrammiermodusA8 ▸
▸ E9Klartext: Lesegeräte(keins);Lesegerät 1;Lesegerät 2;Lesegerät 3DatensätzeA9 ▸
▸ E10Klartext: Funktionen(keine);Funktion 1;Funktion 2VerbindungA10 ▸
▸ E11Klartext: GültigGültigen Eintrag {ID} ({CODE} / {NAME}) an Lesegerät {DEVICE} ({DEVICENAME}) erkannt -> Funktion {FUNCTION} ({FUNCTIONNAME})Klartext: GültigA11 ▸
▸ E12Klartext: UngültigUngültigen Eintrag {ID} ({CODE} / {NAME}) an Lesegerät {DEVICE} ({DEVICENAME}) erkannt -> Funktion {FUNCTION} ({FUNCTIONNAME})Klartext: UngültigA12 ▸
▸ E13Klartext: UnbekanntUnbekannten Code {CODE} an Lesegerät {DEVICE} ({DEVICENAME}) erkanntKlartext: UnbekanntA13 ▸
▸ E14Klartext: FehlerEinlesefehler an Lesegerät {DEVICENAME} ({DEVICE})Klartext: FehlerA14 ▸
▸ E15Blockieren (s)30 
▸ E16Programmiermodus (s)60 
▸ E17Schnittstelle/dev/ttyUSB0 
▸ E18Logging0 
Dieser Baustein kommuniziert mit einem Arduino, der mit dem entsprechenden Sketch "26-Bit-Wiegand-Leser" programmiert wurde. Der Sketch ist im Abschnitt [INFO] des Quelltextes dieses Bausteins hinterlegt und muss zunächst auf einen Arduino übertragen werden. Der Arduino dient als Schnittstelle zwischen EDOMI und bis zu drei 26-Bit-Wiegand-Lesegeräten (z.B. RFID-Leser) und ist wie im Sketch definiert entsprechend mit den Lesegeräten zu verbinden (Wiegand-Datenleitungen D0 und D1). Eingelesene Codes (z.B. RFID-Transponder) werden über eine serielle Verbindung (i.d.R. per USB) vom Arduino an diesen Baustein übermittelt und ausgewertet. Auf diese Weise können z.B. RFID-Transponder komfortabel über eine Visualisierung verwaltet und hinzugefügt werden, zudem kann z.B. beim Einlesen eines gültigen Transponders entsprechend reagiert werden (z.B. Triggern einer weiteren Logik zur Türöffnung, etc.). Mit E1≠0 wird der Baustein aktiviert, mit E1=0 deaktiviert. Bei der Aktivierung wird zunächst die serielle Verbindung zum Arduino aufgebaut (über die an E17 definierte Schnittstelle, z.B. "/dev/ttyUSB0"), anschließend wird A10 auf 1 gesetzt. Der Verbindungsaufbau wird solange wiederholt, bis eine Verbindung zustande gekommen ist oder E1=0 gesetzt wird. Die Verbindung wird zudem zyklisch überwacht und ggf. neu aufgebaut. Sobald die Verbindung zum Arduino verloren geht (auch durch Deaktivierung des Bausteins) wird A10 auf 0 gesetzt.

Grundlegende Funktionsweise

Der Baustein unterscheidet grundsätzlich zwei Betriebsmodi:

Normaler Betrieb

Im normalen Betrieb des Bausteins übermittelt der Arduino einen eingelesenen Code (z.B. eines RFID-Transponders) und das entsprechende Lesegerät (z.B. einen RFID-Leser). Der Baustein ermittelt dann, ob der Code und das Lesegerät mit einem Datensatz korrespondieren und gibt ggf. die im Datensatz hinterlegte Funktions-ID an A1 aus (weitere Ausgänge werden ggf. ebenfalls aktualisiert). Mit einem nachgeschalteten Vergleicher kann nun auf diese Funktions-ID reagiert werden (z.B. Türöffnung).

Programmiermodus

Im Programmiermodus können neue Datensätze angelegt oder bestehende verändert bzw. gelöscht werden. Beim Einlesen eines Codes im Programmiermodus werden alle entsprechenden Datensätze hervorgehoben (siehe A9). Während der Programmiermodus aktiv ist erfolgt keine Ausgabe an A1 (und weiteren Ausgängen), um eine unerwünschte Auslösung von Funktionen zu vermeiden.

Konfiguration der seriellen Verbindung

Die Kommunikation mit dem Arduino erfolgt über eine serielle Verbindung (i.d.R. über USB). Die Konfiguration der Parameter (u.a. 9600 Baud) erfolgt automatisch durch diesen Baustein.

Dauerhafte Zuweisung eines USB-Ports

Bei Bedarf sollte der physische USB-Port dauerhaft (per UDEV-Regel) mit dem Arduino verknüpft werden, damit es bei der Verwendung von mehreren Arduino-Projekten nicht zu einer Zuweisung eines zufälligen USB-Ports kommen kann. Mit den folgenden Schritten (z.B. per SSH) wird auf dem EDOMI-Server ein eigener Name für den entsprechenden USB-Port definiert ("/dev/<NAME>"): Der entsprechende Arduino ist nun dauerhaft an dem zugewiesenen physischen Port unter "/dev/<NAME>" erreichbar und muss selbstverständlich stets an genau diesem USB-Port angeschlossen werden.

Eingänge

E1: 1=Baustein aktivieren, 0=Baustein deaktivieren E2: an diesem Eingang wird ein remanentes internes KO vom Typ "Variant" erwartet, das als Datenspeicher für sämtliche Codes (und weitere Metadaten) dient E3..E7: diese Eingänge werden nur im Programmiermodus berücksichtigt E8: dieser Eingang ruft einen Datensatz ab, aktiviert den Programmiermodus oder triggert (bei aktiviertem Programmiermodus) einen Befehl

Klartext-Konfiguration

Die Eingänge E9..E14 definieren einige Strings, die für eine lesbare Ausgabe an einigen Ausgängen verwendet werden. Wichtig: Änderungen an diesen Eingängen werden nur beim Start des Bausteins (E1=1) übernommen. Änderungen im laufenden Betrieb des Bausteins werden ignoriert. Der Eingang E9 definiert die Namen der Lesegeräte 1..3: Der Eingang E10 definiert die Namen der Funktionen 1..∞: Die Eingänge E11..E14 definieren jeweils einen Klartext-String, der ggf. an A4 und A11.A14 ausgegeben wird. Wird einem Eingang kein String zugewiesen (der Eingang ist also =[leer]), erfolgt für dieses Ereignis keine entsprechende Klartext-Ausgabe. Für diese Strings stehen jeweils die folgenden Variablen zu Verfügung:

Einstellungen

Wichtig: Änderungen an diesen Eingängen werden nur beim Start des Bausteins (E1=1) übernommen. Änderungen im laufenden Betrieb des Bausteins werden ignoriert. E15: 0=nicht blockieren, 1..∞=Blockierzeit in Sekunden (nach dem Einlesen eines unbekannten Codes (d.h. der Code ist unbekannt, ungültig oder es ist keine Funktion zugewiesen) kann das weitere Einlesen bei Bedarf blockiert werden) E16: 0=Programmiermodus nicht automatisch beenden, 1..∞=Zeit in Sekunden bis der Programmiermodus automatisch beendet wird E17: Pfad zur seriellen Schnittstelle, z.B. "/dev/ttyUSB0" (Hinweise unter "Konfiguration der seriellen Verbindung" beachten) E18: Protokollierung (Debug): ≠0=aktivieren (im Individual-Log "LBS17900020-<Instanz-ID>"), 0=deaktivieren

Ausgänge

A1: Funktions-ID des zuletzt eingelesenen Datensatzes (nur im normalen Betrieb) A2: wenn ein ungültiger, unbekannter oder funktionsloser (Funktions-ID=0) eingelesen wurde, wird A2 ggf. auf die aktuelle Blockierzeit gesetzt (nur im normalen Betrieb) A3: 1..3 = das Einlesen an einem Lesegerät 1..3 war fehlerhaft (nur im normalen Betrieb) A4: Klartext-Ausgabe aller an E11..E14 definierten Ereignisses (nur im normalen Betrieb) A5..7: letzter eingelesener Code an Lesegerät 1, 2 bzw. 3 (nur im normalen Betrieb) A8: Programmiermodus A9: Ausgabe sämtlicher Datensätze als speziell formatiertem String A10: Status der seriellen Verbindung zum Arduino (s.o.): 1=Verbindung erfolgreich hergestellt, 0=keine Verbindung (bzw. Baustein ist deaktviert) A11..A14: Klartext-Ausgabe des an E11..E14 definierten Ereignisses (nur im normalen Betrieb)