APIが公開されたデータベースからのデータ取得方法
1.概要
一般的にAPIが公開されているデータベースからのデータの取得方法に関して説明します。気象庁の天気予報情報です。Node-REDからデータを取得し、結果をNode-REDに表示します。
2.気象庁の天気予報情報
APIとしては、以下のアドレスにアクセスするだけです。天気予報がJSON形式で入手できます。
1) 滋賀県の天気概要:https://www.jma.go.jp/bosai/forecast/data/overview_forecast/250000.json
2) 滋賀県の北部と南部の天気予報:https://www.jma.go.jp/bosai/forecast/data/forecast/250000.json
最後の数字が地域の数字になっています。参考HPによると“130000”は、東京都のようです。数字を変えて調べてみてください。
滋賀の周辺は以下の通りです。
三重県:240000、京都府:260000、大阪府:270000、愛知県:230000
2-1.滋賀県の天気概要
概要取得のNode-REDを以下に示します。ダッシュボードに整形して表示したののも表示します。
基本は、injectノードとhttp requestノードとデバッグノードだけです。
http requestノードは、メソッドを“GET”にして、URLに前ページのURLを記載するだけです。
inject ボタンを押すと、JSONがデバッグ画面に表示されます。
ダッシュボードは、textノードだけ。
表示したいキー項目をValue formatの欄に記載します。
下記の例では、”{{msg.payload.targetArea}}の天気予報【概要】”と記載しています。
“{{msg.payload.targetArea}}”と二重{}で囲った部分にJSONの値が入ります。
参考HP:
1) 気象庁の天気予報JSONファイルをWebAPI的に利用したサンプルアプリ
2-2.滋賀県の北部と南部の天気予報
取得したデータには、当日から2日間の天気予報が含まれています。ダッシュボードへの表示用Node-REDを以下に示します。
ダッシュボードに整形して表示したののも表示します。
天気予報では、概要の場合と異なる部分があります。URLにアクセスすると返ってくるデータが配列(array)を持っていることです。日時(timeDefines[2:0])と天気予報(weathers[2:0])と風予報(winds[2:0])が配列の引数で対応しています。明日の日付は引数1で、それぞれ引数1をみれば、明日の天気と風の予報が分かります。これがAPIの構成を表します。この場合、APIの説明はないので、自分でJSONから読み解かないといけません。
同様に地域(areas[1:0])も、areas[0]が滋賀県南部、areas[1]が滋賀県北部のデータであることを読み解きます。
これらの情報を使って、南部の天気予報と北部の天気予報を、それぞれ、本日、明日、明後日とダッシュボードに表示させています。
天気予報概要と異なる点は、日付のフォーマット変更にDate/Time formatterノードを使用としてるところと、 textノードに上記の配列を使って表示させているところです。
Date/Time formatterノードのプロパティを示します。元の日時情報がUTCの表示になっていますので、わかりやすく日付だけのフォーマットに変更しています。その際に入力/出力とも同じ配列を指定しています。
もう一つ例として、北部天気(明後日)のtextノードのプロパティを示します。
LabelにDate/Time formatterで変換してデータを表示し、天気予報と風予報を Value formatに表示しています。2つのデータをシリアルにスペースを挟んで並べています。
{{payload[0].timeSeries[0].areas[1].weathers[2]}} {{payload[0].timeSeries[0].areas[1].winds[2]}}