Hallo liebe Leserinnen und Leser!

Heute möchte ich euch basierend auf meinem letzten Artikel zum Decodieren von Funkthermometern via SDR zeigen, was sich mit diesen Erkenntnissen und einem Raspberry Pi basteln lässt.

Erst einmal ein paar kurze Worte vorweg: Dieser Artikel ist dieses mal nicht im „Tutorial-Stil“ gehalten, sondern hält lediglich meine Arbeit an diesem Projekt fest. Für diejenigen, die dieses Projekt selbst nachbauen wollen, stelle ich selbstverständlich sämtliche Quelldaten zur Verfügung. Das Projekt richtet sich eher an etwas fortgeschrittenere Anwender, die auch etwas mit Python, JavaScript und HTML anfangen können und sich bei etwaigen Problemen zu helfen wissen. Der Grund für diese Vorgehensweise liegt hier daran, dass die von mir verwendeten Temperatursensoren nicht mehr online bei deutschen Händlern erhältlich sind (zumindest habe ich sie nicht mehr gefunden) und ein komplettes Tutorial zum Nachbauen somit unsinnig wäre. Der Artikel ist besonders für Leute interessant, die bereits Temperatursensoren zu Hause rumliegen/-hängen haben und diese auch decodieren möchten. Natürlich kann man sich auch neue Sensoren kaufen. Die Decodierarbeit, die ich im letzten Artikel beschrieben habe, kann ich euch allerdings nicht abnehmen, sodass hier noch einiges an Hand- und Kopfarbeit gefordert ist. Auch die Implementierung der Decodierung in pydemod müsst ihr bei anderen Sensoren leider selbst übernehmen. Solltet ihr (am Besten noch erhältliche) Sensoren bereits decodiert und in pydemod integriert haben, könnt ihr die Scripte und sonstige Dateien mir gerne zukommen lassen, damit ich sie hier veröffentliche. Davon hätten dann auch weniger technisch-versierte Anwender etwas.

So, nun aber genug geredet/-textet – hier eine kurze Präsentation des Projekts:

 

1. Decodierung der Sensoren mit Hilfe eines Raspberry Pi sowie pydemod als Grundlage

Wie bereits in meinem letzten Artikel erwähnt, dient pydemod als Grundlage für die Decodierung der empfangenen Signale von den einzelnen Thermometern. Christophe Jacquet, der Entwickler von pydemod hat dieses vor kurzem optimiert, sodass es nun auch auf dem Raspberry Pi einwandfrei funktioniert (vielen Dank dafür!).

Funkthermometer

Auf Basis der Erkenntnisse zu meinen Funkthermometer aus dem letzten Artikel habe ich das überarbeitete pydemod an meine Sensoren angepasst und hier und da noch kleinere Optimierungen vorgenommen, damit es auch mit mehreren Sendern einigermaßen stabil läuft und brauchbare Werte liefert. Das neue Script (Achtung: Nicht sehr sauber programmiert und nur mit meinen Sensoren lauffähig) findet ihr hier. Die Anwendung des Scripts erfolgt analog zu dem aus meinem letzten Artikel mit dem Unterschied, dass es nun deutlich schneller ist und auch auf dem RPi funktioniert.

 

2. Speichern der Daten

