Intel Edison + Node-RED でTI SensorTagのデータをAT&T M2Xに投稿する
前回の記事で力尽きたので、今回はその続きです。記事の大半をメモ用の口調で書いているのに途中で気づいたので、そのまま通しています。
EdisonでTI SensorTagのBluetooth UUIDを調べる
hcitool lescsan
を打って、SensorTagの右サイドにある電源ボタンを押すと、下記の様に検出される。
root@edison:~# hcitool lescan
LE Scan ...
XX:XX:XX:XX:XX:XX (unknown)
XX:XX:XX:XX:XX:XX CC2650 SensorTag
XX:XX:XX:XX:XX:XXの部分がUUIDになる。これをメモしておく。コマンドを終了するのはCtrl-C
でOK。
Node-REDでSensorTagのFlowを作成
http://EdisonのIPアドレス:1880
でWebブラウザからアクセスする。 左のバーに、各種機能毎にNode(と呼ぶ?)があるので、それの下の方にあるsensorTag
をドラッグして真ん中のキャンバスにドロップする。 さらに上のほうにある、debug
もドラッグドロップする。 それから、ドロップしたsensorTag
をダブルクリックする。 ここで、メモしておいたSensorTagのUUIDをペーストする。 使っているSensorTagがCC2650の場合、明るさも取得できるので、Luminosityのチェックも入れると良い。 ここまでの作業をした物が下記画像になる。
debugの設定
次にドロップしたdebug
をダブルクリックし、OutputをComplete msg Object
に変更する。 そして、sensorTag
の右とdebug
の左をドラッグして線をつなぐ。右上で赤くなっているDeploy
をクリックして変更を適応させる。 右側のバーにある、debug
タブをクリックすると、ズラーっと情報が出てくると思う。 情報を止めるにはdebug
の右側のベロをクリックする。 とりあえず下記画像の感じ。
debugの情報
右のDebugに出ている情報がSensorTagから来ている情報で、見る感じ、書くセンサーデータ毎にmsgのデータが飛んできている。例としてHumidityのmsgは下記。温度と湿度の情報が格納されている。
{ "topic": "sensorTag/humidity", "payload": { "temperature": 20.9, "humidity": 22.3 }, "_msgid": "a75f2cf4.58a0d" }
M2Xに投稿するFlowの作成
今回はこの温度データをAT&TのM2Xに送るフローを作成する。ちなみに、事前にM2Xのアカウントを作成し、新規Deviceの作成、温度用のstreamの作成ができている事とする。 新たに、真ん中のキャンバスにdelay
, function
, http request
, debug(2つめ)
をドラッグ&ドロップし、上記順番につないでいく。 delay
をsensorTag
とfunction
の間に置くのは、sensorTag
から流れてくる情報が多いので、それを間引くため。
functionの中身
function
をダブルクリックし、中身を下記内容にする。 api_key
, dev_id
, stream_name
を自分の環境に合わせて変更する。
if (msg.topic == "sensorTag/humidity"){
var api_key = "your M2X api key";
var dev_id = "your M2X device id";
var stream_name = "your device stream id";
var dev_url = "http://api-m2x.att.com/v2/devices/";
var stream = "/streams/" + stream_name + "/value";
var data = {"value": msg.payload.temperature};
var msg = {
"method" : "PUT",
"url" : dev_url + dev_id + stream,
"headers" : {
"Content-Type": "application/json",
"X-M2X-KEY": api_key
},
"payload" : JSON.stringify(data)
};
return msg;
}
http requestの中身
ダブルクリックして、Methodを`set by msg.method`に変更する。 画像は下記。
debug(2つめ)の中身
1つめと同じくOutputをcomplete msg object
にする。 1つめのdebugのベロをクリックしてデバッグメッセージの出力をoffにしておく。
いざ送信
右上の赤いDeployをクリックして送る。右のDeployで出てくる情報の中のstatusCode
が202になっていると成功。4XXになっていると失敗している。