概要
SensorTagとは温度、湿度、加速度、気圧、ジャイロ、磁力など様々なセンサーがついているTexas Instruments社の製品です。
今回はMacにインストールしたNode-REDでSensorTagのデータをMilkcocoaへ送ってenebularのINFOMOTIONで可視化するのをノンコーディングでやってみます。
1. MacのNode-REDでSensorTagデータを取得する
SensorTagの電源を入れてSensorTagノードをインストールしてMacのbluetoothを有効にすると以下のようにSensorTagノードのScanで見つかるのでチェックを入れて選択します。
これで以下のようにDebugノードにつなげるだけで色々なセンサーデータがDebugに表示されます。
データフォーマット的には以下の様な感じ。
{
"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つのデータを統合する必要があります(pressure
とlux
は値が桁違いなので今回除外します)これをするためにはNeuralNetworkノード(と言っても今回はニューラルネットワーク的なことはしません)のmultiInDataノードを使います。
multiInDataノードは以下の例ですとmsg.a
, msg.b
, msg.c
のデータが揃うまで後続への送信を待ってくれます。つまり先程のSensorTagから来るデータのmsg.payload.json_data
の下層のプロパティを一旦msg
直下に移動してmultiInDataノードに渡してあげればデータを統合できるということです。
解ったような解らないような感じかと思いますので実際やってみましょう。以下のようにSensorTagノードの後続にChangeノードを配置します。
そしてChangeノードの設定を以下のようにします。
画像では全てのルールが見えませんが上記7つのプロパティ(temperature
, humidity
, object
, ambient
, x
, y
, z
)すべてのルールを設定します。これでmsg.payload.json_data.xxx
をmsg.xxx
へコピーできるわけですね。
続いて以下のようにmultiInDataノードを配置します。
次にmultiInDataノードを以下のように設定します。
これも全部見えてないですが上記7つのプロパティ(temperature
, humidity
, object
, ambient
, x
, y
, z
)すべてのルールを設定します。
これでChangeノードでmsg.payload.json_data.xxx
がmsg.xxx
へコピーされ、multiInDataノードで全てのプロパティが来るまで待ち構えているので以下のように1つのデータとして統合できるようになるのです。
こんな感じのデータになれば成功です。
{
"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へ投入します。
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を設定します。
これで新しいINFOMOTIONを作成する時に設定したMilkcocoaがDatasourceとして選択できるようになります。
あとはグラフの設定をしましょう。今回は解りやすくすべてのデータをcore
のmetricsgraphics
TYPEに表示するため以下のような設定にします。
最後に完成したグラフを開いてLiveモードにして以下のようにリアルタイムデータが表示されれば成功です(SensorTagを激しく動かすと以下のようになります)
まとめ
本当にノンコーディングでした!