ELV MAX! mit RFM69cw

Begonnen von thomas.dunkel, 12 Dezember 2017, 19:32:06

Vorheriges Thema - Nächstes Thema

thomas.dunkel

Hallo zusammen,

ich versuche seid einiger Zeit meinen RPi mit einem RFM69cw die ELV MAX! Sprache beizubringen. Dank eines Posts von Ulli über HomeMatic und einem RFM69 hier im Forum (siehe Link unten) ist mir dies auch gelungen. Mit einem MAX! Cube empfange ich bei der Suche nach einem neuen Gerät leider nur unverständliche Zeichen (auch nach Dewhitening mit PN9 Sequenz und/oder XOr-Entschlüsselung) und diese auch äußerst sporadisch. Außerdem vermute ich, dass meine RFM69cw-Konfiguration nicht korrekt ist. Wenn ich diese so anpassen, wie im Code von CUL für ELV MAX! (vgl. rf_moritz.c) angegeben, dann empfange ich nichts mehr.

Weiß jemand, wieso ich lediglich sehr sporadisch Signale und falsche Daten empfange bzw. wo mein Fehler in der Konfiguration des RFM60cw liegt?

Vielen Dank!

Auszug RFM69cw-Konfiguration:

   //* 0x00 */ Fifo
/* 0x01 */ { REG_OPMODE, RF_OPMODE_SEQUENCER_ON | RF_OPMODE_LISTEN_OFF | RF_OPMODE_STANDBY }, //Sequencer on | Standby Mode
  /* 0x02 */ { REG_DATAMODUL, RF_DATAMODUL_DATAMODE_PACKET | RF_DATAMODUL_MODULATIONTYPE_FSK | RF_DATAMODUL_MODULATIONSHAPING_00 }, //no shaping
  /* 0x03 */ { REG_BITRATEMSB, RF_BITRATEMSB_10000},
    /* 0x04 */ { REG_BITRATELSB, RF_BITRATELSB_10000},
   
    /* 0x05 */ { REG_FDEVMSB, RF_FDEVMSB_20000}, //default:5khz, (FDEV + BitRate/2 <= 500Khz) /FDEV = frequency deviation
    /* 0x06 */ { REG_FDEVLSB, RF_FDEVLSB_20000}, // rfm12 90kHz Deviation -> (90kHz + 17,24kbps/2) <= 500kHz i.O.

    /* 0x07 */ { REG_FRFMSB, 0xD9 }, //FRF_MSB }, //868,3 MHz
    /* 0x08 */ { REG_FRFMID, 0x13 }, //FRF_MID },
    /* 0x09 */ { REG_FRFLSB, 0x33 }, //FRF_LSB },   

/* Receiver Registers */
/* 0x19 */ { REG_RXBW, RF_RXBW_DCCFREQ_010 | RF_RXBW_MANT_20 | RF_RXBW_EXP_2 }, //(BitRate < 2 * RxBw) -> (17,24kbs < 2* rfm12 166,7 kHz


/* IRQ and Pin Mapping */
/* 0x25 */ { REG_DIOMAPPING1, RF_DIOMAPPING1_DIO0_01 }, //DIO0 is the only IRQ we're using
/* 0x26 */ { REG_DIOMAPPING2, RF_DIOMAPPING2_CLKOUT_OFF }, //ClockOut
/* 0x28 */ { REG_IRQFLAGS2, RF_IRQFLAGS2_FIFOOVERRUN }, // Writing to this bit ensures the FIFO & status flags are reset
    /* 0x29 */ { REG_RSSITHRESH, 0xE4 /*MAX*/ }, //(97*2) rfm -91dBm //must be set to dBm = (-Sensitivity / 2) - default is 0xE4=228 so -114dBm

