<簡単IoT>センサーデータをExcelに表示してみよう!〜みんなのBIツール “Excel” を活用してセンサーデータをローカルでリアルタイム表示〜
この記事は1年以上前に書かれた内容です。
Gravioの機能・画面キャプチャーなどの情報が古い可能性があります。
最新情報は、Gravioオンラインマニュアルをご参考ください。
下記ブログ記事もご参考ください。
【初心者が10分で実践するIoT・第四回】 Gravio 4で取得したCO2センサーのデータを、無料のクラウドBIツールを使ってグラフにしてみた!
Gravio 4で取得したセンサーデータをGoogle データポータルに接続。無料のBIツールを使って簡単に可視化する手順を解説
あけましておめでとうございます。Gravio事業部のタルミです。
新年第一回目のブログは、
皆さん大好き“Excel”を使ったIoTデータの可視化方法をご紹介したいと思います。
実はこのニーズ、ものすごく多いんですよね。
もちろんIoTに適している専用のBIツールはたくさん市場にありますが、
使い慣れている、既に導入されている、という点でExcelは“一日の長”(30年の長?)がありますからね。
日々進歩・機能拡張しているExcel
MicrosoftさんのOffice365サービス開始に伴い、Excelのバージョンアップによる機能強化の恩恵が受けやすくなりましたね。
常に最新のExcelを使われておられる方も多いでしょう。
そのExcelの強化機能のひとつに、Power Queryという仕組みがあります。
今回はこちらを使います。
ちなみに、私が利用しているExcelのバージョンはWindows用の1810となり、Power Queryが標準で導入されていましたが、Office2016(Excel 2016)あたりでもPower Queryはアドインでインストールすることが可能なようです。興味のある方は検索してみてください。
また、残念ながら、Mac版のExcelではPower Queryを利用できません。。。
私の環境は、Mac+仮想マシン上のWindows 10という感じなんですが、Office全体で結構WindowsとMac版で機能差ってあるんですよね。
更に悪いことに、検証しているとどっちのOS環境でやっているか失念してしまい、あれ?こないだ出来たのに?とか混乱することが多かったりもします。
単なる加齢のせいかもしれませんが(笑)
ジェイソン(JSON)なんて、怖くない!
Excelのマクロですら忘れかけていて組めるかどうか怪しい、そんな私みたいな方ってどのくらい存在するのでしょうか?
そのような方にむしろGravioをご利用頂きたいなぁ、と思っています。
ソフトウェアのコードやデータ形式などに造詣のある、プログラムが組める方であればIoTデータの可視化は朝飯前のコトかと思いますが、私レベルのスキルだと、“センサーが取得した何かしらのデータ”を“Excel”に表示してみよう、と思うと、“うーん、CSVで出力して、データを整形して”とか、ある程度のイメージは付きますが、実際に細かな作業に手を焼いてしまい、なかなか実装出来ない、って感じだったりします。
皆さんはいかがでしょうか?
しかしながら、 Don’t worry! アリモノで色々できる時代です。
そこで、今回は、JSONというデータ形式に少し触れてみます。インターネットでCSVとJSONの比較などを検索すると、様々な情報がありますね。ひらたく一言でまとめると、IoTのような多種多様なトランザクショナルデータに意外と相性がいいんですよね、JSON さん。
(もちろんGravioはCSVもハンドリング出来ます。速度と機能のトレードオフです)
そして、そのJSON形式を、最新のExcelは標準でPower Queryを利用して読めるようになっているのです! そう、みんなのJSON。もちろん、チェーンソーも持っていません。まぁ、データをチェーンソーよろしく切り刻む仕組みはPower Queryに入っていますけどね(笑)
GravioからJSON形式でデータを出力し、Excelでグラフ化
Excelは標準でインストールされているよ、という会社さんや団体さんは多いことかと思います。
もちろん、Excelは信義、宗教的にアレだ、という方は、
Googleさんのスプレッドシートをご利用頂くことも可能ですね。
(参照:Googleスプレッドシートへセンサーデータを10分で可視化 〜 GCPソリューションをIoTダッシュボードとして活用 )
作業内容は
1:必要なセンサーデータをGravioの内部DBから抜き出す
下記のようにGUIで操作します。センサーが接続されているGravio上に自動生成されるDBから取りたいデータを指定(期間も指定可能)するようにアクションアイコンの1つ目 ”Step 1” の設定を行ないます。
データの選定(期間など)は下図参照。”Step 1” のDBアイコンにあるプロパティ内で設定します。
データの選定が終わったら、下記DBアイコンの“ステップ変数”アイコンをクリックし、どのデータを抜き出すか設定します。
GravioのDBそのものにはセンサーが出力した様々なデータが入っていますからね。
こういった処理がエッジでできることで、データ量の削減とか、必要のないデータは使わない、ということができますね。
2:”Step 1” で抜き出したデータをJSON形式のファイルにする
”Step 2” の、ローカルファイル書き出しの設定に進みます。
書き出されるファイルに対してわかりやすいファイル名を設定します。
Excel側からのアクセスをシンプルにするために、常に同一のファイルへセンサーデータをアップデートする形にしたいので、“Overwrite”に忘れずチェックを入れます。
これで、ローカルのPCに、センサーデータがon形式で保存されます。
なお、GravioのPC上におけるインストール先に応じてデータの保存先は変わります。
3:データの保存タイミングを決める
必要とするデータのアップデートタイミングは要件において変わってきます。
ニーズにあわせてデータのリフレッシュ(保存)タイミングを決めるには、上記で作った“抜き出し”と“書き込み”の一連の作業(これをアクションといいます)の間隔を決定すればよいということになります。
この、アクション実行のタイミングはトリガーで設定します。
このように、タイマーで繰り返し設定(上記設定は1時間ごとに抜き出して書き込む)を設定してみました。
実際のセンサーからGravioまでのデータはそれぞれのセンサーに応じてリフレッシュされていますので(例えば5秒に1回とか)
直近1時間のまとめたデータが更新され続けていく、というイメージのほうが適切でしょう。
データを垂れ流さずに、必要なタイミングでまとまったJSONファイルとして用意することで、
無駄のない “インテリジェントなデータ抽出”が可能になる、ということです。
4:作成されたJSON ファイルをExcelで表示する
データの用意ができれば、後は読み込むだけです。
Excelのデータタブから、
「データの取得>ファイルから>JSON 」を選択し、
先程作成されたJSONファイルを読み込みます。
読み込むと、Power Queryの画面が出現しますので、読んだデータに対して“お作法”を決定します。
センサーデータによっては、ここで10進数にしたり、時刻データをExcelユーザーがわかりやすいデータに変換したりすることが可能です。
なお、Power Queryの利用法はインターネット上にたくさん情報がございます。是非参考にしてみてください。
で、出来上がったデータはこちら
このデータは弊社のとある場所における温度の変化ですね。
Gravioで無償貸出をしている温度センサーを使ってデータを取っています。
ちなみに、省電力を意識しているセンサーなので、仕様上、1時間に一回、もしくは温度が0.5℃以上変化、湿度が6%以上変化、大気圧が25Pa以上変化のどちらかの条件に合致するとデータを出力する、という仕組みになっているので、このようなデータになりました。
ここまでできれば、後はExcelの世界になります。
折れ線グラフに様々なセンサーのデータを重ねてみても面白いですね。
次は一つの部屋にセンサーを複数設置して、ヒートマップをTableauで表示してみようかと考えています。
使いやすい形でデータさえ取得できれば、
あとは皆様の想像力を存分に活かすチャンスです!
また、センサーデータをJSON形式で送る機能などもGravioには標準で実装されています。
他のシステムにセンサーデータを送ったり、作成されたファイルを弊社データ連携ツール“ASTERIA Warp”を利用して
更に各種のシステムにつないでいくことも可能ですね。
実際の動作イメージ
ちょうどお正月だったのですが、無人のオフィスでGravioを連続稼働させていました。
弊社1Fスペースの温湿度データはこちら。
人がいないオフィスは寒いんですね。
日照の影響を受けた建物内の温度変化がよくわかりますね。
一気に温度があがって、日照がなくなると蓄熱の影響でしょうか、ゆっくり温度が下がっています。
また、毎日外気温は違うはずですが、グラフを見る限り、温度上下がほぼ一定なので、最低限の空調が入っているか、他のフロアに人がいたり、ビル自体の発熱があるのか、もしかしたら別エリアに消し忘れの空調があったのかもしれませんね。
今後センサーの設置箇所を増やして見てみようと思います。
あとがき
使い慣れたデータ形式、使い慣れたツール。
ありもので実現する“身の丈IoT”を今年もどんどん実践してまいります。
こんなコトやれるかな?
などというご相談などございましたら、
是非GravioのSlack https://gravio-community-jp.slack.com に投稿してみてください!