MENU

Soracom

Users

IBM Watson IoT Platform と接続する

はじめに

当ガイドでは、SORACOM Beam(以降、Beam) を使用して IBM Watson IoT Platform(以降、Watson IoT Platform) にデータを送信します。

連携

機密性の高い情報を IoT デバイスから送受信するには暗号化処理が必要となります。その一方で、IoT デバイスの限られたリソースでは暗号化処理が難しい場合もあります。そのような場合に暗号化処理を SORACOM プラットフォームのリソースにオフロードできます。

また、Beam を使用した IoT デバイスからのデータアップロードの場合は、3G/LTE 閉域網を通じて Beam のエンドポイントまでデータが送信されますので、平文のままであってもデータは Beam まで安全に届けられます。Beam から先のサーバーは Beam によって暗号化された通信経路によって安全にデータを送信できます。 Watson IoT Platform は MQTTS に対応しているため、上記のようにセキュアに Watson IoT Platform に接続することが可能になります。

当ガイドでは、MQTT クライアントとして使用するデバイスは USB ドングルなどを使用して、SORACOM Air の SIM による通信を行っていることを前提としています。

前提

  • SORACOM Air の SIM が使用できること
  • USB ドングル(USB データ通信端末)など SORACOM Air の SIM を使用して通信できるデバイスがあること(テザリングでも可です。)
  • Bluemix のアカウントがあること

ステップ 1:Watson IoT Platform の準備をする

Watson IoT Platform の作成

Bluemixにログインします。

カタログから Internet of Things Platform を選択します。適切なプランを選択して「作成」をクリックします。

Internet of Things Platform

以下の画面が表示されるので、「起動」をクリックします。

Internet of Things Platform

Waton IoT Platform のコンソールが表示されます。

デバイスの追加

次にデバイスを追加します。 ここでは以下のようなデバイスを追加します。

  • デバイス・タイプ: deviceType
  • デバイス ID: device01

左のメニューから「デバイス」を選択します。

Internet of Things Platform

「デバイスの追加」からデバイス・タイプとデバイス ID を入力します。

Internet of Things Platform

あとはデフォルト(ブランク)で「次へ」とすすみ「完了」をクリックしてデバイスを作成します。このあと Beam で設定しますので、以下の情報は保存してください。

Internet of Things Platform

ステップ 2:SORACOM Beam を設定する

Beam の設定

最初に SIM グループを作成します。 左のメニューから「SIM グループ」を選択します。

beamの設定

「追加」からグループを作成してください。 ここではグループ名 beam - watson iot platform として作成します。

次に作成したグループを選択します。 「SORACOM Beam 設定」のタブを開き「MQTT エントリポイント」を追加します。

beamの設定

以下の画面が表示されます。種別、ホスト名を入力してください。 <組織ID> はデバイス追加時に表示されたものを指定してください。

  • 種別: Watson IoT
  • ホスト名: <組織 ID>.messaging.internetofthings.ibmcloud.com

次に認証情報を追加します。 認証情報のとなりの「+」をクリックします。

beamの設定

認証情報ではデバイス追加時に指定したものを指定してください。 入力後、「登録」をクリックします。

デバイス ID に IMEI、IMSI を設定できます。 これによって、デバイスに個別にデバイス ID を設定することなくデバイスを識別できるようになります。 詳細は IMSI、IMEI をデバイス ID として設定する をご確認ください。

beamの設定

入力内容を確認して「保存」をクリックしてください。 以上で、Beam の設定は完了です。

beamの設定

次に、使用する IoT SIM を作成した SIM グループに所属させます。 対象の IoT SIM を選択して「操作」->「所属グループ変更」を選択します。

beamの設定

作成したグループを選択します。

beamの設定

以上で Beam の設定は完了です。

ステップ 3:Beam を使用して Watson IoT Platform にデータを送信する

Beam を使用してデータを送信します。 送信されたデータは Watson IoT Platform のコンソールから確認します。

Watson IoT Platform のコンソールからデバイスを選択して「最近のイベント」を表示した状態にします。

beamの設定

IoT SIM を使用したデバイスの Terminal から以下のコマンドを実行します。

mosquitto_pub -h beam.soracom.io -t iot-2/evt/test/fmt/json  -m '{"name1":"soracom-beam-test!","name2":100}'

ここでは、オープンソースとして提供されている MQTT メッセージブローカーである mosquitto のコマンドである mosquitto_pub を使用して MQTT Publish しています。 mosquitto_pub がインストールされていない場合は、 サイトからダウンロードおよびインストールしてください。

以下のように Watson IoT Platform のコンソールからメッセージが表示できることを確認してください。 beamの設定

Beam を使用しない場合、Watson IoT Platform に同様にデータを送信するためには以下のコマンドを実行することになります。

mosquitto_pub -i 'd:xxxxxx:deviceType:device01'  -h xxxxxx.messaging.internetofthings.ibmcloud.com -u 'use-token-auth' -P 'xxxxxxxxxxxx' -t iot-2/evt/test/fmt/json -m '{"d":{"name1":"soracom-beam-test!","name2":100}}'

Beam を使用した場合は、ユーザー ID(-u)、パスワード(-P)、クライアント ID(-i)がデバイスから送信されていないことがわかります。ソラコムがこれらの情報を付与して Watson IoT Platform にデータを転送しています。 このため、デバイスにクラウドの認証情報をもつ必要がありません。 また、デバイスからは MQTT で送信していますが、8883 ポートを使用し、MQTT から MQTTS への変換も行っています。

Beam を使用するメリットを以下のとおりです。

  • 暗号化処理、プロトコル変換といった処理を SORACOM Beam にオフロードできます。IoT デバイスの限られたリソースでは暗号化処理が難しい場合でも、安全にデータを送信できます。
  • デバイスにユーザー ID、パスワード、クライアント ID を保持する必要がありません。
    • このためユーザー ID、パスワードに変更があった場合でも、Beam の設定を変更するのみで対象の全てのデバイスを更新する必要はありません。
  • 接続先を動的に変更できます。Beam より先の接続先は、コンソールもしくは API キーにより動的に変更できます。たとえば、接続先のクラウドサービスを変更する場合でも、接続先、ユーザー ID、パスワードの変更のためにデバイス側の設定を更新する必要はありません。

IMSI、IMEI をデバイス ID として設定する

認証情報の設定では、以下のようにデバイス ID にプレースホルダーを使用できます。

beamの設定

  • #{imsi} - IMSI に置き換えて送信します。
  • #{imei} - IMEI に置き換えて送信します。

上記を設定することで、実際には送信時に使用された IMSI,IMEI に置き換えて Watson IoT Platform に送信します。

デバイス ID に IMSI,IMEI を使用することで、大量のデバイスがある場合でも各デバイスにデバイス ID を設定する必要がありません。 同じコマンドを使用してデータを送信しても、IMSI もしくは IMEI が個別に付与されるため Watson IoT Platform ではそれぞれのデバイスを識別可能となります。

Watson IoT Platform へのデバイス登録時に IMSI もしくは IMEI を付与したデバイス ID で登録することになります。