/* Packet Engine Registers */
/* 0x2C */ { REG_PREAMBLEMSB, RF_PREAMBLESIZE_MSB_VALUE },
/* 0x2D */ { REG_PREAMBLELSB, 3 },
/* 0x2E */ { REG_SYNCCONFIG, RF_SYNC_ON | RF_SYNC_FIFOFILL_AUTO | RF_SYNC_SIZE_4 | RF_SYNC_TOL_0 },
/* 0x30 */ { REG_SYNCVALUE1, 0xC6 },
                /* 0x30 */ { REG_SYNCVALUE2, 0x26 },
                /* 0x30 */ { REG_SYNCVALUE3, 0xC6 },
                /* 0x30 */ { REG_SYNCVALUE4, 0x26 },

    //* 0x31 - 0x36 */ possible SyncValues
    /* 0x37 */ { REG_PACKETCONFIG1, RF_PACKET1_FORMAT_FIXED | RF_PACKET1_DCFREE_OFF |
    RF_PACKET1_CRC_OFF | RF_PACKET1_CRCAUTOCLEAR_OFF |
    RF_PACKET1_ADRSFILTERING_OFF },
    /* 0x38 */ { REG_PAYLOADLENGTH, 0x30},
  /* 0x3C */ { REG_FIFOTHRESH, RF_FIFOTHRESH_TXSTART_FIFONOTEMPTY | /*0x7F=MAX*/ RF_FIFOTHRESH_VALUE }, //TX on FIFO not empty
    /* 0x3D */ { REG_PACKETCONFIG2, RF_PACKET2_RXRESTARTDELAY_NONE | RF_PACKET2_AUTORXRESTART_ON | RF_PACKET2_AES_OFF }, //RXRESTARTDELAY must match transmitter PA ramp-down time (bitrate dependent)
 
    /* 0x6F */ { REG_TESTDAGC, RF_DAGC_IMPROVED_LOWBETA0 }, // run DAGC continuously in RX mode, recommended default for AfcLowBetaOn=0   
    {255, 0}


Auszug rf_moritz.c:

0x00, 0x07, ? //IOCFG2: GDO2_CFG=7: Asserts when a packet has been received with CRC OK. De-asserts when the first byte is read from the RX FIFO
     0x02, 0x46, ? //IOCFG0 Asserts when sync word has been sent / received, and de-asserts at the end of the packet. In RX, the pin will de-assert
                    when the optional address check fails or the RX FIFO overflows. In TX the pin will de-assert if the TX FIFO underflows
     0x04, 0xC6, ok //SYNC1
     0x05, 0x26, ok //SYNC0
     0x0B, 0x06, ? //FSCTRL1
     0x10, 0xC8, //MDMCFG4 DRATE_E=8,
     0x11, 0x93, //MDMCFG3 DRATE_M=147, data rate = (256+DRATE_M)*2^DRATE_E/2^28*f_xosc = (9992.599) 1kbit/s (at f_xosc=26 Mhz)
     0x12, 0x03, ok //MDMCFG2 see above
     0x13, 0x22,  //MDMCFG1 CHANSPC_E=2, NUM_PREAMBLE=2 (4 bytes), FEC_EN = 0 (disabled)
    //0x13, 0x72,  //MDMCFG1 CHANSPC_E=2, NUM_PREAMBLE=7 (24 bytes), FEC_EN = 0 (disabled)
     0x15, 0x34, //DEVIATN
//     0x17, 0x00,
     0x17, 0x3F, //MCSM1: TXOFF=RX, RXOFF=RX, CCA_MODE=3:If RSSI below threshold unless currently receiving a packet
     0x18, 0x28, //MCSM0: PO_TIMEOUT=64, FS_AUTOCAL=2: When going from idle to RX or TX automatically
     0x19, 0x16, //FOCCFG
     0x1B, 0x43, //AGCTRL2
     0x21, 0x56, //FREND1
     0x25, 0x00, //FSCAL1
     0x26, 0x11, //FSCAL0
     0x0D, 0x21, //FREQ2
     0x0E, 0x65, //FREQ1
     0x0F, 0x6A, //FREQ0
     0x07, 0x0C, //PKTCTRL1
     0x16, 0x07, //MCSM2 RX_TIME = 7 (Timeout for sync word search in RX for both WOR mode and normal RX operation = Until end of packet) RX_TIME_QUAL=0 (check if sync word is found)
     0x20, 0xF8, //WORCTRL, WOR_RES=00 (1.8-1.9 sec) EVENT1=7 (48, i.e. 1.333 – 1.385 ms)
     0x1E, 0x87, //WOREVT1 EVENT0[high]
     0x1F, 0x6B, //WOREVT0 EVENT0[low]
     0x29, 0x59, //FSTEST
     0x2C, 0x81, //TEST2
     0x2D, 0x35, //TEST1
     0x3E, 0xC3, //?? Readonly PATABLE?
     0xff



