FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: hresalg am 05 Mai 2018, 00:39:24

Titel: [erledigt][HM Wired] Protokoll Befehl 0x45 "E" und 0x65 "e"
Beitrag von: hresalg am 05 Mai 2018, 00:39:24
Hallo Thorsten,

es scheint als wären die beiden Befehle "E" und "e" im HMW Protokoll noch nicht unterstützt. Ich habe mal ein wenig herum probiert. und es in meine "Homebrew" Module integriert.

Hier einmal ein Mitschnitt eines originalen Dimmers:
RX: Dest FF:FF:FF:FF Ctl 9A I  s1 r0 Y,F,B Ret 00:00:00:01 lng 01 cmd 7A z
| handle_broadcast 7A | rx_status  | quiet_startRX: Dest FF:FF:FF:FF Ctl 98 I  s0 r0 Y,F,B Ret 00:00:00:01 lng 01 cmd 5A Z
| handle_broadcast 5A | rx_status  | quiet_endRX: Dest 00:00:92:66 Ctl 38 I  s0 r1 F,B Ret 00:00:00:01 lng 01 cmd 68 h
RX: Dest 00:00:00:01 Ctl 1C I  s2 r0 F,B Ret 00:00:92:66 lng 02 cmd 14  data 00
RX: Dest 00:00:92:66 Ctl 59 ACK   r2 F,B Ret 00:00:00:01 lng 00
RX: Dest 00:00:92:66 Ctl 5A I  s1 r2 F,B Ret 00:00:00:01 lng 01 cmd 76 v
RX: Dest 00:00:00:01 Ctl 3E I  s3 r1 F,B Ret 00:00:92:66 lng 02 cmd 03  data 03
RX: Dest 00:00:92:66 Ctl 79 ACK   r3 F,B Ret 00:00:00:01 lng 00
RX: Dest 00:00:92:66 Ctl 7C I  s2 r3 F,B Ret 00:00:00:01 lng 01 cmd 6E n
RX: Dest 00:00:00:01 Ctl 58 I  s0 r2 F,B Ret 00:00:92:66 lng 0A cmd 4A J data 455130353435393636
RX: Dest 00:00:92:66 Ctl 19 ACK   r0 F,B Ret 00:00:00:01 lng 00
RX: Dest 00:00:92:66 Ctl 1E I  s3 r0 F,B Ret 00:00:00:01 lng 04 cmd 52 R data 000010
RX: Dest 00:00:00:01 Ctl 7A I  s1 r3 F,B Ret 00:00:92:66 lng 10 cmd FF ÿ data 1400000001FFFFFFFFFFFF00009624
RX: Dest 00:00:92:66 Ctl 39 ACK   r1 F,B Ret 00:00:00:01 lng 00
RX: Dest 00:00:92:66 Ctl 38 I  s0 r1 F,B Ret 00:00:00:01 lng 14 cmd 57 W data 000010FF1400000001FFFFFFFFFFFF00009624
RX: Dest 00:00:00:01 Ctl 19 ACK   r0 F,B Ret 00:00:92:66 lng 00
RX: Dest 00:00:92:66 Ctl 3A I  s1 r1 F,B Ret 00:00:00:01 lng 05 cmd 45 E data 00001040
RX: Dest 00:00:00:01 Ctl 3C I  s2 r1 F,B Ret 00:00:92:66 lng 0C cmd 65 e data 000010FFFF030000000000
RX: Dest 00:00:92:66 Ctl 59 ACK   r2 F,B Ret 00:00:00:01 lng 00
RX: Dest 00:00:92:66 Ctl 5C I  s2 r2 F,B Ret 00:00:00:01 lng 04 cmd 52 R data 001010
RX: Dest 00:00:00:01 Ctl 5E I  s3 r2 F,B Ret 00:00:92:66 lng 10 cmd 03  data 02110014C80A0A0000050000C00000
RX: Dest 00:00:92:66 Ctl 79 ACK   r3 F,B Ret 00:00:00:01 lng 00
RX: Dest 00:00:92:66 Ctl 7E I  s3 r3 F,B Ret 00:00:00:01 lng 04 cmd 52 R data 004010
RX: Dest 00:00:00:01 Ctl 78 I  s0 r3 F,B Ret 00:00:92:66 lng 10 cmd 43 C data 05000096240502110014C80A0A0000
RX: Dest 00:00:92:66 Ctl 19 ACK   r0 F,B Ret 00:00:00:01 lng 00
RX: Dest 00:00:92:66 Ctl 18 I  s0 r0 F,B Ret 00:00:00:01 lng 04 cmd 52 R data 007010
RX: Dest 00:00:00:01 Ctl 1A I  s1 r0 F,B Ret 00:00:92:66 lng 10 cmd 00


Der "E" Befehl , fragt nach benutzten EEProm Blöcken:
Titel: Antw:[HM Wired] Protokoll Befehl 0x45 "E" und 0x65 "e"
Beitrag von: Thorsten Pferdekaemper am 05 Mai 2018, 09:28:02
Hi,
das hatte ich vor Jahren schon einmal analysiert, siehe Anhang.
Implementiert ist das in der Datei HBWired.cpp:

void HBWDevice::processEmessage(uint8_t const * const frameData) {
// process E-Message

     uint8_t blocksize = frameData[3];
     uint8_t blocknum  = frameData[4];

     // length of response
     txFrameDataLength = 4 + blocknum / 8;
     // care for odd block numbers
     if(blocknum % 8) txFrameDataLength++;
     // we don't need to check the size as it can maximum
     // be 4 + 255 div 8 + 1 = 36
     // init to zero, mainly because we need it later
     memset(txFrameData,0,txFrameDataLength);
     // first byte "e" - answer on "E"
     txFrameData[0]  = 0x65;  //e
     // next 3 bytes are just repeated from request
     txFrameData[1]  = frameData[1];
     txFrameData[2]  = frameData[2];
     txFrameData[3]  = frameData[3];

     // determine whether blocks are used
     for(int block = 0; block <= blocknum; block++) {
       // check this memory block
       for(int byteIdx = 0; byteIdx < blocksize; byteIdx++) {
    if(EEPROM.read(block * blocksize + byteIdx) != 0xFF) {
       bitSet(txFrameData[4 + block / 8], block % 8);
       break;
    }
       }
     };
   };

Die FHEM-Seite verwendet das tatsächlich nicht, soweit ich mich erinnern kann. Im Coding habe ich auf die Schnelle auch nichts dazu gefunden.

Gruß,
   Thorsten
Titel: [erledigt][HM Wired] Protokoll Befehl 0x45 "E" und 0x65 "e"
Beitrag von: hresalg am 05 Mai 2018, 13:55:35
Hallo Thorsten

Ach, das wusste ich nicht. daß Du das schon hattest. Hat sich also erledigt.
Man könnte es für den start von FHEM auch nutzen.

lg H.