SORACOM Users

Getting Started

SORACOM Beam を使用して Google IoT Core と MQTT 接続する

はじめに

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

当ガイドの前提は以下のとおりです。

SORACOM Beam とは

Beam は SORACOM Air の SIM を使用したデバイスからのデータ・アップロード時にクラウド側でデータ処理を行うためのプロキシーサービスです。

Beam概要

Beam を使用することで、以下が可能となります。

ステップ 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 エントリポイント」を選択します。

以下を入力します。

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

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

ステップ 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

Getting Started

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal/Direct/Door

SORACOM Endorse

SORACOM Funnel

SORACOM Funk

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

SORACOM Krypton

SORACOM Lagoon

SORACOM Mosaic

SORACOM Napter

SORACOM LTE-M Button

GPS マルチユニット SORACOM Edition

IoT 体験キット

Device

サービス機能詳細

Developer Tools

Design Patterns

pagetop