天気情報から、熱中症や天気痛情報を表示
第1回: reTerminalと各種センサを使った室内環境測定器の制作準備
第2回: 温室度センサと二酸化炭素センサで快適な室内チェック
こんにちは、ヨシケンです!
今回の連載では、ラズパイ(Raspberry Pi) Computeモジュールに液晶画面が一体となった「reTerminal」というデバイスを活用し、昨今のコロナ禍において重要な室内空気環境の見える化と、理想的な環境づくりができるセンサデバイスを制作。
今回は、インターネットから天気情報を取得して、熱中症の予防に役立てたいと思います。また、気圧の変化を取得して、頭痛や天気痛などの情報も表示します。
今回の記事の流れ
デバイスに必要なもの一覧:
名前、説明 | デバイス |
---|---|
reTerminal Seeed社が提供するRaspberry Pi Compute Moduleを使ったデバイス。 |
|
二酸化炭素センサ GPSを使った位置情報の取得が可能。 |
|
温湿度センサ 温度、湿度が計測できるデジタルセンサです。 |
|
Grove Base HAT for Raspberry Pi ラズパイの40ピンに差すだけで、Grove端子が簡単に接続できるハット型拡張機。 |
|
モバイルバッテリ、外装、ケーブルなど。 | 必要に合わせて |
1. 天気予報を取得して熱中症を予防!
reTerminalはWi-Fiからインターネットに簡単に接続できるので、ネットから情報を取得して便利なものにしていきます。オープンな天気予報APIのOpenWeatherMapを使います。
Wi-Fiへの接続や、OpenWeatheMapのアカウントはこちらを参照して、取得しておいてください。また、ここから取得したデータから、熱中症予防のための熱中度指数 (WBGT)も計算します。
reTerminalで天気予報を取得するためにOpenWeatherMapというノードをインストールします。パレットでOpenWeatherMapと検索し「ノードを追加」を押します。
そうすると左側にweatherというノードが追加されるので、openweatherをフローに持ってきます。
このOpenWeatherMapノードを開いて、設定をおこないます。まず、API Keyという部分に、https://openweathermap.org/ のサイトから自分のアカウントを作成し、そこで得られるKeyを入力します(右下画面の黒塗りのKey部分を、ノードのAPI Keyにペースト)。
Locationには、天気を取得したい緯度、経度を入力します。Google Mapなどでその場所の緯度経度を取得して、Latitude(緯度)とLongtitude(経度)のところにペーストします。
この結果をチェックできるように、デバッグ・ノードもつなぎます。
これをデプロイして、デバッグの結果を見てみましょう。すると、このようなJSON形式のデータを取得できるのが分かります。この中から、detailの天気情報やtemp_maxc(最高気温), minc(最低気温)、locationなどが取れるので、これを表示してみます。
この結果を表示するためのDashboardを追加します。DashboardからTextノードを2つ追加して、それぞれのValue Formatに以下のようなコマンドを入れます。
場所情報を表示するためのLocation
<font size=8>@{{msg.payload.location}}
|
天気情報を表示するText
<font size=8><img width=300 src=http://openweathermap.org/img/w/{{msg.payload.icon}}.png><br>{{msg.payload.detail}}<br>{{msg.payload.temp_minc}} / {{msg.payload.temp_maxc}} C |
また、これらの天気情報から、その日の暑さに気をつけるために熱中症予防の指標を表示してみたいと思います。熱中症になりやすさの指標に、熱中度指数 (WBGT) というものがありますが、これは大気中の温度と湿度から計算される指数で、以下の式で表されます(Ta: 外気温、RH: 外気の湿度)。
WBGT = 0.725*Ta + 0.0368*RH + 0.00364*Ta*RH – 3.246
それでは、OpenWeatherから取得した気温、湿度をこの式に適用させたFunctionノードを追加してみましょう。この熱中度指数が25以下であれば快適、28以上だと温度も湿度も高く熱中症に注意、というような表示をおこないます。
熱中度指数を計算する為の記述
msg.calc = 0.725*msg.payload.tempc + 0.0368*msg.payload.humidity + 0.00364*msg.payload.tempc*msg.payload.humidity – 3.246 ; msg.wbgt = Math.round(msg.calc) ; |
このFunctionをOpenWeatherのノードとつなぎ、現在の天気の情報と熱中度指数を出すためのフローが出来ました。
これをreTerminalにデプロイし、ダッシュボードを確認します。
http://[raspi_host_name].local:1880/ui/ にアクセスするとこのような画面が表示されました。
外気温などとともに、熱中度指数、メッセージが出たと思います。数値に応じて色を変えて出力し、その日の熱中症に備えるようにします。
2. 気圧の変化から天気痛をチェック
次にこの天気予報の情報から気圧のデータを取得します。
気圧の変化により頭痛などの天気痛を感じる人がいると言われています。これは低気圧などが近づいて、短時間に気圧の変化が大きくなると発生する傾向があるようです。ここでは、天気予報の気圧の変化から、天気痛が出そうな状況を表示しようと思います。
短時間に気圧が変化しそうなことが事前に分かっていれば、体調を整えたり、薬の服用を忘れないようにしたりできるかもしれません。
1日の気圧の変化とその後の気圧の予想は同じOpenWeatherMapから取得できます。
OpenWeatherの天気予報から今後数時間、数日の天気予報が取得できるので、この数値から気圧の変化を取得します。また、天気予報のノードを追加し、JSON形式の結果をデバッグに出力。
そうすると、hourlyのところに0から24時間後までの天気予報が出力されます。その中からpressureの値を取得し、3時間後、6時間後、9時間後などのデータを指定します。
この気圧の値から、現時点と比べて気圧の変化が5 hPa以上であれば、「天気痛に注意!」のように表示するようなFunctionを追加します。この気圧の変化の度合いは人により違うようなので、個人の状況に応じて変えてみてください。Functionの設定はこのようになります。
また、Momentというノードをインストールして、現在の日付などを追加します。
これでDate/Timeを設定し、画面に現在日時を表示します。
最終的なフローはこのようになりました。
では、これをデプロイしてみましょう。明日の予報も含めて表示されました。
3. まとめ
今回の連載ではRaspberryPi Compute Moduleが入ったreTerminalを活用し、二酸化炭素センサなどを使って室内環境を計測、数値から効率的に部屋の換気がおこなえるようなデバイスを作っていきます。
第3回となる今回は、reTerminalをインターネットに接続して、天気予報を取得しました。その数値から、熱中症予防になる熱中度指数を計算して、注意を促しています。また、気圧の変化から、天気痛のアラートを流せるようにもしました。毎朝、このreTerminalをチェックすることで、生活の質の向上に役立つのではないでしょうか。
次回は、取得した数値、指数から実際に扇風機やクーラーを連携させ、ホームオートメーションを目指します。
お楽しみに!
今回の連載の流れ
第1回: reTerminalと各種センサを使った室内環境測定器の制作準備
第2回: 温室度センサと二酸化炭素センサで快適な室内チェック
第3回: 天気情報から熱中症や天気痛予防を表示(今回)
第4回: 測定したデータからエアコンなどに連携してホームオートメーション!