<Gravioユースケース>冬到来!出張先や旅行先あるある〜ホテルの空調が効きすぎて喉やお肌にダメージ、そんなケースありませんか〜Gravioで湿度モニタリング+予防してみよう!
この記事は1年以上前に書かれた内容です。
Gravioの機能・画面キャプチャーなどの情報が古い可能性があります。
最新情報は、Gravioオンラインマニュアルをご参考ください。
下記ブログ記事もご参考ください。
【初心者が10分で実践するIoT・第四回】 Gravio 4で取得したCO2センサーのデータを、無料のクラウドBIツールを使ってグラフにしてみた!
【初心者が10分で実践するIoT・第三回】 Gravio 4で取得したCO2センサーのデータを元に、LINEに換気を促すメッセージを送ってみた!
こんにちは、Gravio事業部のタルミです。
旅をIoTで快適にする!という記事がIoT Newsさんから流れてきまして、Gravioでも旅先で使えるIoTがあることを思い出しました。
ということで、アステリア流、旅の快適術を今回はご紹介したいと思います。
喉が弱い私にとって、ホテルの「極度乾燥しなさい的直球ストロング空調」っていつも悩みのタネなんです。
もちろん予防策として、加湿器があるホテルを選んだり、バスタブにお湯を張ったり、濡れタオルを干したりして、できる限りの対策をします。
職業柄、しゃべることが多いので、喉にはできる限り負担をかけたくないんですよね。
で、そこまでしても、斜め上を行く強烈な空調によって、空気がカリッカリなホテルって意外と多くありませんか?
また、ホテル空調あるあるですが「制御がしにくい」ですよね。新し目のホテルや旅館だと普通に壁に液晶リモコンがあり、温度や風量などを制御できますが、湿度調整はほぼありませんよね。更にトラディッショナルな部屋だと、硬いツマミや押し釦で風量調整(しかも3段階ぐらい)しかできなかったり、海外のホテルだと温水のバルブを回して制御するラジエータ型の空調だったりします。
これらは本当に手強い!微調整ナニソレおいしいの?という感じです。
結果、解決策は「こまめに水分を取り、喉を潤す」これが最も効果的です。
そこで、今回は「適切なタイミングで水分補給する仕組み」をIoTを活用して作成しました。
内容としては「湿度のしきい値を超えたら、アプリを使って通知する」という仕組みを出張先にて「5分」で作ります。
全体の仕組みはおおまかにこんな感じです。
- 出張の友、ノート型PC(今回はMacです)にGravioを導入(一晩中電源ON)
- Gravio認証済み環境センサー + USB型データレシーバ、もしくはBluetooth™接続のOMRON社製センサー(どちらも湿度検知可能)を一つ枕元に設置し、1とペアリングし、エッジ側に設置したGravio上で湿度データを収集できるようにする
- 特定の湿度になったら、Gravioが動作しているノートPCからホテルのWiFiを利用して、LINE Notifyへ接続し、通知・アラーム(音量、振動はお好みにあわせて)
- 一晩の湿度データをグラフ化してみる(おまけ・連泊用)
さて、実際に作ってみましょう。
1-3の部分になる、センサー接続、データ受信、LINE Notifyの設定は以前にもご紹介しておりますのでQiita(Gravioで検索)や、過去のブログをご覧ください。
実際にLINE Notifyの設定が終了すると、携帯にこのようなメッセージが来ます。
余談ですが、湿度50%をトリガーにしたら、かなり頻繁に通知が来てしまいスマホが連続大鳴動、こりゃ眠れないということで、このあと40%に再設定しましたw
実はGravio、このような「しきい値」の変更も非常に簡単なんです。
これによって、空気の乾燥をモニタリングし、さらに通知も行われるので、
あとは極めてアナログですが、水を飲む、ということで予防をすることにします。
加湿器があれば、もちろん連動させて加湿する、という仕組みも作れますが、普通、加湿器側に湿度センサーが付いているでしょうし、そちらを使って自動運転する仕組みのほうがシンプルです(笑)
この仕組みの問題は、空気が乾くと夜でも起こされてしまう、という点です。
睡眠を邪魔される不快感は当然改善できませんが、トレードオフできるか(許容できるか)を考えておきましょう。私の場合、喉を痛めると、風邪引いたり、扁桃腺が腫れたりしますので、結構ダメージが大きいので、それなら夜に叩き起こしてもらい、水を飲んだほうが良いと考えました。枕元の水なら起こされて飲んでも二度寝すればいいですし。
また、起こし方はスマホの鳴動だけでなく、スマートプラグ(AC)と連動させて、照明を制御したり、ご自宅ならJRさんの駅舎で使われている自動起床機と連動させてもいいですね。まぁ若干やりすぎな気もしますが(笑)
<更に見える化をしてみよう!>
で、今回はおまけとして、お客様のニーズが高い、データのグラフ化を行ないます。
簡単なグラフということで、湿度データのCSVを作成し、Excelでグラフ化しますが、お好きなグラフツール(オンプレ、クラウドどちらでも)をお好みでどうぞ。
作業の流れ、しくみは下記のようになります。
まずはGravio Hubkit(エッジ側サービス)内に蓄積されているデータを抽出し、CSV形式に合う形でマッピングを行ない、CSV形式のファイルをGravio HubKit内に生成します。ファイル生成のタイミングは、Gravioに搭載されているタイマートリガーで、毎日、毎週など指定してもいいですし、必要なタイミングで実行して生成することも可能です。
もちろん、IoT的に、センサーのあるデータを基に生成処理を開始することもできます。たとえば、無償貸出センサーとして用意しているボタンスイッチを押すと、湿度情報が時系列で格納されているCSVファイルを作る、などもできますね。
名付けて、CSV形式レポート自動作成ボタンです(笑)
今回は、手動でファイルの生成指示を行います。上記で記載したとおり、この「ファイルを生成する」という作業は、Gravioでいうところの「アクション」で記述しますので、アクションのトリガーは様々なものが使えるわけです。ボタン押下、振動、人感、CO2濃度、湿度などの「きっかけ」となるデータを受信したら、「ファイル作成」のアクションが実行される、ということです。
今回はMac上にインストールされたGravio Studioで、ファイル作成のアクションを作ります。
実作業はこのようになります。
1:「ステップの追加」で、Sensor DBを選択します
まずは各種プロパティを設定していきます。
エリアインデックス、レイヤーインデックス、デバイスインデックスは、今回取得したいデータの対象となるエリア、レイヤー、デバイスを指定してください。
今回の場合はこのように設定しています。
読み込み開始日、読み込み終了日は、データとして吐き出すデータの期間をここで設定します。全データが必要であれば、どちらも無指定でOKです。
送信元IDを指定することで、センサーデータに含まれている送信元センサーのIDをもとに、指定したセンサーデータだけを抽出できます。通常は指定しなくても大丈夫です。
最後の「□最新の記録のみ取得」をONにすることで、最も新しいタイムスタンプのあるデータだけを抽出します。今回のように、過去にさかのぼって全てのデータが必要な場合は □ を外してください。
プロパティの設定が済んだら、次に「ステップ出力」を設定します。
そのまま、プロパティの横にある「ステップ出力」の右にある ■ と → が組み合わされたアイコン(+アイコンの左側)をクリックすると、「ステップ出力」にどのデータフィールドのデータが入るか、を指定できます。こちらを設定することで、Gravio HubKit内に蓄積してあるデータから、選択したデータを抜き出します。
今回の場合、DateTimeとAttribute(本製品ではセンサーの測定値はAttributeと呼ばれる形で提供されます)を選定します。
このステップ出力作成ボタン( ■ と → のセットボタン)を押すと、他に色々と出力が設定されますが、不必要なデータ項目は削除して構いません(データを軽くできます)。
削除作業は、それぞれのステップにマウスカーソルをあててハイライトし、削除(ゴミ箱マーク)を押せば実行できます。当然そのデータは抽出されません。
削除した後のステップ出力はこうなります。
Step_1_Attribute = sv.Attribute
Step_1_DateTime = sv.DateTime
これらの、Step_1_で始まる部分は、データの出力フィールド名になります。
従い、任意の名前に変更が可能です。今回は次のようにリネームします(わかりやすくするためです)。
削除や変更の操作はそれぞれのステップ出力式をダブルクリックします。
ここでポイントですが、
Humidityの数値はもとの設定ではStringsになっていますが、Doubleに変更しておくとより良いです(今回は数値を扱うため)。
削除、変更した後の設定はこのようになります。
Date = sv.DateTime
Humidity = sv.Attribute (※データ形式をStringsからDoubleに変更)
また、TIPSですが、sv.DateTime に関する設定を行うと、よりデータが取り扱いやすくなります。これは、各々のデータを受け取った時刻が記載されているのですが、その時間帯がUTCとなっています。よって、それぞれの国(OS側の時間)に合わせる必要がある場合は、ToLocalTime を追加することでよりわかりやすくなります。追加はStep出力のsv.DateTime をダブルクリックすると、式の入力が可能ですので、その頭に ToLocalTime をいれ、sv.DateTime を()でくくります。
このように記載します。
ToLocalTime ( sv.DateTime )
最終的な設定の画像はこのようになります。
以上のプロパティ設定およびステップ出力設定の作業で、抽出すべきデータを指定できます。
2:次のStepに「WriteCSV」をセットする
抽出したデータを、CSV形式に書き出すための設定を行ないます。
まず、CSVファイルを生成する際に必要なファイル名(例:Zigbeehumidity.csv )を設定します。
全てのデータをCSVに反映するため、次のチェックボックスは Overwrite を有効にしてください。
また、作成するデータにヘッダーが必要であれば、Output header にチェックを入れ、ヘッダーのラベル、および、フィールド名を指定してください。
(カンマ区切りで指定します)
今回は、DATE,HUMID% というヘッダーラベルを設定します。
ここで一度 WriteCSV の設定を中断し、Step1のSensor DB とつないでいきます。
画面上での設定はこのようになっているかと思います。
3:ステップ入力変数の設定
Step1で作成したフィールドごとのデータを、CSVへ入力する際にはこの設定が必要です。
Step1と2の間にある四角い小さいボックスをクリックすると、ステップ入力変数、という画面が現れます。こちらの右上にある ■ と → のマークを改めてクリックすると、Date, Humidity という2つのフィールドがCSVへの入力データとしてマッピングされます。
4:WriteCSV上のステップ出力設定
2のステップ入力変数の設定が終了していると、このStep2のWriteCSVのステップ出力に
Date = sin.Date
Humidity = sin.Humidity
の2つの設定が自動的に行われているはずです。
5:Step2の最後の仕上げ
プロパティ内の Output Field names に Date, Humidity と入れる(CSVのフィールド名です)。
これはステップ出力段で設定した各フィールドと同じである必要があります。
画面上ではこのようになりますね。
最後に、アクション画面の上部にある▷ボタンを押すと、作成したアクションが実行されます。これで、必要なデータを含んだCSVファイルが生成可能となります。
ファイルの吐き出し先は
Macだと Macintosh HD > ライブラリ > Application support > Gravio > action > data内
になります。
作成されるファイルは通常のCSVファイルですので、上記設定時点で特徴のあるファイル名をWriteCSVで設定し、検索していただいてももちろんOKです。
CSVをそのままエクセルで読み、Graphにしてみるとこのようになりますね。
話は変わりますが、先日、タイで現地のパートナーさんが、初めて触るGravioをたった数時間で使いこなしておられました。
センサーを設置し、クラウド上のPower BIに接続まで行ない、リアルタイムなグラフ作成をされていました。
しかもセットアップはなんと現地展示会の空き時間で実施、さらに、セッション登壇してGravioのライブデモまで行っていただきました!
このスピード感、使い手を選ばない簡単さが、GravioがIoTを素早く展開できることを物語っています。
初めて触られる方でも、やりたいことが「すぐに」実現できるAI搭載IoT統合エッジウェア、Gravioを是非皆様の業務でもお役立て頂ければ幸いです。