Das Modul weather stellt Befehle zur Verfügung, mit welchen Browserabfragen von Wetterdaten auf dem Wetterdatenserver https://openweathermap.com durchgeführt werden können. Der Wetterdatenserver sammelt die Wetterdaten in über 200 000 Städten der ganzen Welt und aktualisiert sie jede Stunde. Folgende Daten können abgefragt werden:
"temp" | Temperatur in °C |
"pressure" | Luftdruck in hPa |
"humidity" | Luftfeuchtigkeit in % |
"temp_min" | Tagesminimum der Temperatur |
"temp_max" | Tagesmaximum der Temperatur |
"description" | Wetterlage in Worten |
"sunrise" | Sonnenaufgang in Ortszeit |
"sunset" | Sonnenuntergang in Ortszeit |
"datetime" | Datum und Zeit des Ortes |
Die Informationen aus dem Internet können angezeigt oder grafisch dargestellt werden.
Beispiel 1: Temperatur und Feuchtigkeit anzeigen
Der Befehlt weather.request(city, key) macht einen Wetterdaten-Request bei http://openweathermap.org für den gegebenen Ort. Dabei wird ein Authorisierungsschlüssel verwendet. Diesen kann man kostenfrei auf diesem Host beziehen. Wird der Parameter key weggelassen, so wird der Standardschlüssel (defaultKey) verwendet, der maximal 60 Anfragen pro Minute erlaubt.
Im ersten Beispiel wird alle 5 Sekunden die aktuelle Temperatur und Luftfeuchtigkeit in Bern (und beliebigen anderen Städten) abgefragt und im Ausgabefenster angezeigt. Dabei wird der defaultKey verwendet.
import weather from time import sleep city = "Bern, CH" #city = "Zuerich, CH" #city = "Lugano, CH" #city = "Geneve, CH" #city = "Paris, FR" #city = "London, GB" #city = "Rome, IT" #city = "Athens, GR" while True: info = weather.request(city) print("temp =", info["temp"], " humidity =", info["humidity"], "%") sleep(5) |
Erklärungen zum Programmcode:
![]() |
import weather: Importiert das Modul weather |
![]() |
weather.request(city): Wetterabfrage mit dem Standardschlüssel |
![]() |
sleep(5): Die Abfrage erfolgt alle 5 Sekunden, wobei die Daten auf dem Wetterserver in der Regel nur einmal pro Stunde aktualisiert werden. |
Beispiel 2: Daten vom Wetterserver mit GPanel grafisch darstellen
Mit Hilfe der Funktion drawGrid() (siehe Kapitel Grafen und Diagramme) kann man die Daten aus dem Internet mit einigen wenigen Programmzeilen grafisch darstellen. Um die Funktionalität des Programms zu testen, wird die Temperaturwert jede Sekunde abgefragt. Da die Umgebungstemperatur nicht so schnell ändert, genügt es, den aktuellen Wert nur einmal pro Stunde abzufragen (delay(360000)). Im Grafikfenster werden jeweils 50 Werte angezeigt, danach wird die Grafik gelöscht und die Anzeigen beim Wert x = 0 fortgesetzt.
import weather from gpanel import * makeGPanel(-5, 53, -3, 52) drawGrid(0, 50, 0, 50, "gray") setColor("blue") lineWidth(2) x = 0 while True: info = weather.request("Bern, CH") #info = weather.request("Paris, FR") temp = info["temp"] if x == 0: pos(x, temp) else: draw(x, temp) print(temp) x = x + 1 if x == 50: x = 0 clear() drawGrid(0, 50, 0, 50, "gray") delay(1000) |
|
Erklärungen zum Programmcode:
![]() |
weather.request("Bern, CH"): Aktuelle Daten für Bern werden mit einem defaultKey abgefragt |
![]() |
if x == 50: Nach 50 Werten beginnt die Aufzeichnung wieder am linken Rand des Grafikfensters |
![]() |
delay(1000): Entspricht sleep(1) aus dem Modul time. Das Programm wartet eine Sekunde. |
Beispiel 3: Alle Wetterserver-Daten abfragen
Im Ausgabefenster werden alle Daten vom Wetterserver für die gegebene Stadt angezeigt.
import weather city = "London" info = weather.request(city) print("Aktuelle Wetterdaten:", city, "\n" "---------------------------------------", "\n" "Temperatur = ", info["temp"], "°C" "\n" "Luftdruck = ", info["pressure"], "hPa", "\n" "Feuchtigkeit = ", info["humidity"], "%", "\n" "Temeratur min = ", info["temp_min"], "°C", "\n" "Temeratur max = ", info["temp_max"], "°C", "\n" "Wetterlage = ", info["description"], "\n" "Sonnenaufgang = ", info["sunrise"], "\n" "Sonnenuntergang = ", info["sunset"], "\n" "-----------------------------------------") |
![]() |
Erklärungen zum Programmcode:
![]() |
print("Aktuelle Wetterdaten", "\n"): Um eine Zeilenschaltung im Print-Befehl hinzufügen, verwendet man "\n". Diese Zeichenfolge wird jeweils am Ende der Zeile hinzugefügt. |
![]() |
Aufgaben: Serie 15 |
1) |
Öffne mit einem beliebigen Browser die Website https://openweathermap.com. Erstelle einen kostenfreien Authorisierungsschlüssel. Falls es geklappt hat, gib diesen Schlüssel im Abfragebefehl in Anführungszeichen ein |
2) |
Stelle die Luftfeuchtigkeit in einer beliebigen Stadt mit GPanel grafisch dar. Verwende das Beispiel 2 als Vorlage und passe die y-Achse entsprechend an. |
3) |
Ergänze das Beispiel 3 mit einer Input-Dialog Box, in der abgefragt wird, ob man die Daten aktualisieren soll. Falls der Benutzer eine Aktualisierung wünscht, werden die Daten erneut angezeigt, sonst wird das Programm beendet. |