Z-Wave-ZIP WT-RFID Keypad: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Anpassung an aktuelle Modul-Fassung)
(FHEM(TM))
Zeile 32: Zeile 32:
Sollte der Code bzw. der RFID-Tag angenommen werden, so wird über die COMMAND_CLASS_ALARM_V2 eine "Lock" bzw. "Unlock" Nachricht verschickt, wodurch ein Sicherheitssystem ein- oder ausgeschaltet werden kann. Die Übertragung dieser Nachricht ist nicht gesondert gesichert oder verschlüsselt, die COMMAND_CLASS_SECURITY wird von dem Gerät nicht unterstützt.
Sollte der Code bzw. der RFID-Tag angenommen werden, so wird über die COMMAND_CLASS_ALARM_V2 eine "Lock" bzw. "Unlock" Nachricht verschickt, wodurch ein Sicherheitssystem ein- oder ausgeschaltet werden kann. Die Übertragung dieser Nachricht ist nicht gesondert gesichert oder verschlüsselt, die COMMAND_CLASS_SECURITY wird von dem Gerät nicht unterstützt.


== Hinweise zum Betrieb mit Fhem ==
== Hinweise zum Betrieb mit FHEM ==
=== Allgemeine Informationen zum Betrieb mit FHEM ===
=== Allgemeine Informationen zum Betrieb mit FHEM ===
Das Gerät verwendet die folgenden Z-Wave Befehlsklassen (COMMAND_CLASS)
Das Gerät verwendet die folgenden Z-Wave Befehlsklassen (COMMAND_CLASS)

Version vom 20. Januar 2017, 11:32 Uhr

Z-Wave-ZIP WT-RFID Keypad
todo
Allgemein
Protokoll Z-Wave
Typ Eingabe, Sender und Empfänger
Kategorie Z-Wave
Technische Details
Kommunikation Funk 868MHz
Kanäle
Betriebsspannung 3V
Leistungsaufnahme keine Herstellerangaben
Versorgung 2xAA 1,5V Batterien
Abmessungen 63x63x19mm
Sonstiges
Modulname Z-Wave
Hersteller zipato

Z-Wave-ZIP WT-RFID Keypad ist ein Eingabeterminal mit Mini-Keypad und eingebautem RFID-Leser, welches dazu geeignet ist, ein Sicherheitssystem über Z-Wave Kommunikation ein-/ und auszuschalten.

Features / Funktionen

Die Haupteigenschaften des Zipato WT-RFID Keypad sind

  • Einlesen von RFID Tags (Protokolle: ISO15693, ISO18000-3, Tag-itTM, RFiD)
  • Eingabe von Tastencodes über Mini-Keypad (Zahlen 1-4, Enter)
  • Tasten für "Home" und "Away" zur Kennzeichnung ob Ein- oder Ausgeschaltet werden soll
  • Kontroll LED, Summer
  • Batteriebetrieb
  • Wandmontage (nur für Innenbereich geeignet, Kunststoffgehäuse nicht Vandalensicher)
  • Kommunikation über Z-Wave Protokoll

Prinzipielle Funktionsweise:

Betätigen der Taste "Home" oder "Away", danach Eingabe eines 4-10 stelligen Codes und Bestätigung mit Enter ODER Einlesen eines RFiD-Tags.

Sollte der Code bzw. der RFID-Tag angenommen werden, so wird über die COMMAND_CLASS_ALARM_V2 eine "Lock" bzw. "Unlock" Nachricht verschickt, wodurch ein Sicherheitssystem ein- oder ausgeschaltet werden kann. Die Übertragung dieser Nachricht ist nicht gesondert gesichert oder verschlüsselt, die COMMAND_CLASS_SECURITY wird von dem Gerät nicht unterstützt.

Hinweise zum Betrieb mit FHEM

Allgemeine Informationen zum Betrieb mit FHEM

