OpenWeatherMap
OpenWeatherMapは、無料で全世界の天気予報を取得できるサービスです。世界の各地域の3時間毎、5日後までの天気、気温、気圧、降水量などの予測が得られます。OpenWeatherMapから、これらの天気予報を取得するためには、API Keyというキーが必要です。まずはそのAPI Keyを取得し、その後天気予報を取得する方法をご説明します。
Sign inで新規登録する
https://openweathermap.org/にアクセスします。
上部の「Sign in」をクリックします。
「Create an Account」をクリックします。
Username:ユーザー名
Enter email:メールアドレス
Password:パスワード
「I am 16 years old and over」と「I agree with...」にチェック
私はロボットではありませんにチェック
[Create Accont]をクリックします。
続いて、利用目的を聞かれますがCnacelでも大丈夫でした。
確認のメールが届く
「OpenWeatherMap Account Confirmation」というメールが、先ほど設定したメールアドレス宛にすぐに届きます。このメールの「Verify your email」をクリックします。
メール認証が行われました。
API Keyの確認
「OpenWeatherMap」のページの「API keys」をクリックしても確認できます。
Keyの下にある文字列がAPI Keyです。
天気予報を取得してみる
それではAPI Keyを使って情報を取得してみましょう。
東京の現在の天気
[API Key]に取得したAPI Keyを入れて、ブラウザのアドレスのところにコピーしてみてください。
今の天気は「Rain(弱いにわか雨)」、気温は10.61℃、気圧は993hPa、湿度は93%という情報が得られました。
郵便番号で現在の天気を取得
先ほどは都市名で検索しましたが、郵便番号でも検索できます。
zip=の後に郵便番号,jpを入れます。
今の天気は「Rain(弱いにわか雨)」、気温は10.76℃、気圧は992hPa、湿度は87%という情報が得られました。
正しい郵便番号を入力しているのに、天気情報が取得できない場合があります。その場合の調べ方は、後述します。
郵便番号で天気予報を取得
weatherだったところをforecastとすると天気予報になります。
時間は世界標準時を基準にしているため、日本では+9時間する必要があります。そのため9:00の天気はRain(小雨)とありますが、日本の時間では18:00(午後6時)の天気はRain(小雨)となります。同様に21:00(午後9時)の天気はClease(晴天)。このように、3時間毎の天気予報が得られます。
郵便番号で天気予報が取得できない時
全ての地域で郵便番号検索ができるわけではないようです。例えば沖縄県那覇市泉崎の場合、郵便番号は900-0021になりますが、結果は
のように、404 ページが存在しませんという結果になってしまいます。
その場合は、都市名で検索します。
上記のページを開くとGoogleMapのように地図が表示され、その中に都市名が表示されています。
自分の知りたい場所をズームしていきます。例えば沖縄県那覇市は、
「Naha-shi」というのがあります。これが検索できる都市名です。
都市名で天気予報を検索する場合は、以下のように、「q=都市名,JP」というフォーマットになります。
[API Key]のところを、ご自身で取得したAPI keyに変更して、ブラウザのURLのところに貼り付けてみてください。
都市名で天気予報が取得できました。
データはJSON形式
ブラウザで見ると先ほどのように整列して見ることができますが、実際はこのようなテキストデータです。
JSONという形式で各データが格納されていて、JSONを解析するプログラムを使うと必要なデータを取り出すことができます。arduinoの場合ArduinoJsonなんかが使えます。
5日も不要で6時間先まで欲しい時
普通にデータを取得すると、5日先までの大きなデータとなってしまいます。マイコンで処理する場合小さい方がいいですね。例えば6時間先まででいい場合、3時間毎のデータを2つだけ取得すれば済みます。その場合は以下のようになります。
http://api.openweathermap.org/data/2.5/forecast?zip=100-0005,JP&units=metric&lang=ja&cnt=2&APPID=[API Key]
cnt=を追加して何個のデータが欲しいか設定します。
するこ、このように2セットだけのデータとなります。これでマイコンでも処理できますね。
コメント