3. 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へのデータ送信設定

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

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

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

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

_images/bx1_1-1_bx1.png

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

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

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

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

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

_images/bx1_1-2_led.png

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

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

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

3.2.1. BX1とWi-Fiで接続する

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

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

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

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

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

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

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

_images/bx1_2-1_serial.jpg

3.2.2. WebUIを表示する

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

http://192.168.254.254:880

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

_images/bx1_2-2_webui-login.png

3.2.3. WebUIにログインする

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

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

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

_images/bx1_2-3_webui-dashboard.png

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

3.3.1. Bluetoothの使用を開始する

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

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

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

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

_images/bx1_3-2_ble-list.png

3.3.2.1. 自分のデバイスの探し方

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

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

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

_images/bx1_3-3_cc2541-tag.jpg

3.3.3. 確認

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

_images/bx1_3-4_ble-registered.png

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

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

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

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

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

_images/bx1_4-1_collector-start.png

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

3.4.2. 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

3.4.2.1. グラフの表示

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

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

_images/bx1_4-3_plot.png

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

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

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

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

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

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

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

_images/bx1_5-1_log.png

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

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

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

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

3.6. SORACOM Air

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

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

3.6.1. APN設定

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

3.6.2. 再起動

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

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

3.7. AWS IoT

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

3.7.1. 準備

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

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

その他取得しておくもの

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

決めておくこと

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

3.7.2. BX1設定

3.7.2.1. ファイルアップロード

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

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

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

_images/bx1_7-1_file-upload.png

3.7.2.2. システム全体設定

  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

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

3.7.2.3. デバイス毎設定

  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

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

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

また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

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

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

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

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

3.8. 付録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"
    }
  }
}

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

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

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

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

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

screen /dev/ttyUSB0 115200

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

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

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

3.10.1. BX1 Firmware バージョン

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

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

3.10.2. 管理者アカウント

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

3.10.3. Wi-Fi AP設定

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

3.10.4. SSH server設定

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