5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

enebularAdvent Calendar 2016

Day 4

enebularとMilkcocoaを使ってノンコーディングでSensorTagデータを可視化する

Last updated at Posted at 2016-12-04

概要

SensorTagとは温度、湿度、加速度、気圧、ジャイロ、磁力など様々なセンサーがついているTexas Instruments社の製品です。

unnamed.jpg

今回はMacにインストールしたNode-REDでSensorTagのデータをMilkcocoaへ送ってenebularのINFOMOTIONで可視化するのをノンコーディングでやってみます。

1. MacのNode-REDでSensorTagデータを取得する

SensorTagの電源を入れてSensorTagノードをインストールしてMacのbluetoothを有効にすると以下のようにSensorTagノードのScanで見つかるのでチェックを入れて選択します。

image

これで以下のようにDebugノードにつなげるだけで色々なセンサーデータがDebugに表示されます。

image

データフォーマット的には以下の様な感じ。

{
  "id": "7831c1d4020a.615137a5b49942ff8328932383dc4043.1", 
  "tstamp": {
    "$date": 1480074599630
  },
  "json_data": {
    "x": 0.072021484375,
    "y": 0.011474609375,
    "z": 1.00390625
  }
}

来たデータによってjson_dataの中身が違う感じですね。。。

2. バラバラにやって来るデータを統合する

とりあえずグラフに表示するためには取得できてそうなtemperature, humidity, object, ambient, x, y, zの7つのデータを統合する必要があります(pressureluxは値が桁違いなので今回除外します)これをするためにはNeuralNetworkノード(と言っても今回はニューラルネットワーク的なことはしません)のmultiInDataノードを使います。

multiInDataノードは以下の例ですとmsg.a, msg.b, msg.cのデータが揃うまで後続への送信を待ってくれます。つまり先程のSensorTagから来るデータのmsg.payload.json_dataの下層のプロパティを一旦msg直下に移動してmultiInDataノードに渡してあげればデータを統合できるということです。

image

解ったような解らないような感じかと思いますので実際やってみましょう。以下のようにSensorTagノードの後続にChangeノードを配置します。

image

そしてChangeノードの設定を以下のようにします。

image

画像では全てのルールが見えませんが上記7つのプロパティ(temperature, humidity, object, ambient, x, y, z)すべてのルールを設定します。これでmsg.payload.json_data.xxxmsg.xxxへコピーできるわけですね。

続いて以下のようにmultiInDataノードを配置します。

image

次にmultiInDataノードを以下のように設定します。

image

これも全部見えてないですが上記7つのプロパティ(temperature, humidity, object, ambient, x, y, z)すべてのルールを設定します。

これでChangeノードでmsg.payload.json_data.xxxmsg.xxxへコピーされ、multiInDataノードで全てのプロパティが来るまで待ち構えているので以下のように1つのデータとして統合できるようになるのです。

image

こんな感じのデータになれば成功です。

{
  "temperature": 26.38671875,
  "humidity": 29.095458984375,
  "x": -27.58203125,
  "y": 0.2998046875,
  "z": 2.0986328125,
  "object": 21.8125,
  "ambient": 26.28125
}

※multiInDataノードは便利なんですが数値データしか扱えないです

3. 統合したデータをMilkcocoaへ投げてenebularのINFOMOTIONで表示

enebularのINFOMOTIONはデータソースとしてMilkcocoaを選択可能です。Liveモードというリアルタイムな可視化は現在のところMilkcocoaでのみ実現できますので統合したデータをMilkcocoaへ投入します。

image

Milkcocoaノードの使い方はAPI Keyを使えるセキュアなMilkcocoaノードを参照してください。Milkcocoaにデータが送られ後続のDebugノードに以下のようなデータが表示されれば成功です。

{
  "value": {
    "temperature": 27.36358642578125,
    "humidity": 27.679443359375,
    "x": -31.02978515625,
    "y": -2.3984375,
    "z": 9.59375, 
    "object": 22.28125, 
    "ambient": 27.09375
  } 
}

続いてenebularのINFOMOTIONでDatasourceとしてMilkcocoaを設定します。

image

これで新しいINFOMOTIONを作成する時に設定したMilkcocoaがDatasourceとして選択できるようになります。

image

あとはグラフの設定をしましょう。今回は解りやすくすべてのデータをcoremetricsgraphicsTYPEに表示するため以下のような設定にします。

dialog.gif

最後に完成したグラフを開いてLiveモードにして以下のようにリアルタイムデータが表示されれば成功です(SensorTagを激しく動かすと以下のようになります)

graph.gif

まとめ

本当にノンコーディングでした!

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?