sorta kinda...

主にAWS関連ですが、これに限らずいろいろ勉強したことや思ったことを書いていきます。

OpenWeatherMapからお天気情報を取ってくる

だいぶ前ですが、「外いったい何度なんや!寒すぎる!」と思ったことから、外気温を測ってDB等に入れて、それをグラフ表示したら目に見えないものが可視化できていいなーと思って試しました。

ただ、温度センサやラズパイを使ってやるにもまずはアイテムをそろえないといけないので、めんどくせーと思いずぼらしてインターネットで拾える天気情報から温度を取ってくることにしました。
その上、無料で使えるAPIを探していたところ、OpenWeatherMapというサイトを見つけたので、このAPIを使うことにしました。

このAPIを使うに当たって、Pythonモジュールがあったので、ありがたく使わせてもらうことにしました。 github.com

使い方はとても簡単で、こんな感じで情報を取ってきます。

>>> import pyowm
>>> owm = pyowm.OWM('APIキーを取得してここに入れる')

# 兵庫県三田市のお天気情報を取得
>>> obs_list = owm.weather_at_id(1853008)
>>> z = obs_list.get_weather()
>>> z.get_reference_time(timeformat='iso')
'2016-02-08 05:00:00+00'
>>> z.get_detailed_status()
'few clouds'
>>> z.get_temperature('celsius')
{'temp_max': 10.0, 'temp': 9.26, 'temp_kf': None, 'temp_min': 8.0}

若干に時差はありますが、ほぼ現在の状況が分かります。データを取ってくるのはこんな感じでできそうです。

ただ、唯一気になる点があって…

f:id:nasrinjp1:20160208150835p:plain:w250f:id:nasrinjp1:20160208150846p:plain:w250

同じ時刻(2/7 22:00)の気温が、Yahooと比べて6度以上ある!!!
この時は明らかに寒かったので、Yahooの方が正しそうです。

データの信憑性が怪しいですが、まぁ気温のデータを取ってくるという目的は果たせたので、今回は良しとします。次回はこのデータをDBに溜め込むスクリプトを作ってみたいと思います。サーバ立てるのも面倒なので、Dynamo DBがいいかな。