SORACOM Beam を使用して、MQTT プロトコルで Google IoT Core 互換サービス (ClearBlade IoT Core) と接続します。
操作を始める前に準備が必要です (クリックして確認してください)
(1) SORACOM のアカウントを作成して IoT SIM を申し込む / デバイスを購入する
MQTT を使用できるデバイスと、そのデバイスで利用できる IoT SIM を用意します。
例:
- Raspberry Pi + AK-020
- Raspberry Pi + Soracom Onyx - LTE™ USB ドングル
- Wio LTE
SORACOM アカウントの作成方法、IoT SIM の申し込み方法、およびデバイスの購入方法について詳しくは、SORACOM の利用を始める を参照してください。
(2) ClearBlade アカウントと ClearBlade のプロジェクトを用意する
プロジェクト ID を確認してください。これ以降、${project_id} (例: sample-project
) と表記します。
ステップ 1: ClearBlade IoT Core を準備する
Registry を作成する
- すでに作成済みの Registry も利用できます。
- ClearBlade IoT Core の操作について詳しくは、Creating registries and devices を参照してください。
ClearBlade Cloud コンソール にアクセスして、 → の順にクリックします。
「Create a registry」画面が表示されます。
以下の項目を設定します。
項目 説明 → 任意の Registry ID を入力します。これ以降、${registry_id} (例: sample
) と表記します。(*1)→ リージョンを選択します。これ以降、${region} (例: asia-east1
) と表記します。(*1)→ Google Cloud Pub/Sub のトピックを選択します。Topic を作成するには、Google Cloud Pub/Sub のトピック画面 を利用します。 - (*1) 作成後は変更できません。
をクリックします。
以下の項目を設定します。
項目 説明 → チェックを入れます。 → チェックを外します。 をクリックします。
秘密鍵 / 公開鍵のペアを作成する
ClearBlade IoT Core にデバイスを作成するために、秘密鍵 / 公開鍵のペアを作成します。Beam では、鍵の暗号署名アルゴリズムとして、RS256 と ES256 に対応しています。以下は、openssl コマンドを利用して RS256 の秘密鍵 / 公開鍵を作成する例です。なお、この後の手順で、公開鍵 (例: rsa_public.pem
) は ClearBlade IoT Core にアップロードし、秘密鍵 (例: rsa_private.pem
) は、SORACOM にアップロードします。
秘密鍵を作成します。
$ openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
....................................................................................................................+++++ .............................................................+++++
秘密鍵 (例:
rsa_prvate.pem
) が作成されます。公開鍵を作成します。
$ openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
writing RSA key
秘密鍵に対応する公開鍵 (例:
rsa_public.pem
) が作成されます。
公開鍵を ClearBlade IoT Core にアップロードしてデバイスを作成する
ClearBlade Cloud コンソール にアクセスして、デバイスを作成する Registry をクリックします。
→ の順にクリックします。
に任意のデバイス ID を入力します。
デバイス ID は、これ以降、${device_id} (例:
beam-device-01
) と表記します。をクリックします。
の以下の項目を設定します。
項目 説明 「Enter manually」を選択します。 秘密鍵 / 公開鍵のペアを作成する で作成した公開鍵の暗号署名アルゴリズム (例: RS256) を選択します。 秘密鍵 / 公開鍵のペアを作成する で作成した公開鍵 (例: rsa_public.pem
) の内容を貼り付けます。をクリックします。
ステップ 2: SORACOM Beam をセットアップする
Beam の MQTT エントリポイントを設定します。
認証情報ストアに Google Cloud IoT Core 認証情報を登録する
Beam から ClearBlade IoT Core に作成したデバイスにアクセスするために、秘密鍵 / 公開鍵のペアを作成する で作成した秘密鍵を、SORACOM ユーザーコンソールの認証情報ストアに登録します。認証情報ストアの「認証情報を登録」画面の表示方法については、認証情報を登録する を参照してください。
認証情報は、以下のように登録します。
項目 | 説明 |
---|---|
認証情報を識別するために任意の名前を入力します。例: Google-Cloud-IoT-Core-credential 。 | |
「Google Cloud IoT Core 認証情報」を選択します。 | |
${project_id} (例: sample-project ) を入力します。 | |
${region} (例: asia-east1 ) を入力します。 | |
${registry_id} (例: sample ) を入力します。 | |
${device_id} (例: beam-device-01 ) を入力します。 | |
秘密鍵 / 公開鍵のペアを作成する で作成した秘密鍵 / 公開鍵の暗号署名アルゴリズム (例: RS256) を選択します。 | |
秘密鍵 / 公開鍵のペアを作成する で作成した秘密鍵 (例: rsa_private.pem ) の内容を貼り付けます。 |
Beam の MQTT エントリポイントを設定する
Beam の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
→ の順にクリックします。
以下の項目を設定します。
項目 説明 MQTT エントリポイントを識別するために任意の文字列を入力します。 スイッチ クリックして「有効」にします。 → 「Google Cloud IoT Core」を選択します。 → 転送先の FQDN (Fully Qualified Domain Name) を入力します。例: asia-east1-mqtt.clearblade.com
。ClearBlade IoT Core の MQTT のホスト名については、Retargeting devices を参照してください。→ 転送先のポート番号を入力します。例: 8883
。認証情報ストアに Google Cloud IoT Core 認証情報を登録する で登録した Google Cloud IoT Core 認証情報を選択します。 オフにします。 プラットフォームバージョン 201912
を選択します。詳しくは、プラットフォームバージョン201509
と201912
の違い を参照してください。をクリックします。
IoT SIM の Beam の設定が完了しました。
ステップ 3: Beam を使用して ClearBlade IoT Core にデータを送信する
ここでは、オープンソースとして提供されている MQTT メッセージブローカーである mosquitto-clients の mosquitto_pub
を使用して Publish します。
mosquitto-clients のインストール
mosquitto-clients は、サイト からダウンロードおよびインストールしてください。
なお、Raspberry Pi の場合は、以下のコマンドでインストールできます。
$ sudo apt install mosquitto-clients
上記 SIM グループに所属する IoT SIM を利用するデバイスで、以下のコマンドを実行します。
デバイス ID が
beam-device-01
の場合の例:$ mosquitto_pub -d -h beam.soracom.io -t /devices/beam-device-01/events -m "Hello, World"
Client (null) sending CONNECT Client (null) received CONNACK (0) Client (null) sending PUBLISH (d0, q0, r0, m1, '/devices/beam-device-01/events', ... (12 bytes)) Client (null) sending DISCONNECT
データが Beam に送信され、ClearBlade IoT Core に転送されます。次に、データが送信されていることを確認します。
ClearBlade Cloud コンソール にアクセスして、Registry の Telemetry Pub/Sub Topics をクリックします。
Google Cloud Pub/Sub のトピックが表示されます。
サブスクリプションをクリックします。
→ の順にクリックします。
送信したデータが表示されます。
ステップ 4: ClearBlade IoT Core からのデータをデバイスで受信する
上記 SIM グループに所属する IoT SIM を利用するデバイスで、以下のコマンドを実行します。
デバイス ID が
beam-device-01
の場合の例:$ mosquitto_sub -d -h beam.soracom.io -t /devices/beam-device-01/commands/#
Client (null) sending CONNECT Client (null) received CONNACK (0) Client (null) sending SUBSCRIBE (Mid: 1, Topic: /devices/beam-device-01/commands/#, QoS: 0, Options: 0x00) Client (null) received SUBACK Subscribed (mid: 1): 0
ClearBlade Cloud コンソール にアクセスして、デバイスを作成した Registry をクリックします。
→ データを送信するデバイス (手順 1 で指定したデバイス ID) の順にクリックします。
→ の順にクリックします。
で「Text」を選択し、 に「Hello!」を入力して、 をクリックします。
デバイスでメッセージが受信されます。
Client (null) received PUBLISH (d0, q0, r0, m0, '/devices/beam-device-01/commands', ... (6 bytes)) Hello!
デバイスでは、メッセージを受信していないときに以下のように繰り返し表示されます。
Client (null) sending PINGREQ
Client (null) received PINGRESP
Client (null) sending PINGREQ
Client (null) received PINGRESP
: