ノンコーディングでIoT


概要

ノンコーディングでデータの取得、リアルタイム可視化を行いました!

コーディングいらずなので、エンジニアでない方でも簡単にできちゃいます。

インターン先に設置してあるコーヒーマシンの利用状況を人感センサーで取得し、可視化しました。

元々はコーヒーマシン内の豆が切れたら社員に通知を送るシステムを作ることで、コーヒーマシン周りの業務軽減を目的としてプロジェクトが始まりました。ただ、コーヒーマシンの中身に組み込むのは少し骨が折れるので、センサーを使って人感することで利用状況を把握すれば、豆切れを同定できるのではないかというアプローチをとりました。

ハードウェアはラズパイ、omronのD6Tセンサー(温度センサー)、Groovy-IoT(センサーとラズパイのアダプタ)を使っています。

主な流れは以下の図のフローのようになっています。

image.png

テーマは、「遠隔操作のみで完結」です!

特徴として4つの点があげられます。


  • 簡単にセンサーの変更、保存先の変更、データの形の変更が可能(もちろんリモート!)

  • ラズパイをディスプレイにつなぐ必要なし!sshも必要なし!

  • リアルタイムでデータが可視化できる

  • コーディングいらず!


enebular

フローの全体図に書いてあるようにenebularというソフトウェアを使ってます。上記した4つの特徴のうち、これらの特徴は全てこのenebularによって形成されています。IoTや非エンジニアにはもってこいのソフトウェアです。


各工程の説明


フローのデプロイ

使ったflowはこちらです1

image.png

https://enebular.com/discover/flow/ff95c7bd-a032-4759-a318-87a64c504b8e

一定間隔でトリガーを起動してhttp requestを受け取り、jsonに変換。その後わかりやすく加工してfirebaseに送っているというflowです。

このフローの末尾のノードのみを編集してflowの準備は完了です。

deployして、下図のようにstatusがdeployedになれば成功です。

image.png


kikori

このままではデータは取得できません。deployしたflowはhttp requestを使っていますが、ローカルサーバーが立っていないので、requestが通らないです。

そこでここではkikoriというローカルサーバーを使います。kikoriはGroovy-IoTに対応したローカルサーバーを立てるソフトウェアです。kikoriは https://gitlab.com/myst3m/kikori にてインストールできます。はじめにラズパイにインストールしてください。

shellに自動起動のコマンドを入力しておけばokです。


infomotion

以上が成功していれば、今頃ラズパイに繋がったセンサーからデータを吸い上げてfirebaseに送っているはずです。

image.png

これをリアルタイムで可視化してみましょう。D6Tセンサーは温度センサーなのでサーモグラフィーのようなグラフが見れることが期待できます。

可視化にはenebularの機能であるinfomotionを使います。

infomotionの各種設定をし、LIVEボタンをクリックすれば、、、

リアルタイムデータ可視化の成功です!


解析

3で行った可視化はあくまでパフォーマンス的な可視化です。最後に、蓄積したデータを用いて解析してみました。概要にも書いた通り、社内のコーヒーマシンの利用状況についてデータを取得し、解析します。

データは約22時間取得しました。こんな感じになりました。

image.png

UNIX時間を変換すればわかりますが、夜中の間は検出温度が一定なので、うまくデータが取れていそうです。

ここから、ピークを細かくみて、検知できてるかどうかを確認しましょう。

設置から50eventをみてみると

image.png

ピークがみて取れます。設置後は僕が目の前をうろうろしていたので、人感できているということで問題ないでしょう。

もう少し解析用のコードを修正すれば、より正確に検知を同定できると思います。


終わりに

要点だけをかいつまんで話したので、細かいセットアップとかは別記事に載せようと思います。

そちらもご参考にしてください。

同じようにenebularを使って同僚がデジタルサイネージしてるのでこちらもよかったらどうぞ

https://qiita.com/datsu0/items/19f6447c090aaf8b9f73





  1. http requestのノードが通信エラーを吐いていますが、これはローカルサーバーを立てていないからです。ラズパイにこのflowをdeployしたのちに、ラズパイ内でkikoriというローカルサーバーを立てるので、この時点では気にしないでください。