433MHz Temp/Feuchtesensor Protokoll herausfinden

Analyse des Protokolls einer Sempre Funkwetterstation und des externen Temperatursensor / Luftfeuchtigkeitssensor auf 433MHz Basis.

Aufgrund der Tatsache das ich mir bei A**i zwei Sempre Funkwetterstationen gekauft habe, wollte ich nun auch herausfinden wie das Protokoll aussieht. Weitläufigeres Ziel ist das Empfangen der Funksensoren mit einem RTL-SDR und Raspberry Pi. Die Daten sollen dann auf meinem Webserver bereitgestellt werden.


Was war also zu tun? Erstmal Funkverkehr anschauen und herausfinden auf welcher Frequenz das Teil wirklich funkt.

Danach den Funkverkehr mitschneiden und mit Hilfe von Funden in Google, ein bisschen Schreibwerkzeug und brain.exe das Protokoll zerlegen. Das habe ich noch nicht komplett geschafft aber Kanal (der Sensor hat 3 einstellbare Kanäle), Temperatur und Luftfeuchte habe ich herausgefunden und das reicht ja auch. Also hier die Infos:


Eine Aussendung des Funksensors dauert ca. 1 Sekunde. Bei mir lag die Frequenz bei 434,024 MHz.

Jede Aussendung beinhaltet ein Datenpaket, ich nenne es mal Telegramm, das 11x wiederholt wird.

Also beinhaltet jede Aussendung insgesamt 12 Telegramme die alle den gleichen Inhalt haben. Das wird gemacht damit die Wetterstationen als Empfänger auch recht sicher das Telegramm empfangen und auswerten können.

Im nächsten Bild seht Ihr genau ein Telegramm welches ich aus der obigen Aussendung herausgeschnitten habe. Danach habe ich es analysiert.

Ich habe am Anfang und am Ende noch etwas dran gelassen denn man sieht nun recht schön das jedes einzelne Telegramm durch eine längere Pause getrennt ist. Das eigentliche Datenpaket habe ich im Bild markiert.


Wie man schön sehen kann ist die Höhe und Breite der Pulse ziemlich identisch. Somit können da keine Daten enthalten sein. Aber die Pausen zwischen den Pulsen sind unterschiedlich. Und Bingo, da sind unsere Nullen und Einsen um ein Bit abzubilden. Also nach dem ersten Puls angefangen die Pausen zu notieren, k für kurz und l für lang.

Durch einen Link in Google bin ich auf eine Seite gestoßen in der auch schon jemand Protokolle anderer Funksensoren analysiert hat und bei Ihm waren kurze Pausen eine 0 und lange Pausen eine 1. Also unter die Pausen den entsprechenden Wert geschrieben. Und jetzt wird es kniffelig denn es könnte so alles mögliche in diesem Datensatz codiert werden. Wie also nun Temperatur und Luftfeuchte finden? Nunja, ich habe den Sensor mal an einen kalten Ort gelegt und noch einmal eine Aussendung aufgezeichnet, zerlegt und die Pausen samt Bitwerten notiert. Dann beide Bitreihen miteinander verglichen und nach Änderungen gesucht. Und in den Bereichen wo es Änderungen gab ein bisschen rumprobiert und gerechnet, Bits in Nibbles gruppiert, in Hex umgerechnet, in Dezimal umgerechnet und siehe da. Es stellten sich erfolge ein. Meim Rumspielblatt kommt im nächsten Bild.

Und so wird Stück für Stück ein Teil des Protokolls daraus. Kanal umstellen, wieder Aufzeichnen und Änderungen suchen, probieren, rechnen und glücklich sein.


Mal schauen was ich damit noch so alles anstellen kann.