Wetterstation

Aus Wukos Wiki
Wechseln zu: Navigation, Suche

Mit Wukos können Daten von einer vorhandenen Wetterstation gelesen werden. Dazu werden Daten von Weather-Underground [1] verwendet. Das hat den Vorteil das man in Wukos immer aktuelle Wetterdaten hat, die für die Region passend sind. Es gibt aber auch Nachteile. So sind nicht alle Orte verfügbar. Außerdem kann sich das lokale Wetter doch noch unterscheiden. Für uns interessante Informationen wie die Wassertemperatur stehen leider nicht zur Verfügung. Als Ergänzung zu dem Online-Dienst, kann man eine eigene Wetterstation betreiben. Auf deren Daten kann Wukos dann zugreifen.

Eigene Wetterstation

Warnung.png

Diese Seite wird zur Zeit überarbeitet!

Bald wird sie wieder aktuell und vollständig zur Verfügung stehen. Helfe doch mit das Wiki weiter auf zu bauen!

Wukos bietet die Möglichkeit eigene Wetterdaten einzulesen. Hierzu müssen die Werte auf einer Webseite verfügbar sein. Das ganze setzt einiges Wissen voraus, aber die Grundlagen um eine eigene Wetterstation zu betreiben sollen in diesem Wiki-Eintrag vermittelt werden. Mit der Version 1.6 von Wukos können Adressen für die Luft- und Wassertemperatur von einem Administrator konfiguriert werden. Das heißt diese Werte werden dann nicht mehr über eine offiziell verfügbare Wetterstation eingelesen, sondern können direkt vor Ort gemessen werden. Wenn sollte Daten schon online existieren, können diese bereits verwendet werden! Über die angegebenen Adressen dürfen jedoch nur die Temperaturen zurück gegeben werden. Wenn dies noch nicht der Fall sein sollte, muss man noch einen Wrapper programmieren, der nur den jeweiligen Wert zurück liefert. Wenn man noch keine solchen Daten hat, kann man relativ günstig eine eigene Station bauen. Die hier vorgestellte Lösung basiert auf einem Raspberry-Pi. Über günstige Sensoren können Temperaturen eingelesen werden.

Materialliste

Es gibt viele Anbieter bei denen man das Material kaufen kann. Das hier sind nur Beispiele!

Zwingend erforderlich

Das folgende Material braucht man auf jeden Fall, wenn man es nicht schon hat. Was die Temperatursensoren angeht, da kann man sich etwas aussuchen. Das längere Kabel ist vielleicht sinnvoll, wenn man eine Wassertemperatur messen möchte.

Material Lieferant Bestellnummer Preis
Raspberry Pi B+ Reichelt RASPBERRY PI B+ EUR 29.95
Dual-USB-Lader Reichelt ANS DUAL MICRO EUR 6.50
Micro SD-Karte 16GB Reichelt INTENSO 3423470 EUR 8.95
Temperatursensor DS18B20 (1m Kabel) Amazon link EUR 2.94
Temperatursensor DS18B20 (10m Kabel) Amazon link EUR 20.90
Gehäuse ¹)

¹) Gehäuse: Es gibt eine Vielzahl von Gehäusen für Raspberry Pi. Ich denke aber das man für das Projekt nicht unbedingt ein spezielles Raspberry Pi Gehäuse braucht. Möchte man zum Beispiel den USB zu 1-Wire Adapter verwenden, oder ein LC-Display sollten die Bauteile vielleicht auch in das Gehäuse passen. Vielleicht braucht man auch ein spritzwassergeschütztes Gehäuse für Draußen? Wie auch immer, bei Reichelt und anderen Anbietern findet man sicher das Passende.

Vielleicht erforderlich

Material Lieferant Bestellnummer Preis Zweck
WLAN Adapter (Edimax) Reichelt EDIMAX EW-7811UN EUR 6.90 Ein Anschluss über LAN-Kabel ist beim Raspberry Pi B und B+ möglich. Will man ihn aber über WLAN anbinden, braucht man einen Adapter.
USB zu 1wire Adapter ²) www.raspiprojekt.de 37011 EUR 24.95 Bei größeren Kabellängen zu empfehlen! Man braucht nur einen Adapter, an dem können 10 Sensoren anschlossen werden.
LC-Display 16x2 Reichelt LCD 162C LED EUR 6.50 Temperaturen können dann auch direkt am Raspberry Pi angezeigt werden. Ein passender Einbaurahmen ist dann auch zu empfehlen.
Widerstand 560 Ohm Reichelt 1/4W 560 EUR 0.10 Wird als Vorwiderstand für das LC-Display benötigt.

