IBM Watson IoT Platform と接続する
Beam を使用して IBM Watson IoT Platform (以下、Watson IoT Platform) にデータを送信します。
機密性の高い情報を IoT デバイスから送受信するには、暗号化処理が必要です。その一方で、IoT デバイスの限られたリソースでは暗号化処理が難しい場合もあります。そのような場合に暗号化処理を SORACOM にオフロードできます。
また、Beam を使用した IoT デバイスからのデータアップロードの場合は、通信キャリアが提供するセルラー通信 (閉域網) を通じて Beam のエントリポイントまでデータが送信されますので、平文のままであってもデータは Beam まで安全に届けられます。Beam から先のサーバーは Beam によって暗号化された通信経路によって安全にデータを送信できます。 Watson IoT Platform は MQTTS に対応しているため、上記のようにセキュアに Watson IoT Platform に接続できます。
操作を始める前に準備が必要です (クリックして確認してください)
(1) SORACOM Air for セルラーの IoT SIM が使用できること
IoT SIM の入手、および初期設定は SORACOM の利用を始める を参照してください。
(2) USB ドングル (USB データ通信端末) など SORACOM Air for セルラーの IoT SIM を使用して通信できる PC やデバイス (Raspberry Pi 等) があること
IoT SIM を利用したデバイスによるテザリングでも Beam を利用できます。
(3) 上記の PC やデバイス (Raspberry Pi 等) が MQTT クライアントとして動作できること
(4) IBM Cloud のアカウントがあること
アカウント作成手順は、IBM Cloud アカウントのセットアップ を参照してください。
準備完了ステップ 1:Watson IoT Platform の準備をする
Watson IoT Platform の作成
IBM Cloud にログインします。
カタログから Internet of Things Platform を選択します。適切なプランを選択して「作成」をクリックします。
以下の画面が表示されるので、「起動」をクリックします。
Waton IoT Platform のコンソールが表示されます。
デバイスの追加
次にデバイスを追加します。 ここでは以下のようなデバイスを追加します。
- デバイス・タイプ: deviceType
- デバイス ID: device01
左のメニューから「デバイス」を選択します。
「デバイスの追加」からデバイス・タイプとデバイス ID を入力します。
あとはデフォルト (ブランク) で「次へ」とすすみ「完了」をクリックしてデバイスを作成します。このあと Beam で設定しますので、以下の情報は保存してください。
ステップ 2: SORACOM Beam を有効にして MQTT エントリポイントを設定する
Beam の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
→ の順にクリックします。
種別、ホスト名を入力してください。
<組織ID>
はデバイス追加時に表示されたものを指定してください。- 種別: Watson IoT
- ホスト名:
<組織 ID>.messaging.internetofthings.ibmcloud.com
次に認証情報を追加します。 認証情報のとなりの「+」をクリックします。
認証情報ではデバイス追加時に指定したものを指定してください。
デバイス ID に IMEI、IMSI を設定できます。 これによって、デバイスに個別にデバイス ID を設定することなくデバイスを識別できるようになります。 詳細は IMSI、IMEI をデバイス ID として設定する をご確認ください。
をクリックします。
をクリックします。
IoT SIM の Beam の設定が完了しました。
ステップ 3:Beam を使用して Watson IoT Platform にデータを送信する
Beam を使用してデータを送信します。 送信されたデータは Watson IoT Platform のコンソールから確認します。
Watson IoT Platform のコンソールからデバイスを選択して「最近のイベント」を表示した状態にします。
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 を使用しない場合、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 にプレースホルダーを使用できます。
#{imsi}
- IMSI に置き換えて送信します。#{imei}
- IMEI に置き換えて送信します。
上記を設定することで、実際には送信時に使用された IMSI,IMEI に置き換えて Watson IoT Platform に送信します。
デバイス ID に IMSI,IMEI を使用することで、大量のデバイスがある場合でも各デバイスにデバイス ID を設定する必要がありません。 同じコマンドを使用してデータを送信しても、IMSI もしくは IMEI が個別に付与されるため Watson IoT Platform ではそれぞれのデバイスを識別可能となります。
Watson IoT Platform へのデバイス登録時に IMSI もしくは IMEI を付与したデバイス ID で登録することになります。