Intern

天気APIで傘が必要か表示

Node-redにて天気APIを使用し、東京の現在の気温と傘が必要かどうかを表示するものを作成しました。

まず初めに天気APIkeyを取得します。

https://openweathermap.org

こちらのサイトでアカウント登録を行い、天気APIを取得します。(アカウント登録は無料で出来ます)

Node-red

次にNode-redにて node-red-dashboard ノードをインストールします。

フローにInjectノードを置きます。名前を「今の天気を取得」にしました。

payloadをtimestampにしておくことでボタンが押されたタイミングの天気を教えてくれるように設定します。

続いてHTTP Requestノードを追加しInjectノードとワイヤーで繋げます。メソッドをGETにし、URLに先ほど取得したOpenWeatherMap APIキーを入力します。

次にHTTP RequestノードからJSONノードに繋げます。APIから返ってくるデータはJSON形式の文字列なので、これを使いJavaScriptオブジェクトに変換します。

次に傘が必要かどうかを判定するためにFunctionノードを追加します。中身は下記のコードを入力。

// 天気と気温を取得
let weather = msg.payload.weather[0].description;
let temp = msg.payload.main.temp;

// 傘必要か判定
let umbrella = weather.includes("雨") ? "傘が必要です" : "傘はいりません";

// 表示用に成形
msg.payload = {
  天気: weather,
  気温: temp + " ℃",
  傘: umbrella
};
return msg;

ui_textノード3つをFunctionノードに繋げます。

1. 天気表示用

  • Label:天気
  • Format{{msg.payload.天気}}

2. 気温表示用

  • Label:気温
  • Format{{msg.payload.気温}}

3. 傘判定表示用

  • Label:傘は?
  • Format{{msg.payload.傘}}

3つとも「Group」は「天気情報」に設定しています。

injectノードのボタン「今の天気を取得」をクリックすることで上記のように現在の天気、気温、傘の必要の有無が表示されました。

まとめ

今回は天気APIを使って天気、気温、傘が必要かどうかを判定するフローを作成しました。天気APIを初めて使いましたがかなり細かい情報を得ることができ面白いと感じました。これを使って朝8時など定刻で天気情報を知らせてくれるものも面白いと思いました。