Soracom

Users

ドキュメント

Google IoT Core と接続する

はじめに

このドキュメントでは、SORACOM Beam (以下、Beam) を使用して、Google IoT Core にデータを送信します。当ガイドの前提は以下のとおりです。

  • SORACOM のアカウントを作成済みで、SORACOM IoT SIM をお持ちであること
  • MQTT を使用できるデバイス (Raspberry Pi + AK-020 / Wio LTE など) をお持ちであること
  • Google Cloud アカウントをお持ちで、作成済みのプロジェクトがあること

ステップ 1: Google IoT Core を準備する

レジストリ を作成する

Google Cloud Console から、IoT Core を開き、"レジストリを作成" メニューより作成します。(既に作成済みのものがある場合には、そちらを利用ください。) この時、Cloud Pub/Sub を設定し、MQTT プロトコルを選択するようにします。

公開鍵・秘密鍵のペアを作成する

Google IoT Core 側に公開鍵、SORACOM 側に秘密鍵を配置して接続するため、鍵ペアを作成します。 SORACOM Beam では RS256, ES256 に対応していますがここでは RS256 での手順を紹介します。 以下のような openssl のコマンドで鍵ペアを作成します。

openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem

公開鍵を登録してデバイスを作成する

Google Cloud Console の IoT Core のページより [デバイス] タブ > [+ デバイスを作成] で作成メニューを開きます。

証明書タイプには RS256 を選択し、先ほど作成した rsa_public.pem の内容を貼り付け、[作成] をクリックします。

作成したデバイスのデバイス ID およびレジストリ名は SORACOM Beam に設定するので控えておきます。

ステップ 2: SORACOM Beam を有効にして MQTT エントリポイントを設定する

Beam の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループ画面で [SORACOM Beam 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  2. [+設定を追加する][MQTT エントリポイント] の順にクリックします。

  3. 以下を入力します。

    • 設定名 (任意の文字列)
    • 種別から Google IoT を選択
    • IMSI 付与 は OFF
    • 認証情報を右の+を押す

    認証情報では、以下を入力します。

    • 認証情報 ID (任意文字列) を入力
    • Project ID は Google Cloud Console より 確認 します。
    • Region は asia-east1 など、レジストリの Region を記入します。
    • Registry ID, Device ID はデバイス作成時に控えておいた ID を記入します。
    • Algorithm には RS256 を選択し、先ほど作成した rsa_private.pem の内容を貼り付けます。

  4. [登録] をクリックして、認証情報が選択されていることを確認します。

  5. [保存] をクリックします。

  6. IoT SIM が所属するグループを切り替えます。

    IoT SIM の Beam の設定が完了しました。

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

デバイスの準備

当ガイドでは、Mosquitto のクライアントを利用します。Raspbian であれば、下記コマンドでインストール可能です。

sudo apt-get install mosquitto-clients

データの送信確認の準備

Google IoT Core の[デバイスを編集]にて Stackdriver Logging を デバッグ とすることで Publish された時間や、送信に失敗したときのエラー理由がわかります。メッセージ内容は Pub/Sub のトピックにて [メッセージを表示] より確認できます。

デバイスからデータを送信

デバイスからクラウドへデータを送信します。

デバイスからのデータは、/devices/<デバイスID>/events/ というトピックに Publish する必要があります。以下が送信の例です。

pi@raspberrypi:~ $ deviceId=soracom01
pi@raspberrypi:~ $ mosquitto_pub -d -h beam.soracom.io -q 1 -t "/devices/${deviceId}/events" -m "Hello from SORACOM Beam!" -V mqttv311
Client mosqpub|1025-raspberryp sending CONNECT
Client mosqpub|1025-raspberryp received CONNACK (0)
Client mosqpub|1025-raspberryp sending PUBLISH (d0, q1, r0, m1, '/devices/soracom01/events', ... (24 bytes))
Client mosqpub|1025-raspberryp received PUBACK (Mid: 1)
Client mosqpub|1025-raspberryp sending DISCONNECT

ステップ 4: Google IoT Core からのデータを受信する

次に、クラウドからデバイスへデータを送信します。

クラウドからのデータは、/devices/<デバイスID>/commands/# というトピックに Subscribe する必要があります。

pi@raspberrypi:~ $ deviceId=soracom01
pi@raspberrypi:~ $ mosquitto_sub -d -h beam.soracom.io -t "/devices/${deviceId}/commands/#" -V mqttv311
Client mosqsub|2210-raspberryp sending CONNECT
Client mosqsub|2210-raspberryp received CONNACK (0)
Client mosqsub|2210-raspberryp sending SUBSCRIBE (Mid: 1, Topic: /devices/soracom01/commands/#, QoS: 0)
Client mosqsub|2210-raspberryp received SUBACK
Subscribed (mid: 1): 0

この状態で、Google Cloud Console のデバイス画面から、[コマンドを送信] をクリックし、メッセージ送信画面からデータを送信してみましょう。

デバイスの方にメッセージが届き、下記のように表示されます。

Client mosqsub|2210-raspberryp received PUBLISH (d0, q0, r0, m0, '/devices/soracom01/commands', ... (14 bytes))
hello from GCP