第2回 3G シールド・アイデア・コンテスト向け 「SensorCorpus TM」ユーザー・ガイド 第1.1 版 2014.08.26 作成 目次 Ⅰ「SensorCorpus TM」のご紹介 ~センサー・データの蓄積・活用に特化したクラウド・サービス P2 Ⅱ P4 操作方法 (1)ユーザー登録を行う P4 (2)コンテストサイトにログインする P5 (3)ゲートウェイ機器(Arduino)を登録する P6 (4)センサー機器を登録する P10 (5)Arduino+3G シールド上のスケッチを作成する P13 (6)データを表示・閲覧する P19 (7) データをダウンロードする P20 (8)利用上の注意(必ずお読みください) P21 1 第2回 3G シールド・アイデア・コンテスト対応 「SensorCorpus TM」ユーザー・ガイド Ⅰ「SensorCorpus TM」のご紹介 ~センサー・データの蓄積・活用に特化したクラウド・サービス 株式会社インフォコーパスが運営する「SensorCorpus TM」は、さまざまなセンサー情報 を集約できるクラウド基盤です。 第 2 回 3G シールド・アイデア・コンテストの参加者は、SensorCorpus TM コンテスト 専用の簡単 API を使うことによって、Arduino+3G シールドの測定データを、簡単にクラ ウド上に送信し、蓄積し、表示・閲覧等を行うことができます。 SensorCorpus TM コンテストサイトの主な特徴は以下の通りです。 ・コンテスト専用の簡単 API をお使いいただくことで、煩雑なプログラミングから解放 されます。 ・参加者の認証やゲートウェイ機器(Arduino)の簡易認証が可能です。 ・参加者ごとに、ゲートウェイ機器(Arduino)やセンサー機器の管理ができます。 ・データ値をすぐにビジュアル化し、測定結果を検証できます。 ・センサー・データの測定単位は、国際標準である国際単位系(SI)に準拠しています。 ・データ転送は REST API に準拠し、JSON/CSV に対応しています。 なお、本コンテスト参加者におかれましては、コンテスト期間中は SensorCorpus TM を 無償でお使いいただけます。 また、本マニュアルの説明で用いているソースコードのうち、SensorCorpus TM の利用に 関係したソースコードついては、Web サイトに掲載しており、C 言語版と C++言語版の二 種類のコードをダウンロードすることができます。第5節をご参照ください。 2 <図 1> Arduino+3G シールドから「SensorCorpus TM」のクラウドを活用 <図 2> 「SensorCorpus TM」ホーム画面 (http://www.sensorcorpus.net/?page_id=11) この利用マニュアルの PDF はここからダウン ロードできます。 3 Ⅱ 操作方法 それでは,Arduino+3G シールド上の温度センサー値をクラウドにアップし,グラフを閲 覧したりデータをダウンロードしたりするまでの手続きを、解説していきます。 (1)ユーザー登録を行う まず、ユーザー登録を済ませていただきます。 今回のコンテストでは、ご参加いただく段階で、予めコンテスト事務局にメールアドレ スをご連絡いただいていることと存じます。本 SensorCorpus TM の利用をご希望される方 は、コンテスト事務局にご連絡いただいたものと同一のメールアドレスを用いて、 [email protected] 宛に利用ご希望のメールをご送付ください。「SensorCorpus TM コンテストサイト」のユーザー登録をさせていただき、登録完了をメールにてご返信致 します。 <図 3> 登録完了ご案内電子メール画面 To: [email protected] Subject: 登録完了のご案内 (SensorCorpus コンテストサイト) Reply-to: [email protected] [email protected] 様 SensorCorpus コンテストサイトの登録完了のご案内のメールです。 ログイン名: [email protected] 初期パスワード: kNes8K3 で登録を完了致しました。 SensorCorpus ホーム ( http://www.sensorcorpus.net/ ) から入り、 管理画面に移動後、パスワードをご変更の上、ご利用ください。 このメールについて、身に覚えがなければ削除願います。 よろしくお願い致します。 ---SensorCorpus コンタクトセンター ([email protected]) 4 (2)コンテストサイトにログインする コンテストサイトには、ご登録いただいたメールアドレスとパスワードを入力してログ インしておいてください。ログインすると下記のメインメニュー画面に遷移します。 <図 5> SensorCorpus ホームから管理画面に移動してログイン (http://www.sensorcorpus.net/) ここから管理画面に 移動してください ここからログイン してください sensor メインメニュー です 5 (3)ゲートウェイ機器(Arduino)を登録する 続いて、お手持ちのゲートウェイ機器(Arduino)を登録します。 メインメニューから、ゲートウェイ管理画面 をクリックしてください。ゲートウェイ機 器の一覧・検索画面が開きます。 <図 6> ゲートウェイ機器の一覧・検索画面 ゲートウェイ一覧で、 検索もできます 右のオペレーションメニューから、「ゲートウェイ作成」をクリックしてください。 6 <図 7> ゲートウェイ機器の作成画面 ※1 ※2 ※3 以下の情報を入力してください。 ・ ゲートウェイ名 (任意) <図 7 ※1> ゲートウェイに自由に名前を付けることができます。グラフの表示等でその名前が表 示されます。またセンサー登録時に、そのセンサーをどのゲートウェイに繋げるかを 設定する際にこの名称で選択します。名前を付けなかった場合にはシステム側で割り 当てた通番が表示されます。 ・ プロダクト名 (任意) <図 7 ※2> プロダクト名を選択してください。いつでも入力できます。入力しなくても動作には 支障はありません。もし一覧にない場合には、製品名、製品番号、製品を出している 会社の製品仕様の URL を [email protected] までご連絡ください。選択 肢に追加いたします。 ・ データ送信開始日時 (任意) 7 今回のコンテストでは入力は不要です。コンテストの実験開始日時が自動的に設定さ れます。 ・ データ送信終了日時 (任意) 今回のコンテストでは入力は不要です。コンテストの実験終了日時が自動的に設定さ れます。 ・ データ送信間隔 (任意) <図 7 ※3> データを送信する間隔を設定してください。「任意」は不定期に送信する場合に設定 してください。不定期送信の場合にも、連続する送信は 5 秒以上の間隔を空ける必要 があります。 ・ タグ 1 ~タグ 5 (任意) データ取得の際に、タグを指定することで絞り込みが可能になります。いつでも入力 できます。設定しなくても構いません。 ・ 有効フラグ (任意) このゲートウェイを一時的に無効にしたい場合に「無効」設定してください。通常は 「有効」になっています。 必須項目の入力が済んだら、 「作成」ボタンをクリックしてください。作成が完了すると、 ゲートウェイ詳細画面表示になり、上から3行目、4行目にそれぞれ「ゲートウェイ認証 コード」と「セッションコード」が表示されます。 8 <図 8> ゲートウェイ機器の登録完了画面。認証コードが発行されています ゲートウェイ認証コードとセッション コードが発行されました。 このコンテストでは、セッションコード のみ使用します。 今回のコンテストでは、これらのうち、 「セッションコード」をセンサーからの送信の際 に指定します。指定の仕方は、次々節の「Arduino+3G シールド上のスケッチを作成する」 で説明します。 9 (4)センサー機器を登録する 続いて、お手持ちのセンサー機器を登録します。 <図 9> メインメニュー画面 メインメニューから センサー管理画面 をクリックしてください。センサー機器の一 覧・検索画面が開きます。 <図 10> センサー機器の一覧・検索画面 センサー一覧で、 検索もできます 10 右のオペレーションメニューから、「センサー作成」をクリックしてください。 <図 11> センサー機器の作成画面 ※1 ※2 ※3 ※4 以下の情報を入力してください。 ・ ゲートウェイ名 (任意) <図 11 ※1> 作成するセンサーがどのゲートウェイに属するかを指定します。この指定はセンサー 作成後に指定することもできます。まずセンサー機器の登録だけしておき、センサー の使用時にどのゲートウェイに属するかを決めたり、変更することができます。 ・ センサーID (任意) <図 11 ※2> センサーを識別する ID。通常、機器識別番号として割り当てられている番号(~64 ビ ット)を hex 形式文字列(~16 バイト)で指定します。あるいは、所有者の管理範囲で センサーを個別に識別できる任意の文字列を指定しても構いません(ただし、英数字 _-で構成される 16 文字以内の文字列とします)。 11 ・ センサー名 (任意) <図 11 ※3> センサーに自由に名前を付けることができます。グラフの表示等でその名前が表示さ れます。名前を付けなかった場合にはセンサーID が表示されます。 ・ プロダクト名 (任意) <図 11 ※4> プロダクト名を選択してください。いつでも入力できます。入力しなくても動作には 支障はありません。もし一覧にない場合には、製品名、製品番号、製品を出している 会社の製品仕様の URL を [email protected] までご連絡ください。選択 肢に追加いたします。 ・ タグ 1 ~タグ 5 (任意) データ取得の際に、タグを指定することで絞り込みが可能になります。いつでも入力 できます。設定しなくても構いません。 ・ 有効フラグ (任意) このセンサーを一時的に無効にしたい場合に「無効」設定してください。通常は「有 効」になっています。 必須項目の入力が済んだら、 「作成」ボタンをクリックしてください。 12 (5)Arduino+3G シールド上のスケッチを作成する それでは、いよいよ Arduino+3G シールド側のスケッチ(プログラム)を作成してきま しょう。こちらは、前節の「セッションコード」を使って、スケッチに記載していきます。 ここでは、温度センサー「LM61BIZ」を使って、図 12 のようにピンをアナログ A0 ピン と、A1 ピン、それに A2 ピンのピンに差し込みます。 <図 12> 3G シールド上の温度センサー(LM61BIZ)の取り付け 13 それでは、スケッチを紹介していきましょう<リスト 1>。ここでは、送信先に依存する 値を、スケッチ1の中に実際に書き込んでください。 <リスト 1> 初期設定部分のスケッチ // A3GS sample – httpPOST (Use sensorcorpus.net) #include <SoftwareSerial.h> SensorCorpus に関係する #include “a3gs.h” URL などを設定。a3gs ライ #define LM61BIZ_Pin 1 // LM61BIZ output pin A1 const char *server = “data.sensorcorpus.net”; ブラリでは、制御文字のエス ケープは $ 文字 const char *path = “/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]; セッションコード(64 バイト) を埋め込んでください // センサー測定値の CSV の1行を生成するためのバッファ // このゲートウェイ配下のセンサーID(16 バイト以下)を埋め込んでおく char *s1init = "0123456789000001,xxxx-xx-xxTxx:xx:xx%2B09:00,T,"; char s1buf[64]; センサーID(16 バイト以下) を埋め込んでください // HTTP POST の結果を得るためのバッファ char res[50]; int len; ここでは特に、「server」や「path」 、それに「header」に SensorCorpus に関係するも のを設定してあります。 このコードでは、1測定データのみを送信するサンプルになっていますが、CSV の1行 が1つのセンサーの1つの測定データを表すようになっているため、複数行の CSV を生成 することで、複数のセンサーのデータや同一センサーの異なる測定時刻のデータをまとめ て送信することもできます。 14 つぎの「setup」関数<リスト 2>では、温度センサーをアナログピンに連続して設定す るものと、あとは、3G シールドの初期化を行っています。 <リスト 2> setup 関数の設定 このスケッチの中で 3G シールドに関係するものは、 「a3gs.start」と「a3gs.begin」の二 つのみで、この二つで 3G シールドの立ち上げ、つまりネットとの接続を行っています。 15 つぎの「loop」関数<リスト 3>では、温度センサーの値を読み込み、サーバに受け渡す ため「httpPOST」を使っているところが、3G シールドに関係するものです。こちらは、 30 秒おきに温度センサー値をアップするように、最終行に待機で「delay(30000);」を設定 しています。 <リスト 3> loop 関数での処理 // 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) { … } SensorCorpus で void loop () { 提供する便利関数 static int Count = 1; Serial.print(“>httpPOST requesting: “); Serial.println(Count++, DEC); CSV と POST 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=[”); httpPOST で サ ー バ Serial.print(res); にデータを送信 Serial.println(“]”); } else { Serial.println(“Failed.”); } delay(30000); // take and interval } 16 続いて、温度センサー値を計算するための関数<リスト 4>もご紹介しておきます。 <リスト 4> getTemp 関数:温度センサー値を計算する関数 最後に、HTTP POST の結果としてどのような値が得られるかを以下に示します。結果 は文字列として、char res[50] の配列に格納されます。 HTTP コード: 200 ① データが格納された場合 "正しく格納された件数,送信された総数,エラー情報 1,エラー情報 2,エラー情報 3,..." ※エラーがない場合は、エラー情報以降は空。エラー情報は以下の形式 CSV の行にエラーがあった場合: "行番号:カラム名" クォータ制限で破棄された場合: "quota:破棄された件数" 例: 5,5 5 件送信、5 件格納 3,5,2:ts,3:ts 5 件送信、第 2,3 行目の時刻表記エラーで破棄、3 件格納 0,0,quota:5 5 件送信されて、クォータ制限で 5 件破棄 ② 軽微なパラメータ指定の不備の場合 "Bad Parameter: POST/GET パラメータ名 HTTP コード: 401 以下のいずれかの場合で、データは一切格納されない ・セッションコードが設定されていないか不正の場合 ・セッションコードが無効になっている場合 ・セッションコードは有効であるが、設定された有効な受信期間内でなかった場合 17 ソースコードサンプルのご提供 上述の説明で用いているソースコードのうち、SensorCorpus TM の利用に関係したソー スコード(リスト1とリスト3)ついては、Web サイトに掲載しており、C 言語版と C++言 語版の二種類をダウンロードすることができます。 上記の例と同様に、C 言語で記述されたもので、3G シールドのライブラリを利用し ています。動作確認を行う場合などにご利用ください。 (URL https://www.sensorcorpus.net/contest/download/sc_3g.ino ) Ethernet シールドの例で C++言語で記述されています。3G シールドの例ではあり ませんが、容易に変更できるように記述されておりますので、C++で開発されたい 場合などにご参照ください。 (URL https://www.sensorcorpus.net/contest/download/sc_eth.ino ) 18 (6)データを表示・閲覧する 続いて、クラウドに格納したデータを表示・閲覧してみましょう。 <図 13> メインメニュー画面 メインメニューから グラフ をクリックしてください。現在登録されているセンサーの 測定データをグラフで表示することができます。 <図 14> グラフと最新値の表示画面 どのセンサーを表示す るかを選択できます。 19 (7)データをダウンロードする 格納されているセンサーデータは、期間(何日から何日まで)とセンサーID(複数可)を指定 して、測定値を CSV 形式でダウンロードすることができます。 (詳細は本マニュアルの次版で説明いたします) <リスト 4> ダウンロードした CSV データの例 045B1C8020002345,2014-07-01T10:00:00+09:00,T,24.2 045B1C8020002345,2014-07-01T11:00:00+09:00,T,24.5 045B1C8020002345,2014-07-01T12:00:00+09:00,T,25.0 045B1C8020002345,2014-07-01T13:00:00+09:00,T,25.2 0A3F254030008675,2014-07-01T10:10:00+09:00,T,26.3 0A3F254030008675,2014-07-01T11:10:00+09:00,T,26.7 0A3F254030008675,2014-07-01T12:10:00+09:00,T,27.1 センサーID 測定時刻 測定型(T は温度) 20 測定値 (8)利用上の注意(必ずお読みください) ① セッションコードの管理について 本コンテストでは、ゲートウェイの簡易認証を導入しており、通信時には、割り当てら れたセッションコードを指定します。このセッションコードが他者に使用されても、自分 の測定データが他者に詐取されることはありませんが、逆に、他者のゲートウェイから送 信されたデータが自分のセンサー情報として取り込まれることになり、測定データに想定 外のデータが混じることになります。セッションコードの管理は十分に注意して行ってく ださい。 ② データの「通信間隔」および「送信件数」の制限について SensorCorpus TM では、 「通信間隔」に下限を、および「一定時間内のデータの送信件数」 に上限を、それぞれ設けています。本コンテストでは、通信間隔に関しては、不定期送信 の場合 5 秒、定期送信の場合は 15 秒を下限としています。また、総送信データ件数の上限 に関しては、1ユーザー1時間当たり 720 件となります。いずれの場合も、制限を超えた データはクラウド側に格納されず破棄されます。 ただし、コンテストでの利用状況およびシステム負荷によっては、この制限値を変更す る場合があります。 ③ データの保管期間について データの保管期間は、2014 年 9 月 1 日から 2014 年末までを予定しております。この期 間中に蓄積されたデータに関しては、各自バックアップしていただくか、2014 年 12 月に リリース予定の SensorCorpus TM ベータ版サービスに移行することができます。 ④ 個人情報の取り扱い 株式会社インフォコーパスは、本コンテスト参加者の個人情報を適切かつ慎重に管理す るものとし、本コンテストでのサービス提供、及びそれに関するご通知・ご案内以外の目 的には使用しません。 ⑤ 免責事項 本マニュアルに示された「SensorCorpus TM 」サービスは、株式会社インフォコーパス が第 2 回 3G シールド・アイデア・コンテストの趣旨に賛同し、同コンテストの参加者に向 けて特に無償で提供を行っているものです。従いまして、株式会社インフォコーパスは、 本サービス運営上生じるかもしれないシステム・トラブル、データの誤謬・改変・毀損・ 消滅、閲覧不能、アップロードとダウンロードの不能、コンピューターおよびネットワー ク上で生じるセキュリティ上のトラブル、及びその他本サービスを利用することに起因す 21 る一切の事態に関し、いかなる責任も負わないものとします。本サービスの利用者は、本 サービスの利用開始と同時に、上記の免責事項に同意したものと見なされますので、ご承 知ください。 22
© Copyright 2024