Das Gerät verwendet die folgenden Z-Wave Befehlsklassen (COMMAND_CLASS)

  • Class: 0x85 COMMAND_CLASS_ASSOCIATION
  • Class: 0x80 COMMAND_CLASS_BATTERY
  • Class: 0x84 COMMAND_CLASS_WAKE_UP
  • Class: 0x86 COMMAND_CLASS_VERSION
  • Class: 0x72 COMMAND_CLASS_MANUFACTURER_SPECIFIC_V2
  • Class: 0x71 COMMAND_CLASS_ALARM_V2
  • Class: 0x70 COMMAND_CLASS_CONFIGURATION
  • Class: 0x25 COMMAND_CLASS_SWITCH_BINARY
  • Class: 0x63 COMMAND_CLASS_USER_CODE

Diese Klassen werden aktuell (Stand 10.05.2015) von FHEM soweit unterstützt, wie es zum Betrieb des Gerätes nötig ist. Die Klasse 0x63 (COMMAND_CLASS_USER_CODE) wurde extra für dieses Gerät von Rudolf König implementiert.

Im folgenden wird das Gerät entweder als ZWave_ENTRY_CONTROL_<nodeID> oder allgemeiner als <device> bezeichnet, um es in den FHEM-Befehlen anzusprechen. Dargestellte Ausschnitte aus den Logfiles oder Konfigurationsdateien zeigen das Gerät als allerdings unter dem Namen "Zipato_EC".

Inklusion

Das Gerät wird bei der Inklusion und aktivierten autocreate vollautomatisch erkannt und als "ZWave_ENTRY_CONTROL_<nodeID>" in FHEM definiert. (Also z.B. als ZWave_ENTRY_CONTROL_8, falls das Gerät die nodeID 8 erhalten hat)

Assoziation

Die Gruppe 1 wird zwischen dem Gerät und dem Z-Wave-Controller (z.B. einem ZWave.me USB-Stick; hier mit NodeID 1) durch den folgenden Befehl erzeugt:

set <device> associationAdd 1 1

Konfiguration

XML-Dateien einbinden

Info green.pngAb Updatestand 15.05.2015 wird bei der Inklusion von Geräten automatisch der Befehl get <name> model ausgeführt.

Durch

get <device> model

wird die Definiton aus der externen XML-Datei mit weiteren Hilfetexten und Parametern in fhem eingefügt.

Nach aktuellem Stand (10.05.2015) der XML-Datei werden dabei die folgenden Informationen als Readings eingetragen:

  • model: Schlage Link Mini Keypad RFID
  • modelConfig: schlagelink/minikeypad.xml
  • modelId: 0097-6131-4501

Wakeup-Interval / "Always on" Modus / (Sabotage-Kontakt)

Das Gerät ist batteriebetrieben und schaltet sich nach Beendigung der Datenübertragung in einen Tiefschlafmodus, sobald vom Z-Wave-Controller keine weiteren Daten mehr vorliegen (wird vom Controller mit einer "WAKE_UP_NO_MORE_NOTIFICATION" mitgeteilt) um den Batterieverbrauch minimal zu halten.

Das Zeitinterval nach dem das Gerät automatisch wieder aufwacht und dem Controller die Chance gibt neue Befehle zu senden lässt sich mit

set <device> wakeupInterval <sekunden> 1

setzen. In diesem Fall würde die WAKE_UP_NOTIFICATION NUR an den Z-Wave-Controller (nodeID = 1) gehen. Soll die WAKE_UP_NOTIFICATION an alle Geräte gesendet werden, so kann für die nodeID 255 (Broadcast) angegeben werden. Default Wert für das Zeitinterval ist bei diesem Gerät 7200 Sekunden (2 Stunden).

Durch diesen Tiefschlafmodus ist es teilweise schwierig das Gerät einzurichten / neue Codes zu senden, da Befehle erst nach dem nächsten Aufwachen abgearbeitet werden.

