ZME_KFOB_S / ZME_KFOB2

Begonnen von rudolfkoenig, 13 Mai 2015, 00:04:41

Vorheriges Thema - Nächstes Thema

krikan

Hier hat der openzwave-Entwickler Justin allgemein zu SECURITY geschrieben https://groups.google.com/d/msg/openzwave/jIaj0PZ_llc/jOxWlq7I6AYJ . Das stammt aber wohl aus der Zeit vor ZWave+.

@Andreas:
Neben den Dir bekannten SDSxyx-Dokus und den anderen im Wiki verlinkten Quellen, habe ich zum Verständnis der Zusammenhänge bei ZWave nur noch das ZWave-Buch von Paetz. Muss aber gestehen, dass ich das noch nicht von Anfang bis Ende durch habe; es hilft aber oft. Man muss nur bedenken, welche Funktion Paetz hat.

ZitatLEISE kann man die denn stellen? Evtl. könnte mir das Ding auch gefallen... Kann man die auf leisester Stufe als Voralarm nutzen der nicht gleich das ganze Haus aufweckt? Und kann man dann jederzeit auf lauten Alarm umstellen?
Die Lautstärke (und "Melodie") kann man per Config-Parameter einstellen. Lautstärkeunterschiede versuche ich morgen zu testen; bisher habe ich es immer auf max. stehen und das ist LAUT.

A.Harrenberg

#31
Hi Christian,
Zitat von: krikan am 24 Mai 2015, 19:47:41
Hallo Rudi,
KFOB-S lässt sich in openzwave (dieser Branch: https://github.com/OpenZWave/open-zwave/tree/Issue-352-Security) mit SECURITY einbinden. Anliegend Log über Inklusion (mit Network Key: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10), manuellem Wakeup und ein bei Tastendrücken.

Secure Inklusion war nur nach Factory Reset und anschließenden Druck auf eine einzelne Taste (siehe Anleitung Seite 1 unter "Installation Guideslines") möglich. Eine secure-Inklusion durch Einschalten des Management Modes und Druck auf Taste 1 (nach vorheriger Exklusion) habe ich nicht hinbekommen.
wow, das hat Dir dann wohl keine Ruhe gelassen... ,-)

Ich habe mal kurz in die Datei reingeschaut, auf Anhieb aber noch nicht viel davon verstanden. Aber eine Frage hätte ich schon mal, was ist Node 1 und Node 6? Der KFOB wird ja unter Node 2 eingebunden...

EDIT: Die Frage nach Node 1 ziehe ich zurück... ,-) Node 6 bleibt aber weiter offen...

Aber das sind jetzt "mal eben" 1100 Zeilen, da muss man erst mal die interessanten Stellen finden und rauspicken. Ich denke mal Rudi und Du ihr seid da wesentlich effektiver als ich, aber ich schau da trotzdem noch mal rein und versuche nachzuvollziehen was da passiert. Kann das dann ja mit euren Erkenntnissen abgleichen ,-)

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

krikan

Zitat von: A.Harrenberg am 24 Mai 2015, 20:19:41
Ich habe mal kurz in die Datei reingeschaut, auf Anhieb aber noch nicht viel davon verstanden. Aber eine Frage hätte ich schon mal, was ist Node 1 und Node 6? Der KFOB wird ja unter Node 2 eingebunden...
1 ist der Controller.
6 ist Fehlversuch. Warum 6 erschließt sich mir leider nicht, da der Controller vorher zurückgesetzt war.

krikan

Zitat6 ist Fehlversuch. Warum 6 erschließt sich mir leider nicht, da der Controller vorher zurückgesetzt war.
Gegen Fehlversuch spricht nach nochmaliger Durchsicht, dass 6 auch nach 2 noch auftaucht. Verstehe ich gerade nicht.

A.Harrenberg

Hi,

Zitat von: krikan am 24 Mai 2015, 20:40:59
Gegen Fehlversuch spricht nach nochmaliger Durchsicht, dass 6 auch nach 2 noch auftaucht. Verstehe ich gerade nicht.
macht nix, da tauch zwischendurch ja auch noch eine Node 15 auf ;-)

Soweit ich mich gerade durchgearbeitet habe wird bein Include schon noch SECURITY gemeldet.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

krikan

Gleicher Test noch einmal; Log wieder angehängt:
Es gibt wieder für mich nicht verständliche Nodes: 6, 15, 22, 32 45 146, 156, 172 und 215.
In der "richtigen" Nodeliste von Openzwave tauchen die nicht auf; Bedeutung?
Inkludiere jetzt mal die Sirene und liefer das Log.

