LoginSignup
10
8

More than 5 years have passed since last update.

天気予報とか気象情報(Weather Company Data)をNode-REDで使ってみる

Last updated at Posted at 2016-12-19

はじめに

Node-REDには初めから「Weather Insightsノード」があるので、いまの天気の状態とか、これからの天気予報のデータを扱うアプリを作るのに便利です。例えばスマホ内のカレンダーと連動して、これから行く先の天気を見据えて、傘(Bluetooth付き)の持参を促したり、洋服のコーディネートの相談ができるアプリとか...。

Screen Shot 2016-12-19 at 18.30.10.png

使い方の大まかなイメージは、まず緯度経度と言語と単位を設定して...

Screen Shot 2016-12-19 at 18.33.52.png

いまの天気状態(Observation)が知りたいのか?それとも、これからの天気予報(Forecast)を知りたいのか?を選ぶだけ...

Screen Shot 2016-12-19 at 18.35.44.png

...だけなのだが、ハマりどころはあって、それは出力結果が msg.forecasts, msg.observation , msg.observations に分かれて出るところ。つまり msg.payloadじゃないから、要注意。

Screen Shot 2016-12-19 at 18.40.55.png

もちろんこのノードを使えるようにするには、Weather Company Dataサービスを契約しておかないといけないので後述。

Screen Shot 2016-12-19 at 18.15.28.png

なお、この天気データは、あのiPhone公式「天気」アプリと同じ元データで、データ更新頻度は1時間ごとなので、アプリからの更新頻度も最短1時間ごとにすると良いかも。
Weather.jpeg

今回のフローのソースはこちら

flow.json
[{"id":"df71d016.2fe0d","type":"inject","z":"421ff698.b098a8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":105.5,"y":75,"wires":[["e72fe020.d21ff8"]]},{"id":"7cb23f06.d920a8","type":"debug","z":"421ff698.b098a8","name":"","active":true,"console":"false","complete":"forecasts","x":386.5,"y":198,"wires":[]},{"id":"e72fe020.d21ff8","type":"weather_insights","z":"421ff698.b098a8","name":"","service":"/forecast/daily/10day.json","geocode":"35.681298,139.766247","units":"m","language":"ja-JP","x":244.62600708007812,"y":138.11885356903076,"wires":[["7cb23f06.d920a8","e11251a3.f8b65","33ccfa67.bb131e"]]},{"id":"e11251a3.f8b65","type":"debug","z":"421ff698.b098a8","name":"","active":true,"console":"false","complete":"observation","x":393.5641403198242,"y":244.2085018157959,"wires":[]},{"id":"33ccfa67.bb131e","type":"debug","z":"421ff698.b098a8","name":"","active":true,"console":"false","complete":"observations","x":393.96370697021484,"y":288.8330707550049,"wires":[]}]

Node-REDでの事前セットアップ

新規でWeather Company Dataサービス追加の場合

IMG_0579.PNG

Node-REDのCloud Foundryアプリのダッシュボードで、左にある「接続(Connections)」をクリック、次に右にある「新規接続(Connect new)」をクリック。

IMG_0580.PNG

新しいサービスとして追加するために、フィルター部分にweatherと入力で絞り込みして Weather Company Dataをクリック。

IMG_0581.PNG

サービスの契約内容に問題なければ、右下の「作成(Create)」をクリック。

IMG_0582.PNG

「再ステージ(Restage)」をクリック。

IMG_0583.PNG

ダッシュボードに戻ってきて、サービスが追加されていればOK。

既にWeather Company Dataサービスがある場合

上記と同じ要領で、ありもののサービスを選んで追加。再ステージ。

Node-REDでWeather Insightsノードを追加

IMG_0588.PNG

とりあえず確認のため、定番のInjectノードとDebugノードを追加して、二つを接続。

IMG_0586.PNG

左のノード一覧の中にWeather Insightsがあるのだが見つけずらいので、左上のフィルター部分で「wea」と入力してノードをしぼりこみ。さっきのノード間の線の上にドラッグし、点線になったらドロップ。

IMG_0587.PNG

こんな感じにInjectノード、Weatherノード、Debugノードがつながる。

Screen Shot 2016-12-19 at 18.33.52.png

Weatherノードを設定。例では天気予報(Forecast)を選び、緯度経度に東京駅の緯度経度を入力して、最後に言語にja-JPと入れると日本語で返ってくる。

今のところ、このサービスでは次の4つの操作を実行できるようになってる。

  • 天気予報(48時間分) (※以前は24時間分だった?)
  • 天気予報(10日間分)
  • 現在の気象観測情報
  • 現在の気象観測情報+過去24時間の観測情報

また、次の3つのパラメーターが必要。

  • unit: APIレスポンスで返す単位。サポートされている測定単位は、ヤード・ポンド法 (e)、メートル法 (m)、および UKハイブリッド (h) 。日本なら「Metric」
  • location: 気象情報の起点となる緯度と経度。例えば、東京駅の場合は「35.681298,139.766247」と指定。
  • language: 返されるレスポンスで使用する言語。デフォルトは「en-US」日本語なら「ja-JP」

IMG_0589.PNG

しかしInjectノードをクリックして結果を見ると、なぜかJSONが返ってこない...

IMG_0590.PNG

Weatherノードのinfoに詳しくは記載があるが、アウトプットはmsg.forecastsに入っているので、Debugノードを編集する。

IMG_0591.PNG

同じ要領で msg.forecasts, msg.observation , msg.observations を用意、それぞれに合わせた結果が戻ってくる。

Screen Shot 2016-12-19 at 18.40.55.png

参考

IMG_0592.PNG

iOS, Androidサンプルアプリ

チュートリアル

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8