FHEM Forum

FHEM - Hausautomations-Systeme => ZWave => Thema gestartet von: hschmitt am 11 Mai 2014, 22:15:54

Titel: [patch] ZWave - CRC_16_ENCAP class
Beitrag von: hschmitt am 11 Mai 2014, 22:15:54
Hallo,

mein Fibaro Rauchmelder hat eine zusätzlich Command Klasse gemeldet.
Hier der Patch mit dem Namen der Klasse.
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: rudolfkoenig am 12 Mai 2014, 10:23:22
Habs eingecheckt, war sehr uebersichtlich.
Woher weisst Du welcher Name hinter 56 steckt?
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: hschmitt am 14 Mai 2014, 15:25:40
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.
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: micha80 am 22 März 2015, 17:24:18
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
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: karsten103 am 22 März 2015, 17:31:09
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
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: krikan am 22 März 2015, 17:51:38
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.
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: micha80 am 22 März 2015, 18:18:28
Ich habe bisher leider nur eine Python Klasse dafür gefunden :(

Auf github
https://raw.githubusercontent.com/GraemeWilson/Arduino-Python-Framing-CRC16/2f0a11e7534220fd137c425ee472cc04eeebb7b6/Python/CRC_16.py

Mfg
Michael
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: karsten103 am 22 März 2015, 18:29:40
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"
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: micha80 am 23 März 2015, 09:58:44
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?
:)
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: karsten103 am 24 März 2015, 23:08:57
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"};
Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: micha80 am 25 März 2015, 10:47:27
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 (https://openhab.ci.cloudbees.com/job/openHAB/ws/bundles/binding/org.openhab.binding.zwave/src/main/java/org/openhab/binding/zwave/internal/protocol/commandclass/ZWaveCRC16EncapsulationCommandClass.java)


Titel: Antw:[patch] ZWave - CRC_16_ENCAP class
Beitrag von: micha80 am 25 März 2015, 12:45:16
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?