IoTハンズオン ~ゲートウェイ、ネットワーク、クラウドまで一挙に学べる、ハンズオン!~

SORACOM Air設定

SORACOM アカウントの作成

ユーザーコンソールをご利用いただくためには、まずSORACOM アカウントを作成してください。 https://console.soracom.io/#/signup にアクセスします。

「アカウント作成」画面が表示されますのでメールアドレスおよびパスワードを入力して、[アカウントを作成] ボタンをクリックします。

_images/ac_create.png

複数人で管理を行う場合は、事前にメーリングリストのアドレスを取得するなど、共有のメールアドレスをご利用ください。

下記の画面が表示されるので、メールを確認してください。

_images/ac_confirm.png

メールが届いたらリンクをクリックしてください。

_images/ac_user.png

自動的にログイン画面に遷移しますので、メールアドレスとパスワードを入力してログインしてください。

ユーザーコンソールへのログイン

ログイン画面が表示されるので、アカウント作成時に登録したメールアドレスとパスワードを入力し、 [ログイン] ボタンをクリックしてください。(ログイン画面が表示されない場合はブラウザで https://console.soracom.io にアクセスします。)

_images/ac_login.png

以下の様な「SIM 管理」画面が表示されたらログイン完了です。引き続き、支払い情報の設定に進みましょう!

_images/ac_success.png

支払情報の設定

通信料の支払い方法はクレジットカードになります。クレジットカードの情報を登録するには、メイン画面上部のユーザー名から[お支払い方法設定]を開きます。

お支払い方法設定

_images/pay_info.png

お支払方法で各情報を入力し、支払い方法を登録します。

_images/pay_payment.png

Air SIM の登録

ユーザーコンソールにログインして、Air SIM の登録を行います。左上の [SIM登録] ボタンをクリックします。

_images/rg_rgsim.png

「SIM登録」画面で、Air SIM の台紙の裏面に貼ってある IMSI と PASSCODE を入力してください。

_images/rg_card.png

名前、グループは空欄のままでも構いません。[登録] を押して SIM 登録を完了してください。複数の Air SIM を続けて登録することも可能です。

_images/rg_imsi.png

Air SIM を登録した直後の状態は「準備完了 (Ready)」と表示され、通信可能な状態になっています。初めて通信を行ったり、コンソールもしくは API で使用開始 (Activate) 処理を行うことで、状態は「使用中 (Active)」に変わります。 出荷前など、まだ通信を行いたくない場合は、コンソールもしくは API で休止 (Deactivate) 処理を行ってください。これにより「休止中 (Inactive) 」の状態となり通信は行われません。

端末の設定

ご利用になられる端末 (スマートフォンや IoT デバイス) に Air SIM を挿入してください。その後、下記のパラメータで通信設定を行ってください。

  • APN: soracom.io
  • ユーザ名: sora
  • パスワード: sora

設定後、実際にデータ通信可能かどうか確認してください。通信できていれば、初期設定は完了です。これで、インターネットに接続できます。おめでとうございます!

その他の操作について

下記ページに、コンソールからの通信速度変更等の操作についてご案内がありますので、ぜひご確認ください。

AWS IoT基本設定

デバイスの作成

AWSマネージメントコンソールへログインし、画面右上のメニューから東京リージョンを選択します。 サービス一覧から”AWS IoT”をクリックします。

_images/awsiot-servicemenu.png

“Get Startedが表示される場合はそちらをクリックします。

_images/awsiot-getstart.png

デバイス(Thing)を作成します。メニューの”Create a thing”をクリックします。Nameに”edison”と入力し、[Create]をクリックします。

_images/awsiot-create-thing.png

リソースの一覧で作成したデバイスが表示されます。

_images/awsiot-thing.png

証明書の作成

メニューの”Create a certificate”をクリックし、[1-Click Certificate Create]をクリックします。

_images/awsiot-create-certificate.png

Download ~をクリックして、Public Key、Private Key、Certificateをそれぞれダウンロードします。

_images/awsiot-download-certificate.png

画面下の作成した証明書をクリックし、画面右のActionsリストから[Activate]を選びます。

_images/awsiot-activate-certificate.png

”ACTIVE”になったことを確認します 。

_images/awsiot-active-certificate.png

ポリシー作成

デバイスに対して、AWS IoTの各種操作を許可するためのポリシーを作成します。メニューの”Create a policy”をクリックします。フォームにそれぞれ以下のパラメータを入力し、[Create]をクリックします。

項目
Name awsiot-handson-policy
Action iot:*
Resource
  • (アスタリスク)

_images/awsiot-create-policy.png

作成したポリシーがリソースの一覧に表示されます。

_images/awsiot-policy.png

先ほど作成した証明書をポリシーに割当てます。リスト中の証明書をクリックし、[Actions]-[Attach a policy]をクリックしてください。

_images/awsiot-attach-policy.png

“Confirm”の画面で、フォームにポリシー名”awsiot-handson-policy”を入力し、[Attach]をクリックします。

_images/awsiot-attach-policy-2.png

次に、デバイスと証明書の関連付けを行います。作成した証明書をリソース一覧の中から選択し、[Actions]-[Attach a thingクリックしま す。

_images/awsiot-attach-thing.png

“Thing Name”にデバイス名: bx1 を入力し、[Attach]をクリックします。

_images/awsiot-attach-thing-2.png

DynamoDBのテーブル作成(CloudFormation)

ハンズオンで利用するDynamoDBテーブルを作成を自動化するために、CloudFormationのスタックを作成します。


マネージメントコンソールのサービス一覧から”Cloud Formation”をクリックします。

_images/awsiot-cf-1.png

“Choose a template”から”Specify an Amazon S3 template URL”にチェックを入れ、以下のパスを入力し、[Next]をクリックします。

https://s3-ap-northeast-1.amazonaws.com/awsiot-handson-jp/dynamodb.template


_images/awsiot-cf-2.png

“Stack Name”に”IoTHandsonStack”と入力し、[Next]をクリックします。

_images/awsiot-cf-3.png

“Options”で何も入力せずに[Next]をクリックします。

_images/awsiot-cf-4.png

“Review”で[Create]をクリックします。

_images/awsiot-cf-5.png

Cloud Formationのスタックの一覧に作成したスタックが表示されるのを確認します。Statusは”CREATE_IN_PROGRESS”から”CREATE_COMPLETE”になるのを確認します。

_images/awsiot-cf-6.png

_images/awsiot-cf-7.png

ルール作成

到着したセンサーデータをDynamoDBにストアするように設定します。

AWS IoTのサービス画面を開き、”Create a resource”をクリックし、”Create a rule”をクリックします。”Create a rule”の画面で以下の設定値を入力します。

項目 設定値
Name IoTHandsonRule
Description 任意
Attribute *(アスタリスク)
Topic Filter handson/device01
Condition 入力しない

_images/awsiot-create-rule-1.png

画面をスクロールし、”Choose an action”から”Insert a message into a Database table(DynamoDB)”を選択します。以下の値を入力します。”Role Name”では[Create a new policy]をクリックします。


設定項目
Table Name IoTHandsonRawData
Hash Key Value ${topic(2)}
Range Key Value ${timestamp()}
Payload Field value

_images/awsiot-create-rule-2.png

AWS IoTからDynamoDBへデータをPutするためのRoleを作成します。以下の画面で[Allow]をクリックします。

_images/awsiot-create-rule-2.png

[Add Action]をクリックします。

_images/awsiot-create-rule-4.png

“DynamoDB Action”が追加されたことを確認したら、[Create]をクリックします。

_images/awsiot-create-rule-5.png

リソースの一覧に作成したルールが作成されたことを確認します。

OpenBlocks IoT BX1 設定

本章ではOpenBlocks IoT BX1 (以下 BX1) を使用し、センサーデバイス “CC2541” のデータを “SORACOM Air” の回線で “AWS IoT” に送信するところまでの設定を行います

大まかな流れは下記のとおりです

  1. BX1の取り扱いを理解する (起動や停止方法)
  2. Web管理画面の表示とログイン
  3. CC2451(センサーデバイス)の登録
  4. BX1内部でのデータ収集の開始 / 状況の確認
  5. SORACOM Air(3G回線) APN設定
  6. AWS IoTへのデータ送信設定

BX1の取り扱い (電源ON/OFF・再起動、SIM挿入)

BX1は給電開始と共に電源ONとなります。USBケーブルを接続すると起動開始です

INITボタンや電源ボタンはOSのシャットダウンと再起動に利用されますので、必要時以外は押さないでください

部位の名前やSIM挿入方法については、下記を参照してください

_images/bx1_1-1_bx1.png

(OpenBlocks IoT Family WEB UI セットアップガイド P7 より抜粋)

ステータスインジケータ (LEDの表示色)

BX1は STATUS のLEDにて状態を把握することができます

本ハンズオンにおいては、起動後は 白色、水色、青色 が望ましく、それ以外の色の場合は不具合がある可能性がありますので、チューターにご相談ください

具体的なLED色と状態については、下記を参照してください

_images/bx1_1-2_led.png

(OpenBlocks IoT Family WEB UI セットアップガイド P7 より抜粋)

Web管理画面(WebUI)の表示とログイン

注意: BX1に接続したPCやスマートフォンは、BX1のWi-Fiに接続している限り、後ほど設定するSORACOM Airの設定が終わるまではインターネットに接続することが出来ません。また、SORACOM Airの設定が完了すると、インターネットへのアクセスは “PC =[wi-fi]=> BX1 =[SORACOM Air]=> インターネット” という経路になり、 通信料が発生する可能性があります ので、Dropbox等の共有ソフトの動作をOFFにすることを 強く推奨いたします

BX1とWi-Fiで接続する

BX1起動が完了すると、BX1はWi-Fiのアクセスポイントとして動作を開始します

お手持ちのPCやスマートフォンから SSID を探し、接続してください

  • SSID: _ホストID_1121handson
  • Password: ホストID

802.11g, WPA2-PSK の設定で接続できます

お手持ちのBX1のホストID確認方法

ホストIDは、BX1のウラ面のバーコード上の文字と数字の組み合わせになります

下記例では F2A00788 がホストIDです (そのためSSIDは _F2A00788_1121handson となります)

_images/bx1_2-1_serial.jpg

WebUIを表示する

BX1にWi-Fiで接続できたら、下記URLにてWebUIを表示します

http://192.168.254.254:880

下記の画面が出れば正常に接続ができています

_images/bx1_2-2_webui-login.png

WebUIにログインする

WebUIは下記IDとパスワードでログインできます

  • ID: webuiadm
  • Password: 0BSI0T (ゼロ ビー エス アイ ゼロ ティー)

ログインに成功すると、下記画面が表示されます

_images/bx1_2-3_webui-dashboard.png

CC2541をデバイスとして登録し、動作の確認をする

Bluetoothの使用を開始する

  1. WebUIから [サービス] - [基本] を表示
  2. Bluetooth の使用設定を 使用する にして [保存]
_images/bx1_3-1_bluetooth-enable.png

CC2451を検出して使用できるようにする

  1. WebUIから [サービス] - [Bluetooth関連] を表示
  2. Bluetooth LEデバイス検出 の [検出] をクリック
  3. 一覧の中から自分のデバイスを探し 使用設定 にチェックをして [保存]

NOTE: Bluetooth デバイス検出の方でなく、 Bluetooth LEデバイス検出 を押すようにしてください

_images/bx1_3-2_ble-list.png
自分のデバイスの探し方

Device Name = SensorTag が大量に表示される可能性があります

お配りした CC2541 にはアドレスのタグが書かれており、画面上に表示されている Device Address と一致したものが、ご自分の CC2451 となります

赤いカバーをはがすと、下記のようにアドレスが記載されています (タグにはコロン文字が記載されていません)

_images/bx1_3-3_cc2541-tag.jpg

確認

保存すると WebUI は下記のようになります

_images/bx1_3-4_ble-registered.png

ローカルへのデータ収集設定

AWS IoTへの送信の前に、まず CC2541 からのデータ収集ができているか確認をします

BX1のデータ収集機能を開始する

  1. WebUIから [サービス] - [基本] を表示
  2. データ収集 における データ収集 ならびに PD Handler をそれぞれ 使用する にして [保存]

NOTE: “PD Handler” は “データ収集” を <使用する> にすると表示されます

_images/bx1_4-1_collector-start.png

注意: データ収集を開始すると、新たにデバイス登録をすることができなくなります。デバイス登録をする場合は、まず、データ収集を行わないように設定を変更してください

BX1内へのデータ収集機能を開始する

  1. WebUIから [サービス] - [収集設定] を表示
  2. 本体内(local)使用する
_images/bx1_4-2-1_collect-setting.png

ページ後半に移動し dev_le_0000001 の設定を下記のようにします

  1. 送信対象送信する
  2. 送信先設定local にチェック
  3. 以上を確認し [保存]
_images/bx1_4-2-2_collect-setting.png
グラフの表示

localへのデータ収集が開始されると、WebUI内のグラフに表示が開始されます

[サービス] - [データ表示] にて確認できます

_images/bx1_4-3_plot.png

うまく表示されない場合は、後述の データ収集状況の確認 で確認します

データ収集状況の確認 (デバッグ)

WebUIから [サービス] - [収集ログ] にて、動作確認が可能です

ログ選択はそれぞれ下記のとおりです

  • pd-handler-stdout.log : CC2541 <-> BX1 間の送受信状況
  • pd-emitter.log : BX1 <-> 送信先(localやAWS IoT等) 間の送受信状況

注意: ログは自動的な更新をサポートしておりません。リロードの後、プルダウン選択をするようにしてください

下記画面は CC2541 からのデータ読み出しが成功している場合のログ画面です。JSONが表示されているのが見てわかります

_images/bx1_5-1_log.png

トラブルシュート: うまく収集がされていない場合

pd-handler-stdout.log に timeout: ... などと表示され、JSONデータが出力されてこない場合、 CC2451 との接続が切れている可能性があります

CC2451 の電源を入れなおすことで回復できる事があります

NOTE: CC2451のLEDが一瞬だけ点滅し、消灯したら接続が確立している合図です。しばらく経ってから pd-handler-stdout.log を確認してみてください

SORACOM Air

BX1はSORACOM Airに対応しております

注意: 本設定を行うとBX1はSORACOM Air経由でインターネット接続が可能となります。それにより、BX1がWi-Fiルーターのような振る舞いとなり、BX1にWi-Fi接続したPCやスマートフォン等の通信は “PC =[wi-fi]=> BX1 =[SORACOM Air]=> インターネット” という経路になり、 通信料が発生する可能性があります ので、Dropbox等の共有ソフトの動作をOFFにすることを 強く推奨いたします

APN設定

  1. WebUIから [ネットワーク] - [基本] を表示
  2. ページ下部の サービスネットワーク(モバイル回線)使用する (クリックでAPN設定が展開します)
  3. APN / ユーザ名 / パスワード をそれぞれ下記の通り設定し [保存]
  • APN: soracom.io
  • ユーザ名: sora
  • パスワード: sora
_images/bx1_6-1_soracom.png

再起動

APNの設定は再起動で反映されるため、BX1を再起動します

  1. WebUIから [メンテナンス] - [停止・再起動] を表示
  2. 再起動を実施します (最後にに確認ダイアログがでるので見逃さないようにしてください)
_images/bx1_6-2_reboot.png

AWS IoT

いよいよ CC2451 のデータを SORACOM Air を経由して AWS IoT に送信します

準備

AWS IoTから取得しておくもの

  • 証明書(Certificate)ファイル <拡張子 .pem.crt>
  • プライベートキー(PrivateKey)ファイル <拡張子 .pem.key>
  • エンドポイントURL (aws iot describe-endpoint 等)

その他取得しておくもの

NOTE: ファイル名にスペースが含まれています。BX1ではファイル名にスペース文字が使用できないため、処置をしておいてください (本例では スペースを _ に変更しています)

決めておくこと

  • 送信先トピック名 (本例では handson/device01 としています)

BX1設定

ファイルアップロード

まず、 AWS IoTの証明書ファイル、プライベートキーファイル並びにルート証明書ファイルの3つをBX1にアップロードします

  1. WebUIから [システム] - [ファイル管理] を表示
  2. 本画面からファイルを3つ、それぞれアップロード

すべてアップロードされると、下記のような画面となります

_images/bx1_7-1_file-upload.png
システム全体設定
  1. WebUIから [サービス] - [収集設定] を表示
  2. AWS IoT使用する (クリックで設定が展開します)
  3. 下記の通り設定します
  • 送信先ホスト: <エンドポイント>を設定
  • root証明書 : /var/webui/upload_dir/VeriSign-Class_3-Public-Primary-Certification-Authority-G5.pem

NOTE: 先のファイルアップロード画面でアップロードされたファイルは BX1内の /var/webui/upload_dir/ にアップロードされるので、それ以下のパスを指定することでファイルの読み込みが可能です

_images/bx1_7-2-1_awsiot.png

保存せず、ページ下部へ移動します

デバイス毎設定
  1. dev_le_0000001 の 送信先設定AWSIOT にチェックを付けます (クリックで設定が展開します)
  2. 下記の通り設定します
  • トピック名 : handson/device01
  • 証明書(AWS IoT) : /var/webui/upload_dir/(アップロードした .pem.crtファイル)
  • プライベートキー(AWS IoT) : /var/webui/upload_dir/(アップロードした .pem.keyファイル)
_images/bx1_7-2-2_awsiot.png

デバッグとトラブルシュート

送信状況は データ収集状況の確認 を使用してください

またAWS IoT側に送信されているかの確認には、CloudWatchを使用する他、 mosquitto_sub コマンドが使えます

mosquitto_sub --cafile VeriSign-Class_3-Public-Primary-Certification-Authority-G5.pem --cert ANY-certificate.pem.crt --key ANY-private.pem.key -h ANY.iot.ap-northeast-1.amazonaws.com -p 8883 -q 1 -d -t handson/device01

mosquitto_sub で サーバに接続できない

証明書がINACTIVEである可能性があります。AWS IoT上で当該する証明書をActivateしてください

mosquitto_sub で CONNECT が連続で表示され、待ち受けられない

証明書に有効なポリシーがアタッチされていない可能性があります。AWS IoT上で当該する証明書に有効なPolicyをattachしてください

付録1: センサーデータフォーマット

CC2451で取得したセンサーデータは、BX1を通過すると下記のようなJSONデータとなります このフォーマットをAWS IoT内のRule Engineで処理することが可能です (jqを使って整形済み。コメントは付与されません)

{
  "deviceId": "5c313ec027e1", // BX1の設定画面で設定したデバイスID (BX1で付与)
  "humidity": 40.7,           // 湿度 %
  "temperature": 28.6,        // 温度 ℃ (湿度センサー内)
  "objectTemp": 23.8,         // 物体温度 ℃
  "ambientTemp": 28.4,        // 周辺温度 ℃
  "gyroX": -1.4,              // ジャイロ(X軸) deg/s <角速度>
  "gyroY": 4,                 // ジャイロ(Y軸) deg/s
  "gyroZ": 0.2,               // ジャイロ(Z軸) deg/s
  "pressure": 1015.6,         // 気圧 hPa
  "accelX": 0.1,              // 加速度(X軸) G
  "accelY": 0.3,              // 加速度(Y軸) G
  "accelZ": 3.8,              // 加速度(Z軸) G
  "magX": -53.9,              // 地磁気(X軸) μT <テスラ>
  "magY": -5.2,               // 地磁気(Y軸) μT
  "magZ": 102.7,              // 地磁気(Z軸) μT
  "time": "2015-11-19T10:29:20.529+0900" // 計測日時(BX1で付与)
}

また、AWS IoTを通過すると、下記のように state 等、AWS IoTの属性が付与されます

{
  "state": {
    "reported": {
      "deviceId": "5c313ec027e1",
      "humidity": 40.7,
      "temperature": 28.6,
      "objectTemp": 23.8,
      "ambientTemp": 28.4,
      "gyroX": -1.4,
      "gyroY": 4,
      "gyroZ": 0.2,
      "pressure": 1015.6,
      "accelX": 0.1,
      "accelY": 0.3,
      "accelZ": 3.8,
      "magX": -53.9,
      "magY": -5.2,
      "magZ": 102.7,
      "time": "2015-11-19T10:29:20.529+0900"
    }
  }
}

付録2: BX1へシリアルコンソールでログインする

BX1 は給電用USB ケーブルが、シリアルコンソールを兼任しています

FTDIのシリアルポートドライバがインストール済みのWindows / Mac OS Xや、Linuxならば追加ドライバ不要でアクセス可能です

  • ID: root
  • Password: 0BSI0T (ゼロ ビー エス アイ ゼロ ティー)

e.g.) screen コマンドによるアクセス

screen /dev/ttyUSB0 115200

付録3: 本ハンズオンで使用するBX1の設定について

本ハンズオンで配りましたBX1は、ハンズオンをスムーズにすすめるため、標準構成から下記の変更を行っております

  1. BX1 Firmware バージョン
  2. 管理者アカウント作成
  3. Wi-Fi AP設定
  4. SSH server設定

BX1 Firmware バージョン

月内リリース予定の “1.0.6” のβを適用しています

これはBX1がAWS IoTに対応するための最新バージョンをご利用いただくための措置です

管理者アカウント

  • 標準: WebUIに初回アクセスの際、設定をします
  • 今回: webuiadm ユーザ作成済

Wi-Fi AP設定

  • 標準: SSID = iotfamily_MACADDRESS, Password = openblocks
  • 今回: SSID = _HOSTID_1121handson, Password = HOSTID (+ Wi-Fiチャネル 混線回避のため個別設定済)

SSH server設定

  • 標準: SSHアクセス不可
  • 今回: 〃可
  • Address: 192.168.254.254:22
  • ID: root
  • Password: 0BSI0T (ゼロ ビー エス アイ ゼロ ティー)

データ送信確認

BX1からデータが正常に送信されているかを確認します。

AWSマネージメントコンソールから”DynamoDB”をクリックします。左のメニューから”Tables”をクリックし、リストからテーブル名”IoTHandsonRawData”をクリックします。

_images/awsiot-show-dynamodb-1.png

画面右から”Items”タブをクリックし、テーブルにセンサーから受信したデータが保存されていることを確認します。

_images/awsiot-show-dynamodb-2.png

ハンズオン内容

IoTに必要な要素を一挙に学べる2時間。 ぷらっとホーム Openblocks BX1を使ってセンサーデータを収集し、SORACOMのモバイル通信を経由してAWSクラウドにデータをあげ、AWSのサービスを使ってデータ処理を学ぶことができます。 AWSサービスでは、新しいサービスであるAWS IoTのハンズオンも含まれております。


_images/architecture.png

ハンズオン手順

  1. SORACOM Air設定
  2. AWS IoT基本設定
  3. BX1設定
  4. データ送信確認