BeagleBone Black の Node-RED と Docker を使って、SensorTag のデータを InfluxDB +Grafana で可視化してみました。
Stretch IoT (non-GUI) for BeagleBone
OSはnon-GUIのDebian 9.2を使いました。
https://beagleboard.org/latest-images
Stretch IoT (non-GUI) for BeagleBone and PocketBeagle via microSD card
Docker
まずは、dockerをインストール
|
|
InfluxDB
InfluxDBをdockerで起動
|
|
“mydb”という名前のDATABASEを作成
|
|
Retention Policy設定はとりあえず、1日分だけ残すことにしました。
|
|
Node-RED
Node-REDはdockerではなく、ホストで起動しているものを使いました。
SensorTagとInfluxDBのNodeを追加
SensorTagノードは、今回ほんの少しカスタマイズを入れています。
|
|
flow例
|
|
function node
functionノードの内容は以下の通りです。
今回カスタマイズで追加したuuidとsensorNameを、payloadに追加しています。
これが後で役に立つことになるはずです。
|
|
influxdb out node
influxdb outノードは以下のとおり設定
- Server: mydb
- Measurement: sensorTag
Server設定は以下の通り
- Host: localhost
- Port: 8086
- Database: mydb
- ユーザ名: root
- パスワード: root
- 名前: mydb
ここまでの設定でデプロイすると、InfluxDBにSensorTagのデータが蓄積されていくようになりました。
Grafana
Grafanaの公式イメージはarmhfに対応していないため、以下のイメージを使いました。
https://hub.docker.com/r/fg2it/grafana-armhf/
ポート番号3000はホストのCloud9に使われているので、3030を利用しました。
|
|
http://beaglebone.local:3030 に、admin/adminでログイン
Edit data source
データソースの設定をします。
- Name: SensorDB(ここはなんでもよいです)
- Type: InfluxDB
HTTP settings
- URL: http://ホストのIP:8086
- Access: proxy
InfluxDB Details
- Database: mydb
- User: root
- Password: root
Dashboard
ダッシュボードに各センサ用のグラフを追加していきます。
pressure
の設定を例として以下に書きます。
- FROM default sensortag WHERE sensor = pressure
複数のsensorTagを使う場合はWHEREにuuidの条件も追加すればよいはずです。
- SELECT field(pressure) mean()
- GROUP BY time($_interval) fill(null)
- FORMAT AS Time series
- ALIAS BY pressuer
すべてのセンサのグラフをダッシュボードに設定にすると、以下のようになりました。
非常に簡単に見栄えの良い可視化ができました。
この他にInfluxDBとGrafanaはユーザ/パスワードの設定などを行うほうがよいはずですが、今回はここまでとします。