概要
ノンコーディングでデータの取得、リアルタイム可視化を行いました!
コーディングいらずなので、エンジニアでない方でも簡単にできちゃいます。
インターン先に設置してあるコーヒーマシンの利用状況を人感センサーで取得し、可視化しました。
元々はコーヒーマシン内の豆が切れたら社員に通知を送るシステムを作ることで、コーヒーマシン周りの業務軽減を目的としてプロジェクトが始まりました。ただ、コーヒーマシンの中身に組み込むのは少し骨が折れるので、センサーを使って人感することで利用状況を把握すれば、豆切れを同定できるのではないかというアプローチをとりました。
ハードウェアはラズパイ、omronのD6Tセンサー(温度センサー)、Groovy-IoT(センサーとラズパイのアダプタ)を使っています。
主な流れは以下の図のフローのようになっています。
テーマは、「遠隔操作のみで完結」です!
特徴として4つの点があげられます。
- 簡単にセンサーの変更、保存先の変更、データの形の変更が可能(もちろんリモート!)
- ラズパイをディスプレイにつなぐ必要なし!sshも必要なし!
- リアルタイムでデータが可視化できる
- コーディングいらず!
enebular
フローの全体図に書いてあるようにenebularというソフトウェアを使ってます。上記した4つの特徴のうち、これらの特徴は全てこのenebularによって形成されています。IoTや非エンジニアにはもってこいのソフトウェアです。
各工程の説明
フローのデプロイ
使ったflowはこちらです1
https://enebular.com/discover/flow/ff95c7bd-a032-4759-a318-87a64c504b8e
一定間隔でトリガーを起動してhttp requestを受け取り、jsonに変換。その後わかりやすく加工してfirebaseに送っているというflowです。
このフローの末尾のノードのみを編集してflowの準備は完了です。
deployして、下図のようにstatusがdeployedになれば成功です。
kikori
このままではデータは取得できません。deployしたflowはhttp requestを使っていますが、ローカルサーバーが立っていないので、requestが通らないです。
そこでここではkikoriというローカルサーバーを使います。kikoriはGroovy-IoTに対応したローカルサーバーを立てるソフトウェアです。kikoriは https://gitlab.com/myst3m/kikori にてインストールできます。はじめにラズパイにインストールしてください。
shellに自動起動のコマンドを入力しておけばokです。
infomotion
以上が成功していれば、今頃ラズパイに繋がったセンサーからデータを吸い上げてfirebaseに送っているはずです。
これをリアルタイムで可視化してみましょう。D6Tセンサーは温度センサーなのでサーモグラフィーのようなグラフが見れることが期待できます。
可視化にはenebularの機能であるinfomotionを使います。
infomotionの各種設定をし、LIVEボタンをクリックすれば、、、
温度センサーから取得したデータのリアルタイムデータ可視化 5秒毎に人が左から右に移動してるのがわかる pic.twitter.com/FwPfEzM90Y
— たける (@takeru_okura) 2019年7月6日
リアルタイムデータ可視化の成功です!
解析
3で行った可視化はあくまでパフォーマンス的な可視化です。最後に、蓄積したデータを用いて解析してみました。概要にも書いた通り、社内のコーヒーマシンの利用状況についてデータを取得し、解析します。
UNIX時間を変換すればわかりますが、夜中の間は検出温度が一定なので、うまくデータが取れていそうです。
ここから、ピークを細かくみて、検知できてるかどうかを確認しましょう。
設置から50eventをみてみると
ピークがみて取れます。設置後は僕が目の前をうろうろしていたので、人感できているということで問題ないでしょう。
もう少し解析用のコードを修正すれば、より正確に検知を同定できると思います。
終わりに
要点だけをかいつまんで話したので、細かいセットアップとかは別記事に載せようと思います。
そちらもご参考にしてください。
同じようにenebularを使って同僚がデジタルサイネージしてるのでこちらもよかったらどうぞ
https://qiita.com/datsu0/items/19f6447c090aaf8b9f73
-
http requestのノードが通信エラーを吐いていますが、これはローカルサーバーを立てていないからです。ラズパイにこのflowをdeployしたのちに、ラズパイ内でkikoriというローカルサーバーを立てるので、この時点では気にしないでください。 ↩