Möglichkeiten zum umgehen der Einschränkungen durch den Tiefschlafmodus:

  • Zeitinterval auf z.B. 5 Sekunden heruntersetzen, hierdurch werden Befehle spätestens nach 5 Sekunden abgearbeitet. Nach Beendigung der Konfigurationsarbeiten sollte das Interval wieder hochgesetzt werden um die Batterien zu schonen.
  • "Always on" Mode setzen: In diesem Modus ist der Empfänger ständig an, allerdings funktioniert in diesem Modus die Eingabe von Codes bzw. das Einlesen von RFID-Tags am Gerät nicht! Daher müssten eventuell anzulernende RFID-Tags vorher ausgelesen werden. Der Modus wird durch eine "3" eingeschaltet und durch eine "1" wieder ausgeschaltet:
set <device> configTheMode 3
set <device> configTheMode 1
  • Nutzung des Sabotage-Kontaktes: Entfernt man das Gerät aus seiner Halterung, so wird ein Sabotage Kontakt ausgelöst, was mit einer Nachricht an den Controller gemeldet wird. Hierdurch wird auch eine "WAKE_UP_NOTIFICATION" erzeugt, innerhalb derer dann die aufgelaufenen und gespeicherten Befehle ausgeführt werden. Das kann man sich zu Nutze machen indem man das Gerät auf den Tisch legt (Sabotage Kontakt ist dann geschlossen) und kurz anhebt sobald man eine Datenübertragung benötigt.

Umgang mit Tastencodes / RFID-Tags

Das Gerät nutzt 4-10 stellige Tastencodes (aus den Zahlen 1-4) oder die in RFID-Chips gespeicherten Seriennummern zum Authentifizieren. Es können bis zu 255 solcher Codes (entweder Tastencode oder RFID-code) im Gerät gespeichert werden. Die Verwaltung dieser Codes wird über die COMMAND_CLASS_USER_CODE (0x63) durchgeführt.

Jedem Code ist ein "User Identifier" (UserID oder UID) sowie ein Status (User ID Status) zugeordnet. Die UserID kann von 1 bis 255 gewählt werden, 0 ist an dieser Stelle nicht gültig. Der Status ist entweder 0 (verfügbar/nicht aktiv) oder 1 (belegt/aktiv). Im Z-Wave Standard ist hier auch noch 2 "Reserved by administrator" vorgesehen, diese scheint bei dem Gerät aber nicht genutzt zu werden.

Codes werden intern IMMER 10 stellig abgelegt, sollte der Code kürzer sein, so wird mit 0x00 aufgefüllt. Dies gilt sowohl für Tastencodes, als auch für die RFID-Tags. Die Tastencodes werden als ASCII-Codes der Zahlen abgelegt, die Taste 1 wird als 0x31 eingetragen.

Im Auslieferungszustand des Gerätes ist kein Code aktiv, auch der mitgelieferte RFID-Tag ist nicht angelernt und kann daher nicht direkt zum schalten genutzt werden.

Die Befehle zum Umgang mit den Tastencodes / RFID-Tags nutzen wie schon beschrieben die COMMAND_CLASS_USER_CODE:

Auslesen einer UserID:

get <device> userCode <UserID>

Programmieren einer UserID:

set <device> userCode <UserID> <UserID-Status> <code>

<UserId>: 1-255, 0 ist nicht erlaubt

<UserID-Status>: 0 (verfügbar/nicht aktiv), 1 (belegt/aktiv), (2 reserviert für Administator)

Auslesen unbekannter RFID-Tags oder nicht angelernter Tastencodes

Wird ein unbekannter Tastencode oder ein unbekannter RFID-Tag am Gerät eingegeben, so sendet das Gerät einen Report mit:

  • UserID=0
  • UserID-Status=0
  • Code, 10 stellig

Bei unbekanntem Code wird keine Info gesendet ob "Home" oder "Away" gedruckt wurde. Der gemeldete Code wird in den Readings unter userCode angezeigt und kann dann zum Programmieren des Codes verwendet werden. Im Logfile wird die gesamte Nachricht als Rohwerte abgelegt.

Zahlenangaben im Logfile und im Reading sind in der Regel in hexadezimaler Form. Bei den Logfile Einträgen wurde Datum/Uhrzeit und Loglevel entfernt um die Einträge kurz zu halten.