²) USB zu 1wire Adapter: Auch ein Selbstbau eines Adapters ist möglich. Eine Variante ist bei [2] beschrieben.

Projekte

Grundlagen für die Wetterstation

Die hier aufgeführten Projekte haben alle ihren Teil beigetragen und liefern noch weitere Hintergrundinformationen.

  • Temperaturmessung mit DS1820 seriell [3]
  • Temperaturmessung mit DS1820 GPIO direkt [4]
  • 16x2 LCD Module [5]
  • Nutzung Highchars und USB-WDE1 Empfänger [6]

Software und Anwendungsbeispiel

Webseite

Es gibt bereits ein Beispielprojekt. Die Besonderheit ist allerdings das zusätzlich zu den Temperatursensoren (DS18B20) noch ein USB-Sensor angeschlossen ist der zyklisch ausgelesen wird. Dieser Messwert wird dann mit einem der Messwerte von den zwei angeschlossenen DS18B20 Sensoren verglichen. Die Software hierzu steht unter http://salich.de/temperatur/wetterstation.zip zur Verfügung! Folgene Informationen stellt diese Station zur Zeit zur Verfügung:

Man sollte sich erst mal die Grundlagen für die Wetterstation ansehen. Die zur Verfügung gestellte Software muss in jedem Fall angepasst werden! Wahrscheinlich steht kein USB-Sensor zur Verfügung und die Adressen für die DS18B20 Sensoren werden sich unterscheiden. Wenn noch mal Zeit besteht ändere ich die Software so, dass sie einfacher übernommen werden kann. Aber auch dann wird einiges an Wissen vorausgesetzt um eine Station aufbauen zu können.

Dateien aus dem Archiv

webseite/* 
Webseite zur Darstellung der Kurven. Die Javascripte die hierzu eingesetzt werden, dürfen nicht kommerziell verwendet werden. Wenn dies benötigt wird, müssen entsprechende Lizenzen von http://highcharts.com gekauft werden.
skripte/db_create.sh 
Shell-Skript um zu Beginn einmal die Datenbank anzulegen. Dies wird nur einmal manuell ausgeführt, dann wird eine Round-Robin-Datenbank angelegt, in der maximal die Werte von 8 Temperatursensoren gespeichert werden können.
skripte/gettemp.py 
Python-Skript zum Lesen der Temperaturen der DS18B20 Sensoren.

Am Anfang der Datei befindet sich ein Konfigurationsabschnitt. Dort sind die Adressen der Sensoren einzutragen. Außerdem befindet sich darin ein Abschnitt in dem der mit dem USB-Sensor (WDE1) gemessene Wert mit dem ersten Messwert der DS18B20 Sensoren verglichen wird. Es wird immer der geringere Messwert verwendet. Dies kann vermutlich entfallen. Ebenso kann die Ausgabe auf dem LC-Display entfallen, wenn keins verwendet werden soll. ;skripte/lcd.py :Python-Skript für Ausgaben auf dem LC-Display.

skripte/messung_wde1 
Skript zum zyklischen Lesen der Messwerte. Wenn ein USB-Sensor (WDE1) verwendet wird, wird automatisch zyklisch gemessen. Andernfalls muss das Skript abgeändert werden und zyklisch über einen Cronjob aufgerufen werden.
skripte/upload.sh 
Shell-Skript zum Upload der Messwerte. In dem Beispiel ist es so, dass die letzte Messung immer per FTP auf einen anderen Webserver hochgeladen wird. Es ist somit nicht notwendig das der Raspberry-Pi über eine dynamische Adresse aus dem Internet zu erreichen ist.

Cronjob

Die Cronjobs die in dem Beispielprojekt verwendet werden sehen wie folgt aus: # Zyklisch Messwerte online stellen */15 * * * * $HOME/wetter/upload.sh # Temperaturmessung starten @reboot messung_wde1

FTP-Konfiguration

Die Datei ftp.cfg wird von dem Skript ./upload.sh benötigt. Folgendes muss in diese Datei stehen: host ftp.meinwebspace.de user ftp-benutzer pass ftp-kennwort