3gシールド・アイデア・コンテスト対応...
TRANSCRIPT
Copyright© 2014 Infocorpus Inc. All rights reserved
3Gシールド・アイデア・コンテスト対応 SensorCorpusTM のご紹介
株式会社インフォコーパス
鈴木潤一
1
Copyright© 2014 Infocorpus Inc. All rights reserved
SensorCorpusTM とは
Ø 「SensorCorpusTM」は、さまざまなセンサー情報を集約・管理・活用できるクラウド基盤です。
Ø 第2回3Gシールド・アイデア・コンテストの参加者は、SensorCorpusTM コンテスト専用の簡単APIを使うことによって、Arduino+3Gシールドの測定データを、簡単にクラウド上に送信・蓄積し、表示・閲覧等を行うことができます。
2
Copyright© 2014 Infocorpus Inc. All rights reserved
SensorCorpusTM の主な特長
Ø コンテスト専用の簡単APIを利用することで、煩雑なプログラミングが不要
Ø 参加者の認証やゲートウェイ機器(Arduino)の簡易認証が可能
Ø 参加者毎に、ゲートウェイ機器(Arduino)やセンサー機器の管理が可能
Ø データ値をすぐにビジュアル化し、測定結果を検証可能 Ø センサー・データの測定単位は、国際単位系(SI)に準拠 Ø データ転送はREST APIに準拠し、JSON/CSVに対応
3
Copyright© 2014 Infocorpus Inc. All rights reserved
稼働・データ収集・活用
導入・登録・設置
センサーとクラウドの関係
4
①機器導入 ②機器登録 ③セッションコード
取得・設定
機器設置
④クラウドへ
データ送信 ⑤データ閲覧
機器稼働
セッション 認証
クラウドに
データ格納
⑥データ取得
と加工
※ゲートウェイ、センサーID登録
※センサーIDを 設定して送信
※センサーID付 データが格納
機器側
クラウド側
凡例 破棄・置き換え
Copyright© 2014 Infocorpus Inc. All rights reserved
Arduino+3GシールドからSensorCorpusTM を活用
5
①機器導入
SensorCorpus TM
②機器登録
⑤データ閲覧 ⑥データ取出し →加工
ゲートウェイA
センサーA-1
センサーA-2
ゲートウェイB
センサーB-1
センサーB-2
3Gシールド
各種センサー +
Arduino UNO R3
③セッションコード取得 (簡易認証)
Arduinoに 埋め込み
④データ送信 (+セッションコード)
A-1,時刻,型,値 A-1,時刻,型,値 A-1,時刻,型,値
A-2,時刻,型,値 A-2,時刻,型,値
A-2,時刻,型,値 …
ユーザ 毎管理
Copyright© 2014 Infocorpus Inc. All rights reserved
ゲートウェイとセンサーの親子関係を登録
6
アカウント登録 ゲートウェイ登録 センサー登録
ゲートウェイA
センサーX1
センサーY2
ゲートウェイB
センサーW1
センサーZ2
ユーザ毎にゲートウェイとセンサーの親子関係を登録し管理することができる
プロファイル管理 プロダクト管理
製品A 製品X
製品Y 製品Z
prof(1)
prof(2)
prof(3)
Copyright© 2014 Infocorpus Inc. All rights reserved
Arduinoプログラミング
7
// A3GS sample – httpPOST (Use sensorcorpus.net cloud service) #include <SoftwareSerial.h> #include “a3gs.h” #define LM61BIZ_Pin 1 // LM61BIZ output pin A1 const char *server = “data.sensorcorpus.net”; const char *path = “contest/store/”; const char *header = “Content-Type: application/x-www-form-urlencoded\r\n”; int port = a3gsDEFAULT_PORT; // ゲートウェイ登録画面で得られたセッションコード(64バイト)を埋め込んでおく char *bodyinit = "session=012345…78901&gw_ts=xxxx-xx-xxTxx:xx:xx%2B09:00&csv="; char bodybuf[256]; // センサー測定値のCSVの1行を生成するためのバッファ // このゲートウェイ配下のセンサーID(16バイト以下)を埋め込んでおく char *s1init = "0123456789000001,xxxx-xx-xxTxx:xx:xx%2B09:00,T,"; char s1buf[64]; // HTTP POSTの結果を得るためのバッファ char res[50]; int len;
SensorCorpusに関係するものを設定
セッションコード(64バイト)を埋め込んでください
センサーID(16バイト以下)を埋め込んでください
Copyright© 2014 Infocorpus Inc. All rights reserved 8
// valに生測定値、scaleに小数点以下桁数を指定し、測定データを文字列に変換 const char *make_val (int val, int scale) { … } // 取得した測定データを、送信用CSVの1行の形式で sbuf に書き込む void set_val (char *sbuf, const char *init, int offset, const char *vstr) { … } // 測定データのCSV文字列やセッションデータをまとめてPOSTデータに仕上げる char *make_body (char *body, const char *init) { … } void loop () {
static int Count = 1; Serial.print(“>httpPOST requesting: “); Serial.println(Count++, DEC); len = sizeof(res); int temp = getTemp(); // 温度値用のCSVの1行を生成(17はセンサーIDのバイト数+1) set_val(s1buf, s1init, 17, make_val(temp,1)); // 温度値用のCSVと現在時刻を含めたPOST用のデータをbodybufに設定 make_body(bodybuf, bodyinit); if (a3gs.httpPOST(server, port, path, header, bodybuf, res, &len, true) == 0) { Serial.println(“Succeeded.”); Serial.print(“>Response=[”); Serial.print(res); Serial.println(“]”); } else { Serial.println(“Failed.”); } delay(30000); // take and interval
}
SensorCorpusで提供する便利関数
CSVとPOSTデータを生成
httpPOST でサーバにデータを送信
Copyright© 2014 Infocorpus Inc. All rights reserved
SensorCorpusTM 関連サイト
Ø SensorCorpus全般の情報
‒ http://blog.sensorcorpus.net
Ø コンテスト特設サイト
‒ http://ui.sensorcorpus.net/contest/index.php?r=site/page&view=home
Ø SensorCorpusメインメニュー
‒ http://ui.sensorcorpus.net/contest/index.php
10