FHEM Forum

FHEM - Hausautomations-Systeme => RFXTRX => Thema gestartet von: wahlm am 25 Mai 2013, 18:57:24

Titel: Firmware 66
Beitrag von: wahlm am 25 Mai 2013, 18:57:24
Seit kurzem habe ich einen RFXTRX433, der mit Firmware 66 geliefert wurde. Schalte ich nun meine
Intertechno-Steckdosen mit dem arc-Protokoll so erhalte ich nach ein paarmal schalten

 TRX_ELSE: error transmit NACK=0x

im FHEM-Log (v5.4). Eine weitere Analyse mit RFXmngr zeigte, daß der FHEM-Treiber statt des Antwortcodes
die Sequence-Nummer analysiert. Ob das in der Firmware neu ist, kann ich natürlich nicht sagen.

Dazu wurde im debug-print bei num_bytes ein falscher Wert ausgegeben. Mit folgenden Änderungen war alles ok.

So sieht übrigens die Antwort des TRX auf das Sendekommando aus, das vorletzte Byte ist die Sequence-Nummer.

2013.05.24 18:43:42 5: TRX_Parse1 '0402010300'
2013.05.24 18:43:42 5: TRX dispatch 0402010300
2013.05.24 18:43:42 5: TRX_ELSE: decoding delay=33 hex=0402010300
2013.05.24 18:43:42 0: TRX_ELSE: error transmit NACK=03


Bye,
wahlm

--- 46_TRX_ELSE.pm.no 2013-04-08 12:06:51.000000000 +0200
+++ 46_TRX_ELSE.pm 2013-05-25 13:10:05.238699321 +0200
@@ -110,9 +110,9 @@
     push (@rfxcom_data_array, ord($_) );
   }
 
-  my $num_bytes = ord(substr($msg,0,1));
+  my $num_bytes = ord(substr($bin_msg,0,1));
 
-  if ($num_bytes < 3) {
+  if ($num_bytes < 4) {
     return;
   }
 
@@ -122,7 +122,7 @@
   my $res = "";
   if ($type == 0x02) {
  my $subtype = $rfxcom_data_array[1];
- my $msg = $rfxcom_data_array[2];
+ my $msg = $rfxcom_data_array[3];
  if (($msg != 0x00) && ($msg != 0x01)) {
    Log 0, "TRX_ELSE: error transmit NACK=".sprintf("%02x",$msg);
  }
Titel: Aw: Firmware 66
Beitrag von: Willi am 26 Mai 2013, 17:32:58
Zitat von: wahlm schrieb am Sa, 25 Mai 2013 18:57Seit kurzem habe ich einen RFXTRX433, der mit Firmware 66 geliefert wurde. Schalte ich nun meine
Intertechno-Steckdosen mit dem arc-Protokoll so erhalte ich nach ein paarmal schalten

 TRX_ELSE: error transmit NACK=0x

im FHEM-Log (v5.4). Eine weitere Analyse mit RFXmngr zeigte, daß der FHEM-Treiber statt des Antwortcodes
die Sequence-Nummer analysiert. Ob das in der Firmware neu ist, kann ich natürlich nicht sagen.

Danke für die Info. Du hast recht. Das Parsing des ACK war falsch. Habe ich soeben im SVN korrigiert.
Das ist bisher nicht aufgefallen, da bisher die Firmware die sequence number anders zurückgeliefert hat.
Das hat sich mit Firmware 66 geändert.

-- Willi  
Titel: Aw: Firmware 66
Beitrag von: Tobias am 26 Mai 2013, 19:22:53
hast du das auch rückwärtskompatibel eingebaut? Ich kann jetzt nicht so schnell ohne weiteres den rfxtrx updaten
Titel: Aw: Firmware 66
Beitrag von: Willi am 26 Mai 2013, 19:49:47
Hallo Tobias,

habe ich bei mir auch mit Firmware 64 getestet. Sollte auch noch mit älterer laufen.
Die Auswertung in TRX_ELSE des ACK-Paketes war falsch.

Die Routine in TRX_ELSE kommt nur zum Einsatz, wenn man schaltet. Es kommt eine Fehlermeldung, wenn kein richtiges ACK vom RFXtrx433 kommt. Da passiert im schlimmsten Fall nichts außer einer Fehlermeldung im Log.

Grüße

Willi