Aktion: Home gedrückt, dann (unbekannten) Tag #1 davorgehalten
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0e630300008fa4d1542a0001040000
Reading: userCode id 0 status 0 code 8fa4d1542a0001040000
Aktion: Away gedrückt, dann (unbekannten) Tag #1 davorgehalten
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0e630300008fa4d1542a0001040000
Reading: userCode id 0 status 0 code 8fa4d1542a0001040000
Aktion: Home gedrückt, Tastencode 1234 und Enter eingegeben
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0e6303000031323334000000000000
Reading: userCode id 0 status 0 code 31323334000000000000

Tasten werden im ASCII-Code übertragen.

Anlernen/Abspeichern von RFID-Tags oder Tastencodes

Anlernen Tag #1:
fhem-Befehl: set Zipato_EC userCode 1 1 8fa4d1542a0001040000
Logfile: Sending stored command: 13080e630101018fa4d1542a00010400000508

Überprüfen durch Abfrage der UserID:

Auslesen UserID 1:
fhem-Befehl: get Zipato_EC userCode 1
Logfile: Sending stored command: 1308036302010508
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0e630301018fa4d1542a0001040000
Reading: userCode id 1 status 1 code 8fa4d1542a0001040000

Wenn der status = 1 ist und der code identisch ist, dann hat das abspeichern funktioniert.

Auslesen einer UserID die noch nicht gespeichert wurde:

Auslesen UserID 2:
fhem-Befehlt: get Zipato_EC userCode 2
Logfile: Sending stored command: 1308036302020508
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0e6303020031323334000000000000
Reading: userCode id 2 status 0 code 8fe37e542a0001040000

Hier ist der Status 0 (verfügbar/nicht aktiv), es ist jedoch ein Code angezeigt der aber nicht relevant ist. Es ist nicht möglich nur den Status zu wechsel ohne den Code mit zu übertragen. Daher wird auf jeden Fall immer der beim set Befehl gelieferte Code geschrieben/genutzt.

Tastencode 1234 auf UserID 2 anlernen:
fhem-Befehl: set Zipato_EC userCode 2 1 31323334000000000000
Logfile: Sending stored command: 13080e63010201313233340000000000000508
Auslesen UserID 2:
fhem-Befehl: get Zipato_EC userCode 2
Logfile: Sending stored command: 1308036302020508
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0e6303020131323334000000000000
Reading: userCode id 2 status 1 code 31323334000000000000

Der Code würde überschrieben und ist jetzt gültig.

Anzahl Codes

Laut einem Beitrag im Internet soll der Reader nur 10 Codes unterstützen, laut der Webseite von Zipato bis zu 20 Codes. Das Gerät wurde erfolgreich mit 32 verschiedenen Codes getestet und hat die Codes einwandfrei der UserID zugeordnet. Daher ist davon auszugehen, dass es keine Beschränkung in der Anzahl der Codes gibt und das somit 255 verschiedenen Codes abgelegt werden können.

Alarmmeldungen

Bei gültigem Code wird, je nachdem ob "Home" oder "Away" gewählt wurde, eine entsprechende Meldung gesendet:

Home + Tag #1:
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0a7105000000ff06060101
Reading: alarm AccessControl: Keypad Unlock Operation, arg 0101
Away + Tag #1:
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0a710500ff00ff06050101
Reading: alarm AccessControl: Keypad Lock Operation, arg 0101
Home + 1234 + Enter:
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:0a7105000000ff06060102
Reading: alarm AccessControl: Keypad Unlock Operation, arg 0102

Diese Events können jetzt z.B. mit einem Notify abgefragt werden um damit dann ein Sicherheitssystem zu schalten. Die UserID ist im letzten (hexadezimalen) Wert in "arg" erkennbar, der Tastencode in obigem Beispiel ist der UserID 2 zugeordnet. Die Bedeutung der davorstehenden 0x01 ist bisher nicht geklärt, vermutlich handelt es sich hier um den Status der UserID, welcher auch noch 02 für Admistrator sein kann.

