IoTハンズオン ~ゲートウェイ、ネットワーク、クラウドまで一挙に学べる、ハンズオン!~¶
SORACOM Air設定¶
SORACOM アカウントの作成¶
ユーザーコンソールをご利用いただくためには、まずSORACOM アカウントを作成してください。 https://console.soracom.io/#/signup にアクセスします。
「アカウント作成」画面が表示されますのでメールアドレスおよびパスワードを入力して、[アカウントを作成] ボタンをクリックします。

複数人で管理を行う場合は、事前にメーリングリストのアドレスを取得するなど、共有のメールアドレスをご利用ください。
下記の画面が表示されるので、メールを確認してください。

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

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

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

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

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

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

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

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

Air SIM を登録した直後の状態は「準備完了 (Ready)」と表示され、通信可能な状態になっています。初めて通信を行ったり、コンソールもしくは API で使用開始 (Activate) 処理を行うことで、状態は「使用中 (Active)」に変わります。 出荷前など、まだ通信を行いたくない場合は、コンソールもしくは API で休止 (Deactivate) 処理を行ってください。これにより「休止中 (Inactive) 」の状態となり通信は行われません。
端末の設定¶
ご利用になられる端末 (スマートフォンや IoT デバイス) に Air SIM を挿入してください。その後、下記のパラメータで通信設定を行ってください。
- APN: soracom.io
- ユーザ名: sora
- パスワード: sora
設定後、実際にデータ通信可能かどうか確認してください。通信できていれば、初期設定は完了です。これで、インターネットに接続できます。おめでとうございます!
AWS IoT基本設定¶
デバイスの作成¶
AWSマネージメントコンソールへログインし、画面右上のメニューから東京リージョンを選択します。 サービス一覧から”AWS IoT”をクリックします。

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

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

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

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

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

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

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

ポリシー作成¶
デバイスに対して、AWS IoTの各種操作を許可するためのポリシーを作成します。メニューの”Create a policy”をクリックします。フォームにそれぞれ以下のパラメータを入力し、[Create]をクリックします。
項目 | 値 |
---|---|
Name | awsiot-handson-policy |
Action | iot:* |
Resource |
|

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

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

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

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

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

DynamoDBのテーブル作成(CloudFormation)¶
ハンズオンで利用するDynamoDBテーブルを作成を自動化するために、CloudFormationのスタックを作成します。
マネージメントコンソールのサービス一覧から”Cloud Formation”をクリックします。

“Choose a template”から”Specify an Amazon S3 template URL”にチェックを入れ、以下のパスを入力し、[Next]をクリックします。
https://s3-ap-northeast-1.amazonaws.com/awsiot-handson-jp/dynamodb.template

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

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

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

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


ルール作成¶
到着したセンサーデータをDynamoDBにストアするように設定します。
AWS IoTのサービス画面を開き、”Create a resource”をクリックし、”Create a rule”をクリックします。”Create a rule”の画面で以下の設定値を入力します。
項目 | 設定値 |
---|---|
Name | IoTHandsonRule |
Description | 任意 |
Attribute | *(アスタリスク) |
Topic Filter | handson/device01 |
Condition | 入力しない |

画面をスクロールし、”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 |

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

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

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

リソースの一覧に作成したルールが作成されたことを確認します。
OpenBlocks IoT BX1 設定¶
本章ではOpenBlocks IoT BX1 (以下 BX1) を使用し、センサーデバイス “CC2541” のデータを “SORACOM Air” の回線で “AWS IoT” に送信するところまでの設定を行います
大まかな流れは下記のとおりです
- BX1の取り扱いを理解する (起動や停止方法)
- Web管理画面の表示とログイン
- CC2451(センサーデバイス)の登録
- BX1内部でのデータ収集の開始 / 状況の確認
- SORACOM Air(3G回線) APN設定
- AWS IoTへのデータ送信設定
BX1の取り扱い (電源ON/OFF・再起動、SIM挿入)¶
BX1は給電開始と共に電源ONとなります。USBケーブルを接続すると起動開始です
INITボタンや電源ボタンはOSのシャットダウンと再起動に利用されますので、必要時以外は押さないでください
部位の名前やSIM挿入方法については、下記を参照してください

(OpenBlocks IoT Family WEB UI セットアップガイド P7 より抜粋)
ステータスインジケータ (LEDの表示色)¶
BX1は STATUS のLEDにて状態を把握することができます
本ハンズオンにおいては、起動後は 白色、水色、青色 が望ましく、それ以外の色の場合は不具合がある可能性がありますので、チューターにご相談ください
具体的なLED色と状態については、下記を参照してください

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 となります)

