Go Down

Topic: 433 MHz Fernbedienungscodes decodieren (Elro Steckdosen &Co) (Read 787 times) previous topic - next topic

mwyraz

Hallo zusammen,

mit der RemoteTransmitter Lib kann man ja wunderbar Funksteckdosen steuern. Man kann auch eingehende Codes empfangen. Nun wollte ich die Fernbedienung mal mit einbinden und daher den eingehenden Code in System-ID, Kanal-Nummer (A-E) und AN/AUS zerlegen. Die Codierung basiert irgendwie auf 3 Zuständen, ein Code besteht aus 20 Bit.
Die Lib erlaubt es, Befehle zu codieren. Ich möchte aber einen empfangenen Befehl decodieren. Ich hab den Code nun schon ein paarmal durchgelesen, stehe aber irgendwie auf dem Schlauch. Auch mit rumtesten komme ich nicht weiter. Wenn ich den System-Code von 0 auf 1, 2 etc. umschalte, wackeln mal ganz hinten und auch mal ganz vorne ein paar Bits ohne erkennbares Muster.

Im Einsatz ist die Lib von http://randysimons.nl/

Vielen Dank im Voraus,
Michael.

mwyraz

Was ich schon weiß: Es wird da mit "Trits" - "Bits" mit 3 Zuständen - gearbeitet.
Davon gibt es 12 Stück.

Diese werden damit binär codiert:
Code: [Select]

unsigned long data = 0;

// Encode data
for (unsigned short i=0;i<12;i++) {
data*=3;
data+=trits[i];
}


Nur - wie bekomme ich das sinnvoll zurück?

mwyraz

So, nun hab ich die Lösung (Java-Code):

Code: [Select]

                int bits=1;
                boolean valid=true;
                for (int i=0;i<12;i++)
                {
                    int bit=asInt % 3;
                    asInt=asInt/3;
                    if (bit==1)
                    {
                        valid=false;
                        break;
                    }
                    bits=(bits<<1);
                    if (bit==0) bits=bits | 1;
                }
                if (!valid) continue;


Das macht den Spaß rückwärts und filtert gleich ungültige Werte (d.h. welche, die mich nicht interessieren, weil sie nicht die beiden Zustände 0 und 2 verwenden) heraus.

Go Up