熱中症アラートをつくろう

みなさん、残暑が厳しいですが、いかがお過ごしでしょうか。

「蒸し暑さ」を表す指標に不快指数があります。数字が大きいほど蒸し暑く不快であるといわれ、75%を超えると不快だと思う人が多くなるそうです。

今回は、天気APIを使って不快指数アラートをenebularで作ってみたいと思います。

不快指数とは

不快指数の計算は、

0.81×気温+0.01×湿度(0.99×気温-14.3)+46.3

です。

この式が便利なのは、気温と湿度がわかれば計算できることなのですが、Node-RED入門者の方はフローの中で四則演算はどうやってやるのかか悩む方も多いと思います。

JavaScriptに慣れている方は、functionノードを使えばよいです。しかし、せっかくなので、先日のenebular blogの記事で取り上げたJSONataを使って作ってみます。

作り方

作り方は以下の通りです。

  1. Discoverからほぼ完成しているフローを自分のプロジェクトにインポートしてください。
  2. ノードに設定情報をセットしてください。(参考:APIキーの取得方法)
    1. [OpenWeatherリクエスト情報]ノード
      1. 地域名称(OpenWeatherが提供している地域名をアルファベットで入力してください。)
      2. APIキー
    2. [Notify]ノード
      1. アクセストークン
  3. フローの左にあるInjectノードの左にある四角いボタンを押してください。フローが実行されます。

実行結果

こんな風にデバッグ画面にメッセージが表示されれば成功です。

LINE Notifyの通知も来てますでしょうか。

不快指数が75以上であることを閾値として、前もって熱中症に注意換気できるアラートができあがりました。

不快指数計算

左の方に不快指数計算というノードがあります。その中のJSONata式を使って数式を入れています。

0.81 * payload.main.temp + 0.01 * payload.main.humidity * ( payload.main.temp * 0.99 – 14.3 ) + 46.3

+マークは足し算、-マークは引き算、*マークはかけ算です。簡単な四則演算であれば、直感的に式を作ることができます。

まとめ

JSONataはEXCELの関数のように気軽に使えて便利です。

今回は不快指数という簡易的に蒸し暑さを計算できる指標を使いましたが、実は、熱中症警戒アラートというものがあり、不快指数とは別の指標が使われています。環境省の熱中症予防情報サイトに詳しいです。

自分も、もっと勉強してみようと思います。

 

参考:APIキーの取得方法

ここでは、LINE NotifyのアクセストークンとOpen WeatherのAPIキーの取得方法をご紹介します。

LINE Notify

LINEに通知するために、LINE Notifyというサービスを使用します。LINE Notifyに登録して、アクセストークンを取得し、ノードに設定する必要があります。

以下の手順でアクセストークンを取得しましょう

  1. LINE Notifyのページへアクセスします
  2. 右上のログインをクリックし、LINEのIDとパスワードを入力し、ログインします
  3. 右上の名前をクリックし、マイページへアクセスします
  4. ページ下部の『トークンを発行する』をクリックします
  5. 必要情報を入力し、発行されたアクセストークンを控えておきます

Open Weather

  1. OpenWeatherのサイトにアクセスします
  2. 画面右上の「Sign in」をクリックします
  3. 「Create an Account.」をクリックします
  4. 必要情報を入力し、内容を確認の上、下部にある「Create Account」ボタンをクリックします
  5. How and where will you use our API?」というアンケートが表示されます
    1. 回答する場合は、回答を入力し、「Save」をクリックします
    2. 回答しない場合は、「Cancel」をクリックします
  6. メールアドレス確認のメールが届くので、認証を行います
  7. ウェブサイトに戻り、上部のメニューの「API keys」をクリックします
  8. 「Key」に表示されている文字列を控えます
    1. この文字列はハンズオンで使用します
    2. ご自身のアカウントを他者に利用されてしまうため、共有はしないよう、ご留意ください
  9. OpenWeatherの準備は以上です

チャレンジ課題

フローを改造して、定期的にフローを動かすように変更してみましょう。

ヒントその1

Injectノードを「繰り返し」の設定をすると定期的に動かすことができます。ここで繰り返し間隔は、1時間単位などにしておくようにしましょう。短い間隔にしてしまうと、他人に迷惑をかけたり、各サービスで無料で利用できる範囲にすぐに抵触したりして、サービスを利用できなくなってしまう恐れがあります。

ヒントその2

enebularのWeb Flow Editorは手軽にNode-REDを利用できる反面、Editorのセッションタイムアウトなどの制限があります。Heroku Deploy機能を使うと永続的に動かすことができるようになります。