Benutzer-Werkzeuge

Webseiten-Werkzeuge


wiki:smi:swbtelegramme

SWB Telegramm

Das Telegramm besteht aus sieben Byte. Beim Tastendruck „Hoch“ und „Runter“ wird ein Telegramm mit Byte5=0x02 geschickt. Nach etwa 300 ms kommt das Telegramm mit der Art der Betätigung.

„Stop“ und „Automatik“ dagegen senden sofort nur das Telegramm mit der Aktion.

Telegramme werden so oft wiederholt bis sie Bestätigt wurden. Jedes Telegramm wird von der Steuerung mit Aktion 0 bestätigt (Zähler invertiert).

Bei einer aktuellen Steurung wird ein Klick als Stop gewertet. Ein längerer Druck als Hoch oder Runter. Mit einem Doppelklick werden zwei Feste Positionen angefahren. Doppelklick Runter ist die Position die automatisch beim Sonnenschutz angefahren wird

Aufbau

Bit
8 7 6 5 4 3 2 1
27 26 25 24 23 21 21 20
Start (Byte 1)
1 1 1 1 0 0 0 0
16-Bit Adresse (Byte 2-3)
215 214 213 212 211 210 29 28
27 26 25 24 23 22 21 20
Steuerung (Byte 4)
Zähler
20 0 0 0 0 0 0 1
Aktion (Byte 5)
Schalter Aktion
0 0 21 20 23 22 21 20
16-Bit Prüfsumme (Byte 6-7)
215 214 213 212 211 210 29 28
27 26 25 24 23 21 21 20


Bedeutung

  • Zähler (Unterscheidung zwischen Wiederholung und Bestätigung)
    • 1 Bit
  • Schalter
    • 0: Hoch
    • 1: Runter
    • 2: Stop
    • 3: Automatik
  • Aktion
    • 0: „Bestätigung“
    • 2: Taste gedrückt
    • 3: Klick
    • 4: Druck
    • 5: Doppelklick
    • 6: EIN
    • 7: AUS


Schaltereigenschaften

Die Aktionen sind je nach Schalter unterschiedlich

Funktion Typ Klick Druck Doppelklick EIN AUS
Hoch Taster X X X - -
Runter Taster X X X - -
Stop Taster X - - - -
Automatik Schalter - - - X X


Prüfsumme

Die 16 Bit Prüfsumme wird nach „CCITT Reverse“ berechnet:

/* creates SWB crc16 */
unint16_t  createSwbCrc(unsigned char *buffer, int size) {
    unint16_t crc = 0xffff;                  // preset CRC
    unint16_t CRC = 0x8408;                  // for reverse calculation of CRC-16-CCITT
    int i,j;
  
    for (i=0; i < size-2; i++){
        crc = crc ^ buffer[i];
            for (j=0; j<8; j++){
                if((crc & 0x01) == 0){
                    crc = crc >> 1;
            } else {
                crc = crc >> 1;
                crc = crc ^ CRC;
            }
        }
    }
    return ~crc;
}


Steuerung

Aktuell habe ich folgende Steuerung:

Schalter Aktion Befehl
Stop, Hoch, Runter Klick STOP
Hoch Druck HOCH
Runter Druck RUNTER
Hoch Doppelklick POS.2
Runter Doppelklick POS.1
Automatik EIN
Automatik AUS
wiki/smi/swbtelegramme.txt · Zuletzt geändert: 2018/06/30 16:18 von wikiadmin