Als Speicherungsmethode für die Temperatur- und Luftfeuchtigkeitswerte habe ich wegen der einfachen Handhabung und der doch recht überschaubaren Datenmengen .csv-Dateien gewählt. Die entsprechende Speicherungsfunktionen sind auch im oben verlinkten Script bereits enthalten. Wie ihr seht, werden (bzw. können) die Werte mehrfach abgespeichert. Die vom Script erzeugte Datei „log.csv“ im Ordner „pydemod/src“ dient mir lediglich als lesbares Logfile und wird für die spätere Darstellung nicht benötigt. Für das Webinterface, auf dem ich die Werte visualisiere (dazu später mehr) kommen lediglich die Dateien in „var/www/x“ zur Anwendung. Hier speichere ich die Werte mit einem timestamp ab, der für die spätere Auswertung mittels JavaScript benötigt wird. Diese .csv-Dateien werden jeden Tag neu erstellt mit dem aktuellen Datum im Dateinamen. Zusätzlich werden je Sensor und damit je Unterordner in „var/www“ 2 .csv-Dateien mit den jeweils aktuellen Werten von Temperatur und Luftfeuchtigkeit angelegt. Diese Dateien werden nicht zwingend benötigt, da sie im Grunde redundant zu den täglichen .csv-Dateien sind, allerdings nehmen sie kaum Speicherplatz ein und wurden aus „historischen“ Gründen mitübernommen – sprich: Ich habe anfangs nur die aktuellen Werte über das Webinterface dargestellt und habe die Ansicht der historischen Daten erst nachträglich ergänzt.

 

3. Das Webinterface

Um die Dateien darzustellen, habe ich mir mit Hilfe von „highcharts“ ein kleines Webinterface gebastelt, dass die aktuellen Werte und den Tagesverlauf der Werte darstellt. Die Grafiken werden mit Hilfe von dem eben erwähnten „highcharts“ erstellt. Die Ordnerstruktur des Webinterfaces habe ich folgendermaßen gestaltet:

Ordnerstruktur Webinterface

Falls ihr Interesse habt, das Ganze selbst nachzubauen, habe ich euch hier die Webinterface-Dateien (aus Linzenz-Gründen ohne Bilder) in eine .zip-Datei gepackt (nicht über die komischen Namen in den .css-Dateien wundern, diese wurden in angepasster Weiße vom Webinterface zur Steuerung der Funksteckdosen übernommen). Hier noch ein paar Bilder zum Interface, damit ihr euch auch ohne Installation etwas darunter vorstellen könnt:

Webinterface Startseite

Webinterface "Wohnzimmer"

Highcharts lässt sich sehr flexibel den eigenen Vorstellungen anpassen und war nicht zuletzt deswegen meine erste Wahl. Auch ist es ziemlich flott und lässt sich auch auf „Touch-Geräten“ intuitiv bedienen.

 

4. Mögliche Probleme

Wie bei jeder (Funk-) Übertragung kann es natürlich auch hier zu Problemen kommen bei der Übertragung der Daten. Komplett irrsinnige Werte habe ich bereits im Python-Script vor dem Speichern abgefangen, allerdings kommt es hin- und wieder zu Ausreißern unter den Werten (plötzlicher Temperatursturz um 20° etc.). Das Projekt ist daher eher experimentell anzusehen, läuft allerdings ohne größere Probleme bei mir seit ein paar Tagen im Dauereinsatz.

 

5. Weitere Ideen

Mir fallen momentan noch beinahe täglich neue Ideen zu diesem Projekt ein.

5.1 Android Widget

Was ich als nächstes anpacken werde, ist wohl die Programmierung eines Widgets für Android, damit ich die Temperaturen und Luftfeuchtigkeitswerte immer direkt auf dem Home-/Lockscreen habe. Ob ich das hinbekommen bzw. die Zeit dazu finde, kann ich noch nicht genau sagen, aber wenn es soweit ist, werde ich das Widget hier natürlich ebenfalls veröffentlichen.

5.2 Historische Werte via Date-Picker / andere Ansichten

Auch das Webinterface werde ich noch erweitern, um einen Datums-Picker und evtl. noch Wochen-/Monats-/Jahresansichten. Veröffentlichung wenn fertig natürlich auch hier.

5.3 eBook-Reader-Interface

Zusätzlich zum „normalen“ Webinterface plane ich auch noch ein eBook-Reader-freundliches Interface zu gestalten. Dieses wird voraussichtlich aus einer einzigen Seite bestehen, auf der alle aktuellen Werte dargestellt werden.


So, das wär dann alles zu meinem kleinen Projekt in Kurzform. Bei Fragen oder Anregungen dürft ihr gerne das Kommentarfeld benutzen.

Stay tuned!