krikan

Anliegend openzwave-Log für secure-Inklusion von DSD31.

Nach Durchsicht openzwave-Mailinglist dürften die meisten SECURITY-Geräte mit openzwave funktionieren. Probleme gab es wohl noch mit den ZWave+-Geräten, die ich hier ausschließlich eingebunden habe. Der von mir genutzte Branch soll in Kürze im Master übergehen; wird aber derzeit von den auf openzwave aufsetzenden Programmen teilweise schon eingesetzt. Dürfte also einen gewissen Reifegrad erlangt haben.

rudolfkoenig

Ich habe angefangen KFOB-S-SECURITY 2.Test.txt zu lesen. Aufgefallen:

- bei der Initialisierung der Dongle werden ueberfluessig erscheinende Calls wie GET_RANDOM/SET_TIMEOUTS abgesetzt.
- bei der Inclusion wird dasselbe Befehl/Parameter wie im FHEM Modul gesendet (addNode on), allerdings meldet (um 22:18:45.075) Node 2 auch die Klasse SECURITY zurueck (0x98). Vmtl sind die vorherigen Befehle gar nicht so ueberflussig.
- danach geht es los mit dem Schluesselspiel: SchemeGet,SchemeReport,NetworkKeySet,NonceGet,NonceReport.
- ein anschliessendes GET_NODE_PROTOCOL_INFO meldet aber security false. (?)
- danach wird NO_OP(?), wakeupInterval get/set, model get gesendet, scheinbar alles ohne Verschluesselung.
- das naechste Befehl wird verschluesselt gesendet/empfangen, verstehe es aber noch nicht so gut, da ich security nicht kenne.

-> Als naechstes muessen wir mMn beim Controller-Initialisieren set_timeout/get_random absetzen, und schauen, ob es bei der Inklusion SECURITY gemeldet wird.

A.Harrenberg

Hi Krikan, hi Rudi,

uff, Information overflow...
Ich habe Schwierigkeiten die Nachrichten von OpenZWave zu decodieren/verstehen...
Laut SDS10243-2 ist das Frame Layout

Home ID [..]
Source Node ID
Frame Header [..]
Length
Destination address [..]
Data byte 0-x
[..]
Checksum

Wobei ich die [..] so deute das hier mehrere Bytes stehen können. Für den Frame Header und die Destination address kann ich das nachvollziehen, aber für die Home ID??

