日本語フォーラム

 View Only
last person joined: 26 days ago 

Arubaのソリューション、ネットワークマーケットに関する日本語ディスカッションフォーラム

[IoT] Node-RED, InfluxDB, Grafana で EnOcean センサー情報をグラフ表示

This thread has been viewed 5 times
  • 1.  [IoT] Node-RED, InfluxDB, Grafana で EnOcean センサー情報をグラフ表示

    EMPLOYEE
    Posted Jul 03, 2022 08:31 PM
    以前、「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
    ------------------------------