Kampis Elektroecke

Auslesen von Wetterdaten

Raspberry Pi

In dieses Beispiel möchte ich zeigen, wie Wetterdaten abrufen und mittels eines Python-Programms weiter verarbeitet werden können. Auf diese Weise kann z. B. das aktuelle Wetter auf einer Webseite oder dem Bildschirm ausgegeben werden. Als Quelle für die Wetterdaten soll die Datenbank von OpenWeatherMap genutzt werden.

Den Dienst nutzen:

Um den Dienst nutzen zu können, ist ein API-Schlüssel notwendig, für den ein Account bei OpenWeatherMap benötigt wird. Sowohl der Account, als auch der API-Schlüssel sind umsonst. Sobald der Account angelegt worden ist, kann man über das Menü API keys seines Profils einen neuen API-Schlüssel erzeugen (der gezeigte Schlüssel ist nur ein Testschlüssel).

Der neue API-Schlüssel steht dann sofort zur Verfügung und kann direkt verwendet werden.

Mit dem Gratisabonnement können Informationen zum aktuellen Wetter oder einer Vorhersage für 5 Tage im 3 h Intervall abgerufen werden. Weitere Dienste sind dann kostenpflichtig.

Aktuelle Wetterdaten können nach der Anmeldung und nach dem Erzeugen eines API-Schlüssels mit der folgenden Anfrage abgerufen werden:

Die Werte Stadt und Schlüssel werden mit der abzufragenden Stadt und dem angelegten API-Schlüssel ersetzt. Das Ergebnis der Abfrage sind die Daten im JSON-Format, die dann ausgewertet werden können.

Was ist eine JSON-Datei?:

Eine JSON-Datei (JavaScript Object Notation) ist eine Datei, die Daten, bzw. Datenstrukturen in einer kompakten Datenstruktur abgelegt. Sie ermöglicht es Daten effizient zwischen verschiedenen Anwendungen, wie z. B. das Internet oder andere Computersysteme auszutauschen. Sämtliche Daten sind als Klartext hinterlegt und können demnach auch von Menschen gelesen werden.

Eine JSON-Datei besteht aus einer Struktur, die mit Schlüssel/Werte-Paaren gefüllt ist. Einzelne Elemente können auch wieder als Struktur aus Schlüssel/Werte-Paare bestehen.

Durch diesen einfachen Aufbau lassen sich JSON-Dateien von verschiedenen Interpretern leicht einlesen.

Einlesen der Daten mittels Python:

Zum Einlesen der Daten sollen die Python-Module requests und json genutzt werden.

Anschließend wird ein neues Python-Skript geöffnet und die beiden Module importiert. Über die get-Methode des Modul requests wird dann eine neue Anfrage abgesendet.

Die Antwort der Anfrage wird in einem Response-Objekt mit dem Namen Response gespeichert und kann über die json-Methode dieses Objektes in eine JSON-Struktur geparsed werden. Über die dumps-Methode des json-Moduls kann das Ergebnis dann in der Konsole ausgegeben werden.

Das Resultat ist die JSON-Struktur mit den vollständigen Wetterdaten des jeweiligen Tages:

Natürlich kann die Ausgabe jetzt noch etwas aufgehübscht werden, indem die einzelnen Elemente ausgelesen und angezeigt werden.

Alternativ kann man sich auch eine hübsche GUI bauen, wie ich es z. B. mit Node-RED gemacht habe.

Die komplette GUI ist für den Raspberry Pi Bildschirm optimiert und zeigt das Wetter inkl. UV-Werte, eine Vorhersage für 5 Tage sowie eine Regen-, bzw. Wolkenkarte an. Die Daten werden zudem in einer SQL-Datenbank mitgeloggt.

Das Python-Skript gibt es bei GitLab zum Download.

Last Updated on

4 Kommentare

  1. Die Idee die Wetterdaten mit einem Python-script zu lesen ist sehr gut, allerdings habe ich das gleiche Problem und exakt die gleichen Fehlermeldungen wie
    enshiro vom 10. November 2017 um 18:25 Uhr
    Leider gibt es dazu eine Antworten.
    Ich habe danach eine die Webseite geändert in
    Baum = urllib.urlopen(“https://www.yahoo.com/news/weather/”).read()
    Dann kommt schon ein Fehler bei der Zeile
    Baum = parseString(Baum)
    Ich komme leider nicht zu einem funktionierenden Script.
    Meine Frage wäre noch, ob das Script auch unter Python3 lauffähig ist ?

Schreibe einen Kommentar zu Kampi Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.