Hier mal als Beispiel die Zeile 39 aus dem ersten File von Krikan
2015-05-24 19:20:35.914 Info, Node002, Sending (Security) message (Callback ID=0x0d, Expected Reply=0x04)
SecurityCmd_SchemeGet (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x98, 0x04, 0x00, 0x25, 0x0d, 0x53

"Wo" im Transfer Layer befindet man sich hier? Was ich "rausfischen" kann ist:

0x01, Node ID?
0x0a, Länge
0x00, ??
0x13, 'ZW_SEND_DATA'??
0x02, ?? Destination Node ??
0x03, ?? Länge ??
0x98, COMMAND_CLASS_SECURITY
0x04, SECURITY_SCHEME_GET
0x00, Supported Security Schemes (0=normal Power)
0x25, ??
0x0d, ?? Callback ID ??
0x53 Checksum?

Das kann ich aber nicht dem Format des Transfer Layers zuordnen. Für was stehen die ganzen anderen Werte? Scheme_Get hat z.B. nur einen Parameter, in diesem Fall 0x00, für was steht dann die 0x25?
Und was hat es mit dieser CallbackID auf sich? Kann man hier Nachrichten "nummerieren" und die Antwort enthält diese Nummer?
Für einen "Schubs" in die richtige Richtung wäre ich sehr dankbar. Ohne richtige Doku ist das schon recht mühselig, gibt es da Doku ich mir ansehen kann um das zu verstehen? Bisher habe ich da leider so gut wie gar nichts im Netz gefunden.

Danke,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

A.Harrenberg

Hallo Rudi,

Zitat von: rudolfkoenig am 25 Mai 2015, 09:35:38
Ich habe angefangen KFOB-S-SECURITY 2.Test.txt zu lesen. Aufgefallen:

- bei der Initialisierung der Dongle werden ueberfluessig erscheinende Calls wie GET_RANDOM/SET_TIMEOUTS abgesetzt.
- bei der Inclusion wird dasselbe Befehl/Parameter wie im FHEM Modul gesendet (addNode on), allerdings meldet (um 22:18:45.075) Node 2 auch die Klasse SECURITY zurueck (0x98). Vmtl sind die vorherigen Befehle gar nicht so ueberflussig.
- danach geht es los mit dem Schluesselspiel: SchemeGet,SchemeReport,NetworkKeySet,NonceGet,NonceReport.
- ein anschliessendes GET_NODE_PROTOCOL_INFO meldet aber security false. (?)
- danach wird NO_OP(?), wakeupInterval get/set, model get gesendet, scheinbar alles ohne Verschluesselung.
- das naechste Befehl wird verschluesselt gesendet/empfangen, verstehe es aber noch nicht so gut, da ich security nicht kenne.

-> Als naechstes muessen wir mMn beim Controller-Initialisieren set_timeout/get_random absetzen, und schauen, ob es bei der Inklusion SECURITY gemeldet wird.

zu den Timer steht in der Doku das die auf jeden Fall ab "Nonce report" gesetzt werden müssen, der Timer für "Nonce get" ist nur "recommended". Für die Inclusion sind da aber auch 10 sekunden Timer angegeben. Falls das ganze an irgendeiner Stelle mal länger als 10 sekunden für einen der Schritte benötigt wird die "secure Inclusion" abgebrochen.

SDS11060-7 S. 238 (250 im PDF) und Grafik auf S. 240 (252 im PDF).

Ich würde das aber so verstehen als ob die Timer da nicht gesetzt werden müssen. Aber vielleicht ist das ja eine Änderunge in ZWavePlus?

Security wird auch im ersten File (2015-05-24 19:20:34.745) gemeldet. Meine Vermutung war ja, das bei der Inclusion Security im NIF gemeldet wird, wenn das "secure Inclusion" fehlschlägt die Klasse danach aber nicht mehr gemeldet wird.

Ist denn wirklich sicher das der KFOB direkt bei der Inclusion mit fhem das Security nicht sendet? Oder wird das evtl. erst nach der Inclusion noch mal abgefragt?

Der KFOB-S unterstützt security auch nicht für alle Klassen, sondern nur für diese: (laut Pepper)
Multi Command Encapsulated    0x8F
Central Scene    0x5B
Basic    0x20
Scene Activation    0x2B
Multilevel Switch    0x26
Door Lock    0x62
Multi Channel    0x60
, alle anderen sind "non Secure".

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

krikan

Zitat von: rudolfkoenig am 25 Mai 2015, 09:35:38
- bei der Initialisierung der Dongle werden ueberfluessig erscheinende Calls wie GET_RANDOM/SET_TIMEOUTS abgesetzt.
Solche Initialisierungen macht zway auch. Habe ich nach meiner Erinnerung im zway-Log von Micha80 aus einem anderen Thread gesehen. Würde ich mir im Detail anschauen, wenn ich wieder zu Hause bin.

krikan

#41
Zitat von: A.Harrenberg am 25 Mai 2015, 09:38:15
Und was hat es mit dieser CallbackID auf sich? Kann man hier Nachrichten "nummerieren" und die Antwort enthält diese Nummer?
Beim Verschicken der Nachricht übergibt man eine laufende Callback-ID. Die passende Antwort enthält dann die Callback-ID als Zuordnungskriterium, da die irgendwann kommt. Bei meinen Forschungen zu den Explorer Frames habe ich noch Probleme mit den Callback-IDs, da (Vermutung) Fhem keine fortlaufende Nummer vergibt.

ZitatDer KFOB-S unterstützt security auch nicht für alle Klassen, sondern nur für diese: (laut Pepper)
Vorsicht, da das eine andere Version des KFOB-S ist. Die hat SECURITY im NIF und dass wir die SECURITY im NIF nicht erkennen, obwohl es überall sonst in FHEM funktioniert ist ungewöhnlich. Laut http://www.intellihome.be/en/z-wave-usb-stick.html und der Angabe dort "Extended support Node Information Frame (up to 20 Command Classes possible)" ist aber nichts unmöglich. Kann dazu aber keine weiteren Infos im Netz finden.
Zitat
Ohne richtige Doku ist das schon recht mühselig, gibt es da Doku ich mir ansehen kann um das zu verstehen?
Mehr kenne ich auch nicht.

A.Harrenberg

Hi Krikan,

Zitat von: krikan am 25 Mai 2015, 11:10:53
Beim Verschicken der Nachricht übergibt man eine laufende Callback-ID. Die passende Antwort enthält dann die Callback-ID als Zuordnungskriterium, da die irgendwann kommt. Bei meinen Forschungen zu den Explorer Frames habe ich noch Probleme mit den Callback-IDs, da (Vermutung) Fhem keine fortlaufende Nummer vergibt.
In den OpenZWave Logfiles von Dir ist das ja so der Fall, da kommen immer wieder Antworten die dann auch diese Callback-IDs haben. Allerdings sind dazwischen auch "received" messages ohne diese Callback-IDs, das dürften dann Nachrichten sein die automatisch geschickt werden, also ohne Anfrage, wie z.B. ein Tastendruck. Ob fhem diese Nummern vergibt habe ich mir noch nicht angesehen, könnte sein das dies in ZWDongle intern passiert und der Teil der Nachrichten gar nicht mehr gemeldet/angezeigt wird.

Zitat von: krikan am 25 Mai 2015, 11:10:53
Vorsicht, da dass eine andere Version des KFOB-S ist. Die hat SECURITY im NIF und das wir die SECURITY im NIF nicht erkennen, obwohl es überall sonst in FHEM funktioniert ist ungewöhnlich. Laut http://www.intellihome.be/en/z-wave-usb-stick.html und der Angabe dort "Extended support Node Information Frame (up to 20 Command Classes possible)" ist aber nichts unmöglich.
Das ist ja gerade das Merkwürdige, bei der Inclusion in OpenZWave wird ja SECURITY in dem NIF gesendet, in fhem aber anscheinend nicht. Habt Ihr eventuell auch ein Logfile von der Inclusion in fhem? Wird die Information über die Klassen in fhem aus dem NIF während der Inclusion gebildet oder wird der später noch mal abgefragt?

Was das mit dem "extended" soll kann ich mir auch nicht erklären. Warum sollen da 20 CC was besonderes darstellen? Die Anzahl der CCs im NIF ist ja eigentlich nicht beschränkt, außer das die gesamtlänge des Frames beschränkt ist, das reicht aber für weit mehr 20 CCs... Und an dem Format kann ich jetzt auch nichts besonderes erkennen, es kommen die supported CCs dann MARK dann die controlled CCs.

Die Frage wäre was sich in den "reserved" Bytes/Bits des NIF versteckt.

Im ersten Byte ist ja bit 7 das "listening", der KFOB meldet hier 0x03
Im zweiten Byte ist bit 7 "opt.func.", der KFOB meldet hier 0x02
das dritte Byte ist "reserved, Z-Wave protocol specific part" und meldet 0x19

D.h. hier sind noch drei Werte die eventuell etwas im Zusammenhang mit Security zu bedeuten haben, Ich denke da müsste man (auch) mal im Code von OpenZWave schauen ob diese Info dekodiert wird und für irgendwas wichtig ist.

Zitat von: krikan am 25 Mai 2015, 11:10:53
Kann dazu aber keine weiteren Infos im Netz finden.Mehr kenne ich auch nicht.
Schade, dann ist wohl wirklich die Analyse des Codes gefragt, bzw. die Links die Rudi in ZWDongle hinterlegt hat.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

rudolfkoenig

Das FHEM Modul vergibt z.Zt. das Geraete-NodeID als Callback-Id, ausgewertet wird es aber nicht. Im IODev (ZWDongle) gibt es auch einen CallbackNr, der wird aber nur fuer die ZWDongle Funktionen verwendet. Um den CallbackNr sinnvoll zu verwenden, musste man Threads (oder sowas aehnliches) mit Suspend/Terminate/etc implementieren, und das ist mir im Moment noch zuviel.

A.Harrenberg

Hi,

wollte nur mal mitteilen das ich mir jetzt gerade so eine Sirene und einen weiteren USB-Stick bestellt habe...
Dürfte einfacher sein mit Hardware zum spielen und wenn man selbst ein paar Logeinträge zum debuggen setzen kann. Mit meinem RFID-Keypad zu spielen macht auch keinen "Spass", das ist ja auch Batteriebetrieben und hängt im Flur...

Wie sieht das eigentlich damit aus einen ZWave-USB-Stick in fhem durch einen anderen zu ersetzen? In Homematic wird der USB-Stick ja über ein LAN-Modul eingebunden, dem kann man eine beliebige ID zuordnen und er wird unter eine IP angesprochen. Tauscht man den Stick aus läuft das System einfach weiter. (Ist erfolgreich getestet, meinen ersten Stick hab' ich mal abgebrochen, ersetzt und später wieder durch den reparierten ausgetauscht...)

Das geht dann ja bei ZWave nicht, hier müsste man alle Geräte ablernen und neu einbinden, oder?

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY