RPi-Projekt Twitternde Webcam: Wechsel der Wetter-API
Geschrieben von Mario Hommel amIch hab es irgendwie nicht mitgeschnitten, aber als ich damals im Projekt die Wetter-API von worldweatheronline.com implementiert habe, dachte ich noch, es gäbe eine kostenlose Variante der API. Komischerweise ist das auch immer noch auf der Webseite in den FAQs so zu lesen. Allerdings bemerkte ich jetzt nach dem Ablauf des Testzeitraums für den Premium-Zugriff, dass ich nirgends auf die freie Version der API wechseln konnte. Ein weinig Googlen brachte mich dann auf einen Facebook-Post von WorldWeatherOnline, in dem angekündigt wurde, dass es ab April keine neuen kostenlosen Accounts mehr gibt. Also kurz bevor ich meinen Account erstellt hatte.
Ok, also habe ich mich mal im Netz nach einer kostenlosen Alternative umgesehen und mit bei OpenWeatherMap hängen geblieben. Dort wird eine einfache kostenlose API angeboten, mit der ich die momentanen Wetterdaten und einige grundlegende Vorhersagen abrufen kann. Reicht mir völlig.
Das momentane Wetter ruft man über die URL
http://api.openweathermap.org/data/2.5/weather?id=2803564&units=metric&appid=[DeinApiKey]
auf.
Die Antwort als JSON-Objekt ist recht simpel:
{"coord":
{"lon":145.77,"lat":-16.92},
"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],
"base":"cmc stations",
"main":{"temp":293.25,"pressure":1019,"humidity":83,"temp_min":289.82,"temp_max":295.37},
"wind":{"speed":5.1,"deg":150},
"clouds":{"all":75},
"rain":{"3h":3},
"dt":1435658272,
"sys":{"type":1,"id":8166,"message":0.0166,"country":"AU","sunrise":1435610796,"sunset":1435650870},
"id":2172797,
"name":"Cairns",
"cod":200}
Also sieht der Teil meines Python-Skripts, dass die beiden Temperaturwerte ausgiebt, nun so aus:
url = "http://api.openweathermap.org/data/2.5/weather?id=2803564&units=metric&appid=xxxxxxxxxxxxxxxxx"
try:
response = urllib.urlopen(url)
except:
print ("Error getting foreign weather")
object = json.load(response)
cTemp = int(object["main"]["temp"])
hTemp = int(object["main"]["temp_max"])
# now we get the complete text for the tweet
ttext = "Täglicher Blick über Bad Zwesten bei " + str(cTemp) + " Grad. Die erwartete Höchsttemperatur beträgt heute " +str(hTemp) + " Grad. #raspitweet"
So sollte das Ganze erstmal wieder funktionieren. Vielleicht mache ich noch mal ein paar andere Sachen mit der Wetter-API, mal schauen.