Toamiとenebularのデータ連携

はじめまして、日本システムウエア(NSW)の小野です。
第2回伊那市LoRaWANハッカソンではNSWより、クラウドプラットフォーム・Toamiをハッカソン参加者に提供します。 ToamiとはIoTクラウドプラットフォームで、各種IoTゲートウェイからのデータ受信やデータの管理、見える化や他システムとの連携などを行えるトータルIoTソリューションです。伊那市LoRaWANハッカソンではすでに各種センサーからのデータをenebularに取り込む部分までは実現されているので、Toamiはenebularからデータを受信してその後のデータを活用する部分に利用いただきます。



Toamiでは受信データの項目を自由に設定することができますが、ハッカソンでは素早くToamiを活用していただくために、事前にデータを受信する以下のフィールドをNSWにて設定します。

  • Property01 : 文字列
  • Property02 : 文字列
  • Property03 : 文字列
  • Property04 : 文字列
  • Property05 : 文字列
  • Property06 : 数値
  • Property07 : 数値
  • Property08 : 数値
  • Property09 : 数値
  • Property10 : 数値
  • PropertyLocation : 位置情報


Toamiへのデータ送信API

Toamiにデータを送信するためには以下APIにてデータを送信します

■リクエストヘッダー


  • Host : 111.108.37.67
  • URL : /Thingworx/Things/Team[チームNO]ReceiveData/Properties/
  • Content-Type : application/json
  • Accept : application/json
  • appKey : [チームごとに配布するアプリケーションキー]


チームNOおよびアプリケーションキーはハッカソン当日に配布します。


■リクエストボディ

{
"ReceiveData" : {
"Property01" : "[Property01の値]",
"Property02" : "[Property02の値]",
"Property03" : "[Property03の値]",
"Property04" : "[Property04の値]",
"Property05" : "[Property05の値]",
"Property06" : [Property06の値],
"Property07" : [Property07の値],
"Property08" : [Property08の値],
"Property09" : [Property09の値],
"Property10" : [Property10の値],
"PropertyLocation" : {"latitude":"[位置情報・緯度]","longitude":"[位置情報・経度]"[, "elevation":"[位置情報・高度]"]}
}
}

enebularからのデータ送信

ここではenebularからToamiへのデータ送信方法を説明します。センサーデータをenebularに取り込む部分までは、「技術情報その2:enebularによるLoRaWANデータの処理」にて紹介いただいていますので、そちらを参照してください。ここではhex2binノードにて変換された文字列をToamiサーバに登録する処理を説明します。

■function : SetPropertiesの追加

hex2binのFunction後に新たなFunctionを追加します。このFunctionはToamiに送信するjson形式のデータを作成するもので、名前をSetPropertiesとします。

functionのスクリプト部分には以下を記載してください。
赤字部分はチームごとに配布される内容に変更いただきます。
------------------------------------------------------------------
// msg.urlがリクエストリクエストURLとなる
msg.url = "http://111.108.37.67/Thingworx/Things/Team01ReceiveData/Properties/*";

//msg.methodがHTTP Methodとなる
msg.method = "PUT";

//msg.heardsがHTTP Headerに設定設定される
msg.headers = {
    'Content-type':'application/json',
    'appKey':'aad29d4d-dd75-47f1-92f6-ec4ff730ce01'
};

// msg.payloadがHTTPBodyに設定設定される
msg.payload = {
"ReceiveData" : {
"Property01" : msg.payload,
"Property02" : "",
"Property03" : "",
"Property04" : "",
"Property05" : "",
"Property06" : 0,
"Property07" : 0,
"Property08" : 0,
"Property09" : 0,
"Property10" : 0,
"PropertyLocation" : 
{
"latitude":"0",
"longitude":"0"
},
"timestamp": new Date().getTime()
}
};
return msg;
------------------------------------------------------------------

■http requestノード追加

次にJSON形式のhttpリクエストを作成するノードを追加します。http requestノードをドラッグして、SetPropertiesの後につなげてください。ノードの名前は"PUT to Toami"とします。


http requestノードのプロパティは以下に設定してください。
・Method : - set by msg.method -
・URL : 空欄
・Return : a UTF-8 string
・Name : PUT to Toami


■debugノードの追加

最後にdebugノードをhttp requestノードの後につなげてください。これはなくても動作しますが、エラーが発生した際に原因を確認するのに必要となります。

■Deploy

ここまでできたらDeployを行い、センサーデータの受信を行うと、受信したデータが自動的にToamiに連携されます。


コメント

  1. enebularのSetProperties以降をExportしました。 使用する場合は以下をコピペして、enebularにImportしてください
    ----------------------------------------------------------------------------------------------
    [{"id":"2e2b1699.e04b1a","type":"function","z":"91e772c7.ddd27","name":"SetProperties","func":"// msg.urlがリクエストリクエストURLとなる\nmsg.url = \"http://111.108.37.67/Thingworx/Things/Team01ReceiveData/Properties/*\";\n\n//msg.methodがHTTP Methodとなる\nmsg.method = \"PUT\";\n\n//msg.heardsがHTTP Headerに設定設定される\nmsg.headers = {\n 'Content-type':'application/json',\n 'appKey':'aad29d4d-dd75-47f1-92f6-ec4ff730ce01'\n};\n\n// msg.payloadがHTTPBodyに設定設定される\nmsg.payload = {\n \"ReceiveData\" : {\n \"Property01\" : msg.payload,\n \"Property02\" : \"\",\n \"Property03\" : \"\",\n \"Property04\" : \"\",\n \"Property05\" : \"\",\n \"Property06\" : 0,\n \"Property07\" : 0,\n \"Property08\" : 0,\n \"Property09\" : 0,\n \"Property10\" : 0,\n \"PropertyLocation\" : \n {\n \"latitude\":\"0\",\n \"longitude\":\"0\"\n },\n \"timestamp\": new Date().getTime()\n }\n};\nreturn msg;","outputs":1,"noerr":0,"x":398,"y":228.66665649414062,"wires":[["7486f8ba.403498"]]},{"id":"7486f8ba.403498","type":"http request","z":"91e772c7.ddd27","name":"PUT to Toami","method":"use","ret":"txt","url":"","x":601.0000610351562,"y":321,"wires":[["fd5c81a7.a1119"]]},{"id":"fd5c81a7.a1119","type":"debug","z":"91e772c7.ddd27","name":"","active":true,"console":"false","complete":"payload","x":814,"y":387,"wires":[]}]
    ----------------------------------------------------------------------------------------------

    返信削除

コメントを投稿

このブログの人気の投稿

LoRaWANの下り通信

遅ればせながら・・・第2回のレポート前編

enebuler X MotionBoard による、IoT リアルタイムモニタリング