はじめに
三菱総研DCSのインフラエンジニアの中川です。
Part1ではビニールハウス農園で抱えている課題とその解決策、Part2ではサービスを提供するためのプラットフォームについて紹介しました。Part3では熱中症問題に対する解決策として提供したサービスをご紹介します。
熱中症リスクのアラート
熱中症リスクをアラートする目的は以下の課題を解決するためでした。 課題の背景やこの解決策の検討経緯はPart1で説明していますので、詳しくは「Part1 解決する課題」をご覧ください。
課題
- 熱中症リスクがあるときの作業中断の基準が定量化されておらず、農場長が判断しなければならない
解決策
この課題に対するアプローチとして最終的に以下2つのサービスを提供しました。
- 暑さ指数(WBGT)が 閾値を超えると農場長に通知するアラート通知サービス
- 気温や湿度を可視化し、いつでも、どこにいても確認できるWebアプリケーション
実装
2つのサービスはOSSのNode-REDを用いて実装しました。Node-REDの詳しい説明は「Part2 Step3.データ可視化」をご覧ください。図1のような機能構造を採用し、デバイスで収集した気温と湿度のデータはNode-REDに送信され、WBGTを計算して閾値を超えた場合はメール通知し、同時にDashboardで可視化する仕組みです。
1. 通知の仕組み
熱中症リスクのアラートは、農場長が作業中でも受け取ることができるように、スマートフォンで受け取れるメールアドレスに送付するようにしました。図2の左端のノードはアプリケーション・エンドポイントを提供しており、デバイスで収集した温度・湿度のデータを都度AWS LambdaがPOSTしたJSON形式のデータを受け取ります。受け取ったデータは逐次フローで処理されますので、WBGTを算出しその値によって危険度を表すメッセージを変えてGmailに送信するようにしました。メッセージ内容は環境省のサイトにあるWBGTの温度基準に従い、25℃以上28℃未満は「警戒」、28℃以上31℃未満は「厳重警戒」、31℃以上は「危険」としています。25℃未満は「注意」なので送付しないようにしました。
2. 気温や湿度の可視化
Node-REDを使用すると気温や湿度の可視化は、図3のようにノーコーディングで非常に簡単に実装できます。通知の場合と同様に受け取ったセンサーデータを一旦退避したあとでOpenWeatherMap[1]から外気温・湿度を受け取り、ハウス内とハウス外の気温、湿度、気圧と計算したWBGTのアウトプットをDashboardと呼ばれる青色のノードに繋げるだけでメーターやグラフのダッシュボードを作成することができます。Dashboardノードの名称にあるサフィックスは、g:Gauge、c:Chart、1W:1weekを表しています。1Wは1週間の気温と湿度、気圧、WBGTをグラフ化したダッシュボードを表示します。
[1] OpenWeatherMap:Webやモバイルアプリケーションの開発者に、現在の天候や予測履歴を含む各種気象データの無料APIを提供するオンラインサービス(出典元:Wikipedia)
工夫した点
ウェアラブル端末との連携
解決のためのアイデア出しの初期では、熱中症リスクのアラートをスマートフォンで受け取れるようにすることを考えました。しかし実際に現地でインタビューや観察を行ったとき農場長がスマートフォンをウエストポーチに入れていたことに気付き、単にメールを送るだけでは通知に気付きづらいのではないかという新たな問題点を発見しました。そこで再度アイデア出しを行った結果、「スマートフォンで受信したメールを腕に装着したウェアラブル端末に通知してはどうか」という改善案が生まれ、別件で試行していたFitbit[2]を使用してGmailの通知を振動で伝えるようにしました。今までは農場長が自分で温度計を見て危険度を判断しなければなりませんでしたが、ウェアラブル端末を身に着けてもらうことで作業中でも素早く熱中症リスクに気が付くことができるようになりました。
[2] Fitbit:アクティビティ、心拍数、睡眠などのデータを測定するワイヤレス対応のウェアラブルデバイス(出典元:Fitbit公式)
アラート時間帯の制御
WBGTが閾値を超えた場合、何も制御しなければ、農園で作業しない時間や休日にもアラートが飛ばされてしまうので、鬱陶しく感じます。そのため、アラートが不要な時間帯であれば閾値超過メールを送信しないように制御を加えました。
RTCモジュールを使った送信間隔の制御
Sigfoxには上りメッセージの通信回数が最大140回/日という制約があります。等間隔でデータを送信すると12分に1回しか送信できません。しかし、従業員が作業する日中の時間帯は出来るだけ細かいサイクルで気温と湿度のデータを収集する必要がある一方で、夕方から翌朝にかけてはハウス内に人はいないので熱中症予防という観点ではデータ収集サイクルはまばらでも全く問題ありません。そこで、夜間の通信回数を減らして日中の通信回数を増やすことにしました。通信回数の制限はセンサーデバイス側に実装する必要がありますが、今回採用したArduinoは時刻管理を行うクロック機能を保持していませんので、時刻を管理できるRTCモジュールを付けて時間管理を可能にし、時間帯による通信回数制限を実現しました。
実地検証
1.熱中症リスクのアラート
図4は実際に熱中症リスクのアラートを体験してもらったときの様子です。センサーデバイスは通気性の良いケースに格納し、休憩スペースに設置しました。熱中症リスクが上がると農場長が着用するFitbitに通知が届き、これまで体感だったものが数値化された熱中症リスクとしてタイムリーに把握できるようになりました。
2.Webアプリケーション
Node-REDで開発したアプリケーションは図5,6,7のようにWebブラウザから見ることができます。図5は湿度が低いのでWBGTが気温よりも低くなっていて、逆に図6は湿度が高いのでWBGTが気温よりも高くなっている例です。図7は直近1週間の気温、湿度、気圧、WBGTの変化を見ることができるダッシュボードです。単純に気温の高さだけでなく湿度と関係して変動しているので、気温だけに着目している時には気付けなかった危険性を視覚的に捉えることができるようになりました。また、柏市の気温や湿度の情報を取り込みハウス内外での気温差を可視化することで、厳しい環境であることを本社に知ってもらうことができました。
まとめ
本編では、熱中症リスクの問題を解決するためにNode-REDを用いてサービスを提供した事例を紹介しました。Node-REDはノードとノードを線でつなぐだけで処理を記述できるビジュアルプログラミング環境であり、実行環境でもあるため、今回は1か月という短時間で最初のリリースを行うことができました。
また、2つのサービスを提供することで、当初課題として挙げていた従業員の体調管理を改善し、体調管理に関わる農場長の負担を軽減することができました。
次回は土壌水分量を可視化した事例をご紹介します。