MENU

Soracom

Users

Google IoT Core と接続する

はじめに

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

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

ステップ 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 を設定する

グループを作成する

SIM を登録した際にグループを作成していない場合には、左上の [MENU] → [SIM グループ] を開き、+追加 から新規のグループを追加します。 SIM 一覧画面から SIM を選択し、操作から所属グループ変更で、作成したグループを紐付けます。

グループで Beam を設定する

作成したグループを選択し、グループ詳細画面から[SORACOM Beam 設定]タブを開き、[+] ボタンから「MQTT エントリポイント」を選択します。

以下を入力します。

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

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

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

登録を押して、認証情報が選択されていることを確認して、保存を押します。

ステップ 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!'
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/#"
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