Wiki source for CodeanalysePoolThermometer


Show raw source

=====Codeanalyse eines Pool-Thermometers=====

Marke: TFA Dostmann/Wertheim

MODEL NO. KW-9043

{{image url="images/poolTempPhoto.jpg" alt=""}}

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.


==a==Symbol-Kodierung==a==

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.

{{image url="images/poolTempSymbols.png" alt=""}}

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


==a==Informations-Kodierung==a==

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
%%(matlab)
seqA='1101100100100000111111110101'
%%

Sequenz B bei 25,8 °C auf der Anzeige
%%(matlab)
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
%%(matlab)
>> 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
%%(matlab)
>> 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 {{backlinks}}
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki