[patch] ZWave - CRC_16_ENCAP class

Begonnen von hschmitt, 11 Mai 2014, 22:15:54

Vorheriges Thema - Nächstes Thema

hschmitt

Hallo,

mein Fibaro Rauchmelder hat eine zusätzlich Command Klasse gemeldet.
Hier der Patch mit dem Namen der Klasse.

rudolfkoenig

Habs eingecheckt, war sehr uebersichtlich.
Woher weisst Du welcher Name hinter 56 steckt?

hschmitt

Ich habe mehrere Suchmaschinen benutzt und nach 0x56 zusammen mit anderen Wörtern gesucht. Ich fand nur diesen Command class Namen und keinen anderen.
Leider habe ich kein aktuelles Spec Dokument gefunden.

micha80

Hallo zusammen,
Kann es sein, dass diese Klasse verschlüsselte Nachrichten beinhalten und erst entschlüsselt werden mussten, damit fhem damit etwas anfangen kann?

Razberry mit fibaro motion sensor.

Mfg
Michael


2015.03.22 16:17:01 4: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:04 ARG:0656018407cc39
2015.03.22 16:17:01 4: ZWave_SENSOR_BINARY_4: Unknown message (CRC_16_ENCAP 0656018407cc39)
2015.03.22 16:18:02 5: ZWDongle/RAW: /010c000400040656
2015.03.22 16:18:02 5: ZWDongle/RAW: 010c000400040656/018407cc39d4
2015.03.22 16:18:02 5: SW: 06
2015.03.22 16:18:02 5: ZWDongle_Read ZWDongle_0: 000400040656018407cc39
2015.03.22 16:18:02 5: ZWDongle_0 dispatch 000400040656018407cc39

karsten103

Hallo Rudolf,

eine ziemlich komplette Liste, die auch neuere Klassen enthält, ist hier: http://220.135.186.178/zwave/example/

Da hatte ich für meinen Patch letzte Woche auch die Klassennamen entnommen.

Gruß,
Karsten

krikan

Class ist in FHEM enthalten aber noch ohne Funktion.

Hier https://groups.google.com/forum/#!msg/openhab/xg_j2tyGwLc/x3MLZ7n_o74J gibt es Infos.
Ich bekomme aber
Zitat0656018407cc39
nicht wirklich interpretiert:

06=?
56=Class
01=Command
8407=wakeup notification ?; wo ist 02
cc39= CRC-CCITT (0x1D0F) über 56018407

Vielleicht kann jemand von Euch mehr damit anfangen und einen Patch stricken.


karsten103

Die Logik müsste wie folgt aussehen:

- Payload bestimmen: 0656018407cc39
- den Teil der Payload hinter (..)5601 nehmen: 8407cc39
- den CRC (die letzten beiden Byte) abschneiden: 8407
- Anzahl der Bytes zählen und davorsetzen: 028407
- Diese neue Payload parsen => ergibt "wakeup:notification"

micha80

wenn ich jetzt nur etwas besser perl könnte, aber hier gibts ein CPAN Modul.
https://metacpan.org/pod/Digest::CRC

Könnte das jemand integrieren?
:)

karsten103

Hier der Patch zur rudimentären Unterstützung der CRC_16_ENCAP-Klasse. Es wird zwar keine Überprüfung des CRCs vorgenommen, aber die verpackte Nachricht wird entpackt und dann normal weiterverarbeitet.

Da ich kein Geräte habe, das CRC_16_ENCAP unterstützt, bin ich über Feedback dankbar.


--- 10_ZWave_orig2.pm   2015-03-24 22:58:42.854165607 +0100
+++ 10_ZWave.pm 2015-03-24 23:02:05.451170221 +0100
@@ -1290,6 +1290,10 @@
     $arg = sprintf("%s%02x%s", $1, hex($2) & 0x7f, $3);
   }

+  if($arg =~ /^..5601(.*)..../) { # CRC_16_ENCAP: Unwrap encapsulated command
+    $arg = sprintf("%02x$1", length($1)/2);
+  }
+
   my $baseHash;
   if($arg =~ /^..600d(..)(..)(.*)/) { # MULTI_CHANNEL CMD_ENCAP
     $baseHash = $modules{ZWave}{defptr}{"$homeId $id"};

micha80

Hallo Karsten,
sieht schon mal nicht schlecht aus :)
An der Stelle war ich gestern abend auch schon, leider schickt das Teil dann gleich die nächste CRC-Nachricht:


2015.03.25 10:34:17 5: ZWDongle_Read ZWDongle_0: 000400050656018407cc39
2015.03.25 10:34:17 5: ZWDongle_0 dispatch 000400050656018407cc39
2015.03.25 10:34:17 4: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:05 ARG:0656018407cc39
2015.03.25 10:34:17 5: Triggering WZTemp
2015.03.25 10:34:17 4: WZTemp exec get ZWave_SENSOR_BINARY_4 battery
2015.03.25 10:34:17 3: ZWave reading config for fibaro/fgms.xml
2015.03.25 10:34:17 2: ZWave get ZWave_SENSOR_BINARY_4 battery
2015.03.25 10:34:17 5: SW: 01080013050280020564
2015.03.25 10:34:17 5: ZWDongle/RAW: 010c000400050656/060104011301e8
2015.03.25 10:34:17 1: ZWDongle_0: wrong checksum: received 01, computed b3 for 0c0004000506560601040113
2015.03.25 10:34:17 5: SW: 15
2015.03.25 10:34:17 1: ZWDongle_0: SOF missing (got e8 instead of 01)
2015.03.25 10:34:17 4: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:05 ARG:06560601040113
2015.03.25 10:34:17 4: ZWave_SENSOR_BINARY_4: Unknown message (CRC_16_ENCAP 06560601040113)
2015.03.25 10:34:17 5: ZWDongle/RAW: /0104011301e8


Also 5601 und jetzt 5606 ?
und was soll 0104 für eine Nachricht sein???

mfg

p.s. ich habe jetzt endlich passenden Code gefunden, aber leider in java: bei openhab



micha80

da war ich wohl etwas zu schnell:
ich habe das notify WZTemp deaktiviert und jetzt bekomme ich wieder Temp und Lum.

Kann man den Batterie Status nur manuell abfragen?