|
Linux-Projekte
für den Raspberry Pi,
die mit Python realisiert
wurden
BR
Wetterdaten anzeigen
|
In
den Sommer der letzten Jahre hat es mich immer wieder genervt,
für die Werte der Wettervorhersage entweder den Fernseher oder
den PC, wenn auch nur kurzfristig, einschalten zu müssen. Ein
Tablet war zu diesem Zeitpunkt noch nicht vorhanden und von
SmartPhones, möglichst mit Android (Großer Bruder is watching
you), halte ich zu diesem Zweck nicht viel. Daher hatte ich mich
dazu entschlossen, die lokalen Wetterdaten für meinen Wohnort
von der WEB-Seite des Bayerischen Rundfunks (BR) herunterzuladen
und auf der bereits entwickelten LCD-Anzeige
des Raspberry Pi's anzuzeigen.
Vorbereitung
Um
die richtige Datei auf dem BR-WEB-Server zu finden waren jedoch
einige Vorarbeiten von Nöten.
|
Bildquelle: Bayerischer Rundfunk
|
Zunächst
wurde auf einem normalen Browser die Internetseite des BR mit
der Wettervorhersage über die Browseradresse
'www.br.de/wetter'
aufgerufen.
Nun konnte durch Klick auf das entsprechende
Symbol die Region ausgewählt werden. Bei mir war das
'Schwaben'
|
|
Bildquelle: Bayerischer Rundfunk
|
Als
nächstes wurde noch die Station des nächstgelegenen größeren
Ortes ausgewählt. Hier galt für mich 'Kempten'.
Dies
wurde auch wieder durch Klick auf das entsprechende Symbol
ausgewählt.
|
|
Bildquelle: Bayerischer Rundfunk
|
Hier
waren sie also, die gewünschten Wetterwerte.
Im
Moment waren die aktuellen Daten aber ganz nebensächlich.
Viel
wichtiger war das, was in der Adresszeile des Browsers stand.
|
|
Bildquelle: Bayerischer Rundfunk
|
Dies
war die für den Raspberry benötigte Adresse.
Die
hier zu sehende '&plz = xxxxx' Angabe hat allerdings
nichts mit der postalischen PLZ zu tun!
Deshalb mußte
leider der ganze 'Umweg' in Kauf genommen werden.
|
Programmierung
Jetzt
ging es an die Programmierung. Hier war nun das Modul 'urllib'
gefragt.
Damit konnte eine Datei auf der Internet-Zielseite
als lokale Datei geöffnet werden. Die entsprechende Adresse
hatte ich bereits aus der Browser-Adresszeile erhalten. Diese
lautete
"http://www.br.de/wetter/action/5_tage_prognose.do?regio=Schwaben&plz=10946&pda=true"
Nun
wurde mit Hilfe des Befehls 'urlib.urlopen( „URL-Adresse siehe
oben“)' ein lokaler Dateizugang geöffnet. Mit diesem konnte
gearbeitet werden, wie mit einer lokal geöffneten Datei. Die
WWW-Daten wurde nun zunächst zeilenweise eingelesen und in einer
lokalen Datei zwischengespeichert.
Ein bereits leicht
komprimierter Auszug aus dieser Datei:
<abbr title="relative Luftfeuchte">
Feuchte
</abbr>
</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Heute</strong></td>
<td>stark bewölkt</td>
<td>2°</td>
<td>-9°</td>
<td>49%</td>
<td>9 km/h W</td>
<td>1.010 hPa</td>
<td>79%</td>
</tr>
<tr>
<td><strong>Dienstag</strong></td>
Datenquelle: Bayerischer Rundfunk
|
Ich
weiß, das ist eine HTML-Datei und dafür gibt es bereits Module
in Python, aber ich wollte die Sache ohne externe Hilfe selbst
herausfinden, daher war nun wieder Feinarbeit angesagt.
Jetzt
wurden manuell in der lokal gespeicherten Datei die
entsprechenden Wetterwerte gesucht. Nachdem diese gefunden waren,
wurden eindeutige Schlüsselwerte davor und dahinter gesucht. Im
Anschluß wurde die Internetdatei nun auf diese Schlüsselwörter
durchsucht und die dazwischen liegenden Wetterwerte in einer
Wetterdatei gespeichert. Diese dann in einem weiteren Schritt in
Ihre Einzelwerte zerlegt und in ein Dictionaray
eingetragen.
Jetzt konnte endlich die
Aufbereitung für das LCD-Display erfolgen. Dabei gab es wie
immer einige unerwartete Problem, die aber soweit gelöst werden
konnten.
Hier
ein Beispiele der Darstellung auf dem Display
|
|
Wegen
des knapp bemessenen Platzes, mußten einige Angaben leider
gekürzt werden. In der Zeile 'Kondit.' (Wetterkonditionen)
sind nur die ersten Zeichen des letzten Wortes des
Originaltextes dargestellt. Der mögliche Anfang ist
abgeschnitten. Daher ist nicht zu erkennen, ob eventuell noch
ein „stark“ oder „gering“, bzw. „wenig“ oder
„viel“ dem eigentlichen Text vorausgeht.
|
Bei
den Temp-Zeilen wird auch nicht angezeigt, daß es sich in der
ersten Zeile um die Maximal- und der zweiten um die
Minimaltemperatur handelt.
Aber das weiß ich als
Programmierer ja.;-o
Leider
hat die Sache noch einen gelegentlichen Nachteil:
Es
passiert nicht oft, aber es ist schon vorgekommen, daß der
Betreiber der Internetseite die Struktur der Seite/ Daten
geändert hat. In diesem Falle gibt es nicht abgefangene
Fehlermeldungen im Programm, die einen Abbruch verursachen. Dann
heißt es leider, sich wieder manuell auf die Suche nach den
entsprechenden Werten und evtl. neuen Schlüsselwörtern zu
machen und diese dann in das Programm zu integrieren. :-[