// Über externe Wetterdaten

Leider hat YAHOO! den Wetterservice vor einer Woche umgestellt. Damit funktionierte folgende Methode zum Auslesen der externen Wetterdaten (als Vergleich) nicht mehr:

#Humidity
w3m -dump http://weather.yahoo.com/germany/baden-wurttemberg/schutterwald-12836276/?unit=c | grep -A21 "Current" | sed 's/DEG/°/g' | head -9 | tail -n1 | awk '{print $1}'
 
#Temperature
w3m -dump http://weather.yahoo.com/germany/baden-wurttemberg/schutterwald-12836276/?unit=c | grep -A25 "Current" | sed 's/DEG/°/g' | head -n25 | tail -n1
 
#Dewpoint
w3m -dump http://weather.yahoo.com/germany/baden-wurttemberg/schutterwald-12836276/?unit=c | grep -A21 "Current" | sed 's/DEG/°/g' | head -n13 | tail -n1 | awk '{print $1}'

Da ich zu dieser Zeit auf Studienfahrt in Prag war, konnte ich mich erst letztem Wochenende diesem Problem widmen. Für diese Zeit fehlten dann leider die externen Wetterdaten:

Eine provisorische Lösung

Die Daten von YAHOO! sind eigentlich nicht zu gebrauchen: es fehlen Taupunkt und rel. Luftfeuchtigkeit und ohne Javascript ist das Auslesen nur in °F möglich :-(
Da YAHOO aber im Endeffekt auch nur Wetterdaten von TheWeatherChannel verwendet habe ich mir TWC mal genauer angeschaut:

  • Die amerikanische Seite ist genauso schwer auslesbar,…
  • die deutsche Unterseite hingegen scheint etwas hinterher zu sein (Tabellenlayout…)

…und bot mir die ideale Möglichkeit für eine provisorische Lösung:

#wget verwenden, w3m -dump schlechte Idee, w3m -dump_source funtzt nicht
TWC_TMP="/tmp/weather_twc_tmp"
wget "http://de.weather.com/weather/local/77746?x=0&y=0" -O $TWC_TMP > /dev/null 2>&1
 
#Dewpoint
cat $TWC_TMP | grep -A2 Taupunkt | tail -n 1 | cut -d '>' -f 2 | cut -d'&' -f1
 
#Humidity
cat $TWC_TMP | grep -A2 Luftfeuchtigkeit | tail -n 1 | cut -d '>' -f 2 | cut -d'%' -f1
 
#Temperature
cat $TWC_TMP | grep '<TD COLSPAN="2"' | head -n 1 | cut -d ';' -f 2 | cut -d '&' -f 1

Hinweis: Diese Methode funktioniert mittlerweile auch nicht mehr, in diesem Post findest du eine funktionierende Lösung.
Mehr als eine provisorische Lösung ist das aber nicht. Sobald die Seite relaunched wird (bei dem Layout wohl bald) oder gewisse Dinge verändert werden, hocke ich vor dem gleichen Problem. Ich hasse es von externen Anbietern abhängig sein zu müssen.

Richtige APIs

Längerfristig muss man folglich auf APIs zurückgreifen. Hier existieren zwei erwähnenswerte:

TheWeatherChannel bietet ebenfalls eine API an - allerdings nicht kostenlos. Wenn du weitere oder bessere Wetter APIs kennst, würde ich mich über einen Kommentar freuen.

YAHOO! Weather API

Die YAHOO API ist aber ähnlich unbrauchbar wie der Webdienst. Es fehlen wieder Taupunkt und rel. Luftfeuchtigkeit. Ist aber einfacher auslesbar als der Webdienst. Die URL setzt sich wie folgt zusammen:

http://weather.yahooapis.com/forecastrss?w=[Ortsid]&u=[Einheit (hier °C, also c]

Die Ortsid lässt sich aus der URL des Webservices bestimmen. Dazu muss man hier nach dem passenden Ort suchen. Anschließend kann man aus der URL die ID auslesen - Beispiel (ID hier: 693419):

http://weather.yahoo.com/germany/baden-wurttemberg/schutterwald-693419/

Nun kann man sich die URL „zusammenbauen“ (Fortführung vorheriges Beispiel):

http://weather.yahooapis.com/forecastrss?w=693419&u=c

Google Wetter API

In der API von Google findet sich auch die rel. Luftfeuchtigkeit. Der Taupunkt fehlt aber ebenfalls. Die URL setzt sich wie folgt zusammen:

http://www.google.com/ig/api?weather=[PLZ]&hl=[Sprache]

Folglich müsste ich diese URL verwenden:

http://www.google.com/ig/api?weather=77746&hl=de

Das Auslesen dürfte überhaupt kein Problem darstellen.

Weitere Wetterstationen & Vergleichswerte

Vergleichswerte sind aus meiner Sicht wichtig, um zu prüfen, in wie weit die gemessenen Werte der Realität entsprechen, d.h. Abweichungen/Messfehler zu erkennen und evtl. deren Ursachen auszumachen und zu beseitigen.
Die oben genannten Dienste verwenden hauptsächlich Daten der Wetterstation des Flughafens Lahr. Lahr liegt ganz in der Nähe (etwa 11 km Luftlinie) von Schutterwald (Position meiner Wetterstation). Auch beträgt der Höhenunterschied zwischen Flughafen(!) Lahr und Schutterwald (Position meiner Wetterstation) nur rund 4 m. Allerdings liegt Lahr viel näher am Schwarzwald (Lahr liegt im Schwarzwald). Die Vergleichswerte können folglich bedingt als solche erachtet werden, erklären aber gleichzeitig bestimmte Abweichungen, die auf die unterschiedliche Lage beider Stationen zurückzuführen sind.
Doch um einen wirklich aussagekräftige Vergleiche ziehen zu können, müssen Werte weiterer Wetterstationen herangezogen werden. Eine Übersicht über Wetterstationen in deiner Nähe erhältst du auf folgender Karte:

Umfassendere Werte gibt es dann auf meteo-allerta.it:

Viele Unis und Hochschulen verfügen auch über Wetterstation. In meinem Fall wäre dies die Hochschule Offenburg:

Damit hätte ich zumindest vorerst Zugriff auf genügend fremde Messwerte, womit Vergleiche wieder möglich sind. Es ist nur eine Frage der Zeit, bis ich von der provisorischen TWC Methode auf eine API umsteige. So wie es im Moment aussieht wird es wohl am ehesten die von Google.

Leave a comment…




   ___   _____  _   __   ___   _   __   _  __   __    __    __ __  _      __   ____ __  __
  / _ \ / ___/ | | / /  / _ \ | | / /  / |/ /  / /   / /   / // / | | /| / /  / __/ \ \/ /
 / // // (_ /  | |/ /  / // / | |/ /  /    /  / /__ / /__ / _  /  | |/ |/ /  / _/    \  / 
/____/ \___/   |___/  /____/  |___/  /_/|_/  /____//____//_//_/   |__/|__/  /___/    /_/
  • E-Mail address will not be published.
  • Formatting:
    //italic//  __underlined__
    **bold**  ''preformatted''
  • Links:
    [[http://example.com]]
    [[http://example.com|Link Text]]
  • Quotation:
    > This is a quote. Don't forget the space in front of the text: "> "
  • Code:
    <code>This is unspecific source code</code>
    <code [lang]>This is specifc [lang] code</code>
    <code php><?php echo 'example'; ?></code>
    Available: html, css, javascript, bash, cpp, …
  • Lists:
    Indent your text by two spaces and use a * for
    each unordered list item or a - for ordered ones.
Hello World!

This is the personal website of Christoph Winkler.
Here you will find a sort of blog and some information about me and my projectshave fun!

Recent Comments
Latest Tweets
QR-Code: aktuelle Seiten-URL
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 3.0 Unported