Beim Öffnen des Gehäuse (Entfernen von der Rückplatte) wird ein Sabotagealarm ausgelöst:

Tamper alarm ausgelöst:
Logfile: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:09710500ff00ff070300
Reading: alarm HomeSecurity: Tampering, product covering removed, arg 00

Definition

Auszug aus der fhem.cfg mit der Definition des Gerätes:

define Zipato_EC ZWave e173b78d 8
attr Zipato_EC IODev ZWDongle_0
attr Zipato_EC classes ASSOCIATION BATTERY WAKE_UP VERSION MANUFACTURER_SPECIFIC ALARM CONFIGURATION SWITCH_BINARY USER_CODE
attr Zipato_EC room ZWave
attr Zipato_EC verbose 5
define FileLog_Zipato_EC FileLog ./log/Zipato_EC-%Y.log Zipato_EC
attr FileLog_Zipato_EC logtype text

Der Gerätename ist in diesem Beispiel Zipato_EC, der Loglevel steht zu Debug-Zwecken auf 5.

Logbeispiel

Die wichtigsten Logmeldungen sind in dem obigen Kapitel bereits aufgeführt.

Das Gerät erzeugt regelmäßig Einträge im Log wenn der Loglevel entsprechend hoch gesetzt wurde, in diesem Fall auf 4:

ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:08 ARG:028407

Hierbei handelt es sich um die beschriebene WAKE_UP_NOTIFICATION die das Gerät nach dem Aufwachen verschickt.

Bekannte Probleme

Aktuell sind noch keine Probleme oder Einschränkungen bekannt, das Gerät wird zur Zeit aber noch nicht produktiv eingesetzt.

Verwendete RFiD-Tags

Das Gerät ist für Tags nach:

  • ISO 15693
  • ISO 18000-3
  • Tag-itTM

spezifiziert. Als weiteres ist noch "RFiD" angegeben, was aber nicht wirklich hilft ein passenden Tag zu kaufen. Die "Standard"-Tags die es z.B. auf ebay oder bei Amazon gibt verwenden meistens ISO 14443 und sind nicht kompatibel. Bisher sind keine kompatiblen Tags ausser den originalen Hersteller-Tags bekannt.

Eine recht günstige Quelle ist z.B. hier im Online-Shop von intellihome.be in Belgien. Hier muss allerdings der Versand nach Deutschland (8 €) berücksichtigt werden. Hinweise zu kompatiblen günstigeren Alternativen sind willkommen.

Ähnliche/Baugleiche Geräte

Das hier dargestellte Gerät ist von Zipato, ein identisch aussehendes Gerät gibt es auch noch von BeNext. Es gibt wiedersprüchliche Aussagen ob die Geräte nun identisch sind oder nicht (z.B. Diskussion zum BeNext Tag Reader in der Zipato Community). Informationen zu dem Gerät von Schlage (von dem auch der Eintrag in der XML-Datei (siehe get <device> model) stammt findet sich im Netz nicht mehr. Schlage scheint dieses Gerät nicht mehr zu vertreiben.

Der eigentliche Hersteller des Gerätes scheint Wintop zu sein. In der Anleitung des Gerätes findet sich zum Thema COMMAND_CLASS_MANUFACTURER_SPECIFIC_V2 die folgende Passage: "Manufacturer ID of Wintop is 0x97, the ID of this product is 0x31". Auf der Webseite von Wintop findet man die Geräte leider nur sehr schwer, Informationen zu den dortigen Geräten erhalten anscheinend nur registrierte Händler mit Login. Die Geräte sind jedoch hier abgebildet, der online-shop von Wintop verlinkt dann hierhin.

Forumsdiskussion

Der Wiki-Artikel beruht auf den Informationen aus der Forumsdiskussion zur Implementierung des RFID-Readers bzw. der damals fehlenden Implementierung der COMMAND_CLASS_USER_CODE. (Forumsdiskussion)

Weblinks