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. :-[