以前、「
Node-RED を使ってIoT Gatewayからのデータを簡単にデコード」する方法を解説しました。
今回は、デコードした情報をグラフ表示してみたいと思います。
できあがりはこんか感じで表示させることができます。
IoTセンサーに、EnOceanのマルチセンサーを使います。
このセンサーは、温度、湿度、照度、加速度など多くの情報を取ることができます。
センサーからIoT Gateway (Aruba Access Point) を経由してNode-REDでデコードするまでは、前回のポストで解説しているので省略します。
Node-REDでデコードした情報を、InfluxDBという時系列DBに蓄積し、それをGrafanaというツールでグラフ表示させてみます。
InfluxDBを使った理由は、Node-REDでモジュールが用意されていて簡単に使え、且つGrafanaのデータソースとして利用できるからです。
図の点線部分は、全ておなじUbuntuのPC上にインストールしているので、かなりお手軽に作ることができます。
1. Influxdbのインストール以下2つのモジュールをUbuntuにインストールします。
influxdb
influxdb-client
2. Influxdb でデータベースを作成
create database mysensor
3. Node-REDでInfluxdbのノードを追加Node-RED で "
node-red-contrib-influxdb" を追加します。
4. Node-REDでフローを作成し、InfluxDBにデータを蓄積するAPからWebsocketで受信、デコードした結果から使いたい情報だけピックアップし、
Step 3 のノードに送信するだけです。
SET VALUESで使ったJavaScript のサンプルはこんな感じです。
sensors ={};
array = msg.payload.reported;
for (var devices of array) {
if (devices.deviceClass[0]=="enoceanSensor"){
sensors.ap = msg.payload.reporter.name;
sensors.x = devices.sensors.accelerometer.x;
sensors.y = devices.sensors.accelerometer.y;
sensors.z = devices.sensors.accelerometer.z;
sensors.temperatureC = devices.sensors.temperatureC;
sensors.humidity = devices.sensors.humidity;
sensors.illumination = devices.sensors.illumination;
}
}
msg.payload = sensors;
return msg;
InfluxDBを確認してみると、こんな感じでデータが蓄積されていっています。
あとは、これをGrafanaで読み取るだけです。
time ap humidity illumination temperatureC x y z
---- -- -------- ------------ ------------ - - -
1656847790441847068 HOME_AP 62 215 30.600000381469727 -0.029999999329447746 -0.10000000149011612 1.0099999904632568
1656847800464402156 HOME_AP 62 216 30.600000381469727 -0.029999999329447746 -0.10000000149011612 1.0099999904632568
1656847810477971393 HOME_AP 62 216 30.600000381469727 -0.009999999776482582 -0.09000000357627869 1.0099999904632568
1656847820490967418 HOME_AP 62 215 30.600000381469727 -0.009999999776482582 -0.09000000357627869 1.0099999904632568
1656847830504986926 HOME_AP 62 215 30.600000381469727 -0.009999999776482582 -0.09000000357627869 1.0099999904632568
5. Grafana のインストール
すいません、どの方法でインストールしたか忘れてしまいました。。。調べれば出てくると思いますので、UbuntuにGrafanaをインストールして下さい。
たぶん、Snappyで"snap install grafana"としただけだったと思います。
6. Grafana の設定
Grafana の設定はとても簡単なので詳細は省きますが、Dashboard にみたい情報用のパネルを追加し、
以下の様に、Measurment を指定、fieldを指定するだけです。
APが複数台ある場合は、条件でAP名を指定することでどのAPからの情報かを判断することも出来ます。同じ容量でSensorのID毎のグラフ作成も簡単に出来ます。
BLEの便利なところは、センサー側に特別な設定が必要ない点です。
オフィスや工場で、データを取りたいポイントにセンサーを設置するだけで様々なデータを収集することが出来ます。
どのようなデータが収集できるかはセンサー次第で、まだEnOceanなど一部のセンサーしか対応していませんが、
具体的にこのセンサーを使いたいといった要望があれば、是非ご連絡下さい。
センサーのベンダー様のご協力が必須なので、ベンダー様からのご連絡も是非頂けたら嬉しいです。
------------------------------
Keita Shimono,
Aruba Japan SE Manager & Airheads Leader
------------------------------