Sonntag, 23. Februar 2014

Auslesen von Temperaturwerten der Außensensoren einer Funk-Wetterstation

Es gibt viele Funk-Wetterstationen auf dem Markt. Viele dieser Stationen können über Außensensoren erweitert werden, welche glückerlicherweise auf dem 433Mhz Band die Temperaturen übertragen.

An meinem RaspberryPi habe ich ein Sende- und ein Empfangsmodul angeschlossen. Da es mehrere Module davon gibt, habe ich mich auf die Empfehlung von pilight verlassen, da ich diese Bibliothek bereits verwende, um Funksteckdosen zusteuern. Die Installation und die Module sind unter folgendem Link zu finden: http://wiki.pilight.org/doku.php/electronics .
Für die Temperatur-Außensensoren habe ich mich für PEARL Funk-Außensensor für Wetterstation entschieden.

Nun kommen wir zur Installation:

Nachdem die Hardware angeschlossen ist, kann die Software-Einrichtung beginnen.
Zunächst einmal benötige ich die pilight-Bibliothek. Hierfür muss man zunächst ein Repository hinzufügen, da pilight selbst nicht über die Standard-Repositorys zur Verfügung steht.
Hierfür öffnet man folgende Datei
sudo nano /etc/apt/sources.list
und fügt am Ende der Datei die folgende Zeile:

deb mirror://apt.pilight.org/mirror.txt stable main

Den nano-Editor schließt man mit [CTRL]+X --> Y --> [ENTER]
Da dieses Repository signiert ist, benötigt man nun den Public-Key, da mit die Daten erfolgreich und verschlüsselt übertragen werden können.

sudo wget -O - http://apt.pilight.org/pilight.key | sudo apt-key add -

Nun kann man ganz klassisch das pilight-package installieren:

sudo apt-get update

sudo apt-get install pilight

Nach hoffentlich erfolgreicher Installation kann der Pilight-Dienst über 

sudo service pilight start / stop

starten und stoppen. Dieses Programm läuft nun im Hintergrund und steuert die GPIO-Schnittstelle und die da angeschlossenen Sende- und Empfangsmodule. 
Damit man nun die Temperatursensoren auslesen kann, sollte zunächst einmal der Befehl 

sudo pilight-receive

Dieser Befehl gibt alle Daten, welche das Empfangsmodul empfängt und pilight dekodieren kann aus. Es sollten nun Daten der form:

{
        "code": {
                "id": 1420,
                "temperature": 152
        },
        "origin": "receiver",
        "protocol": "alecto",
        "repeats": 6

}

erscheinen. Dies sind die Daten der Außenthermometer. Hier ein paar Infos zu den Feldern.
  • ID: ID des Sensor zur eindeutigen Identifikation bei der Verwendung mehrerer Sensoren.
  • temperature: Die gemessene Temperatur. Der Wert muss noch durch 10 geteilt werden um die richtige Temperatur zu erhalten. ;-) Im Beispiel herrschen 15,2°C
  • protocol: gibt an welches Protokoll pilight zur Dekodierung verwendet hat. "alecto" ist dabei das Protokoll der Wetterstationen. (zumindest der verwendeten)
  • repeats: Die Sensoren senden ihre Daten 6x hintereinander, um eine fehlerhafte Übertragung zu verringern. So geht der Hersteller sicher, das die Daten auch an der Wetterstation ankommen. repeats listet den aktuellen Versuch der Übertragung.

Nun hat man eigentlich die Sensoren ausgelesen.Damit man die natürlich noch weiterverarbeiten kann, lasse ich diese Daten in eine Datei schreiben. Dies realisiere ich über ein BASH-Skript.

#!/bin/bash

pilight-receive | tee /tmp/pilight.txt &

Dadurch werden alle Messwerte in die Datei: /tmp/pilight.txt geschrieben. Somit kann dann mittels eines anderes Skripts die Dateien einfach verarbeitet werden. 
Ich habe mir hierfür ein PERL-Skript geschrieben, was den Inhalt der Datei ausliest und mittels eines regulären Ausdrucks von jedem Sensor den ersten übertragenen Wert verwendet und diesen inkl. der zugehörigen Sensor-ID in eine Datenbank schreibt.



4 Kommentare:

  1. Das ist Großartig! Nachdem die Luft sowieso immer schlechte und schlechter wird, können solche Temperature- bzw. Humidity Sensoren zukunftsnahe sehr profitabel sein! Lg

    AntwortenLöschen
  2. Kannst Du das PEARL SCRIPT bereitstellen. Bitte ;:)

    AntwortenLöschen
  3. Danke für die gute Anleitung.
    Die Installation endete jedoch mit der Fehlermeldung:
    "Die folgenden Pakete haben unerfüllte Abhängigkeiten:
    pilight : Hängt ab von: libmbedcrypto0 soll aber nicht installiert werden
    Hängt ab von: libmbedtls10 ist aber nicht installierbar
    E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete."
    Muss ich zuvor noch andere installieren?
    Danke schon mal mit den besten Grüßen
    Karlheinz

    AntwortenLöschen