Bytes:240
Raw:f0,f0,e1,19,fa,fb,66,82,24,ea,7a,d2,21,4c,b9,57,e3,23,0f,2d,f3,7d,af,fb,f1,ec,df,f0,be,df,d7,f7,ff,7c,5d,
eb,df,eb,64,ff,76,a3,de,fe,6e,87,bf,8d,d6,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
PN9:0f,11,fc,83,17,7e,55,a6,ce,90,a8,eb,51,db,ee,5d,b7,5e,22,f5,9e,70,15,74,96,b5,18,52,01,eb,1d,ef,cf,2f,ce,
34,4d,07,c3,ea,fc,7f,2a,78,3b,c9,a7,ac,96,c4,c4,d5,c6,91,8a,cd,e7,d1,4e,09,32,17,df,83,ff,f0,0e,cd,f6,c2,19,12,
75,3d,e9,1c,b8,cb,2b,05,aa,be,16,ec,b6,06,dd,c7,b3,ac,63,d1,5f,1a,65,0c,98,a9,c9,6f,49,f6,d3,0a,45,6e,7a,c3,2a,
27,8c,10,20,62,e2,6a,e3,48,c5,e6,f3,68,a7,04,99,8b,ef,c1,7f,78,87,66,7b,e1,0c,89,ba,9e,74,0e,dc,e5,95,02,55,5f,
0b,76,5b,83,ee,e3,59,d6,b1,e8,2f,8d,32,06,cc,d4,e4,b7,24,fb,69,85,22,37,bd,61,95,13,46,08,10,31,71,b5,71,a4,62,
f3,79,b4,53,82,cc,c5,f7,e0,3f,bc,43,b3,bd,70,86,44,5d,4f,3a,07,ee,f2,4a,81,aa,af,05,bb,ad,41,f7,f1,2c,eb,58,f4,
97,46,19,03,66,6a,f2,5b,92,fd,b4,42,91,9b,de,b0,ca,09,23,04,
Decrypt:0f,67,11,5b,48,8d,0f,97,4c,3a,c4,6f,96,f6,59,4c,b7,5e,22,f5,9e,70,15,74,96,b5,18,52,01,eb,1d,ef,cf,2f,
ce,34,4d,07,c3,ea,fc,7f,2a,78,3b,c9,a7,ac,96,c4,c4,d5,c6,91,8a,cd,e7,d1,4e,09,32,17,df,83,ff,f0,0e,cd,f6,c2,19,
12,75,3d,e9,1c,b8,cb,2b,05,aa,be,16,ec,b6,06,dd,c7,b3,ac,63,d1,5f,1a,65,0c,98,a9,c9,6f,49,f6,d3,0a,45,6e,7a,c3,
2a,27,8c,10,20,62,e2,6a,e3,48,c5,e6,f3,68,a7,04,99,8b,ef,c1,7f,78,87,66,7b,e1,0c,89,ba,9e,74,0e,dc,e5,95,02,55,
5f,0b,76,5b,83,ee,e3,59,d6,b1,e8,2f,8d,32,06,cc,d4,e4,b7,24,fb,69,85,22,37,bd,61,95,13,46,08,10,31,71,b5,71,a4,
62,f3,79,b4,53,82,cc,c5,f7,e0,3f,bc,43,b3,bd,70,86,44,5d,4f,3a,07,ee,f2,4a,81,aa,af,05,bb,ad,41,f7,f1,2c,eb,58,
f4,97,46,19,03,66,6a,f2,5b,92,fd,b4,42,91,9b,de,b0,ca,09,23,04,


Post von Ulli über HomeMatic und RMF69:
https://forum.fhem.de/index.php?topic=49300.0