WebUIにログインする¶
WebUIは下記IDとパスワードでログインできます
- ID: webuiadm
- Password: 0BSI0T (ゼロ ビー エス アイ ゼロ ティー)
ログインに成功すると、下記画面が表示されます

CC2541をデバイスとして登録し、動作の確認をする¶
CC2451を検出して使用できるようにする¶
- WebUIから [サービス] - [Bluetooth関連] を表示
- Bluetooth LEデバイス検出 の [検出] をクリック
- 一覧の中から自分のデバイスを探し 使用設定 にチェックをして [保存]
NOTE: Bluetooth デバイス検出の方でなく、 Bluetooth LEデバイス検出 を押すようにしてください

自分のデバイスの探し方¶
Device Name = SensorTag が大量に表示される可能性があります
お配りした CC2541 にはアドレスのタグが書かれており、画面上に表示されている Device Address と一致したものが、ご自分の CC2451 となります
赤いカバーをはがすと、下記のようにアドレスが記載されています (タグにはコロン文字が記載されていません)

ローカルへのデータ収集設定¶
AWS IoTへの送信の前に、まず CC2541 からのデータ収集ができているか確認をします
BX1のデータ収集機能を開始する¶
- WebUIから [サービス] - [基本] を表示
- データ収集 における データ収集 ならびに PD Handler をそれぞれ 使用する にして [保存]
NOTE: “PD Handler” は “データ収集” を <使用する> にすると表示されます

注意: データ収集を開始すると、新たにデバイス登録をすることができなくなります。デバイス登録をする場合は、まず、データ収集を行わないように設定を変更してください
データ収集状況の確認 (デバッグ)¶
WebUIから [サービス] - [収集ログ] にて、動作確認が可能です
ログ選択はそれぞれ下記のとおりです
- pd-handler-stdout.log : CC2541 <-> BX1 間の送受信状況
- pd-emitter.log : BX1 <-> 送信先(localやAWS IoT等) 間の送受信状況
注意: ログは自動的な更新をサポートしておりません。リロードの後、プルダウン選択をするようにしてください
下記画面は CC2541 からのデータ読み出しが成功している場合のログ画面です。JSONが表示されているのが見てわかります

トラブルシュート: うまく収集がされていない場合¶
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設定¶
- WebUIから [ネットワーク] - [基本] を表示
- ページ下部の サービスネットワーク(モバイル回線) を 使用する (クリックでAPN設定が展開します)
- APN / ユーザ名 / パスワード をそれぞれ下記の通り設定し [保存]
- APN: soracom.io
- ユーザ名: sora
- パスワード: sora

再起動¶
APNの設定は再起動で反映されるため、BX1を再起動します
- WebUIから [メンテナンス] - [停止・再起動] を表示
- 再起動を実施します (最後にに確認ダイアログがでるので見逃さないようにしてください)

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にアップロードします
- WebUIから [システム] - [ファイル管理] を表示
- 本画面からファイルを3つ、それぞれアップロード
すべてアップロードされると、下記のような画面となります

システム全体設定¶
- WebUIから [サービス] - [収集設定] を表示
- AWS IoT を 使用する (クリックで設定が展開します)
- 下記の通り設定します
- 送信先ホスト: <エンドポイント>を設定
- root証明書 :
/var/webui/upload_dir/VeriSign-Class_3-Public-Primary-Certification-Authority-G5.pem
NOTE: 先のファイルアップロード画面でアップロードされたファイルは BX1内の /var/webui/upload_dir/
にアップロードされるので、それ以下のパスを指定することでファイルの読み込みが可能です

保存せず、ページ下部へ移動します
デバイス毎設定¶
- dev_le_0000001 の 送信先設定 で AWSIOT にチェックを付けます (クリックで設定が展開します)
- 下記の通り設定します
- トピック名 :
handson/device01
- 証明書(AWS IoT) :
/var/webui/upload_dir/(アップロードした .pem.crtファイル)
- プライベートキー(AWS IoT) :
/var/webui/upload_dir/(アップロードした .pem.keyファイル)

デバッグとトラブルシュート¶
送信状況は データ収集状況の確認 を使用してください
また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は、ハンズオンをスムーズにすすめるため、標準構成から下記の変更を行っております
- BX1 Firmware バージョン
- 管理者アカウント作成
- Wi-Fi AP設定
- SSH server設定
管理者アカウント¶
- 標準: 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”をクリックします。

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

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

ハンズオン手順¶
- SORACOM Air設定
- AWS IoT基本設定
- BX1設定
- データ送信確認