Codeanalyse eines Pool-Thermometers


Marke: TFA Dostmann/Wertheim

MODEL NO. KW-9043



Das Thermometer sendet auf 433 MHz mit OOK.

Ich habe einen DVB-T-Stick verwendet um die Signale ins Basisband zu demodulieren und habe mir den Rest dann in Octave angeschaut.


1. Symbol-Kodierung


Wenn man sich eine Zeitreihe anschaut, dann sieht man, dass es 3 Symbole gibt. Ein 0-, ein 1- und ein Sync-Symbol

Ein Symbol besteht immer aus einem ca. 207 µs breiten positiven Puls gefolgt von einer variablen Pause. Die Pause entscheidet darüber, um welches Symbol es sich handelt.



Gemessene Werte:

0-Symbol
HI 0.207 ms
LO 2.258 ms

1-Symbol
HI 0.207 ms
LO 4.825 ms

Sync-Symbol
HI 0.207 ms
LO 9.811 ms


2. Informations-Kodierung


Da die Symbole nun bekannt sind, kann man also eine Sequenz von Symbolen auf einer AbstraktionsEbenen Abstraktionsebene höher untersuchen. Ich habe die Sequenzen rausgesucht, die zwischen zwei Sync liegen und habe die dazu immer die Temperatur aufgeschrieben, sobald sich diese geändert hat.


Sequenz A bei 25,5 °C auf der Anzeige
seqA='1101100100100000111111110101'


Sequenz B bei 25,8 °C auf der Anzeige
seqB='0010100100100001000000100101'



Mir ist aufgefallen, dass die 9 Bits 16 bis 24, die Temperatur sein könnten. Man fängt bei Octave bei 1 (nicht bei 0!) an zu zählen.

Man muss also die Bits 16 bis 24 in einen Integer-Wert wandeln. Ich mache das mit Octave, weil es schnell geht.

Octave-Befehl
>> bin2dec(seqA(16:24))

ans =

   255

>> bin2dec(seqB(16:24))

ans =

   258


Tatsächlich die 9 Bits beinhalten die Temperatur.

Man teilt den Wert noch durch 10 und hat dann die Temperatur.

Octave-Befehl
>> bin2dec(seqA(16:24)) / 10

ans =

   25.5000

>> bin2dec(seqB(16:24)) / 10

ans =

   25.8000



Die Daten sind also unverschlüsselt und in einem sehr überschaubaren Format. Vielleicht möchte jemand die anderen Bits herausfinden.



Siehe auch
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki