IoT Core デバイス レジストリを作成する
このページでは、Google Cloud コンソールを使用して Cloud IoT Core デバイス レジストリを作成し、デバイスを登録する方法について説明します。サンプルを実行し、端末に接続して端末のテレメトリー イベントを公開する方法についても学びます。
このタスクを Cloud Shell エディタで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud IoT and Cloud Pub/Sub API を有効にします。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud IoT and Cloud Pub/Sub API を有効にします。
ローカル環境を設定し、前提条件をインストールする
gcloud CLI をインストールして初期化します。Cloud IoT Core を使用するには、gcloud CLI のバージョン 173.0.0 以降が必要です。
Node.js 開発環境を設定します。
別の方法として、Google Cloud Shell を使用することもできます。gcloud CLI と Node.js には、あらかじめインストールされています。
端末レジストリの作成
- Google Cloud コンソールで、Google Cloud IoT Core ページに移動します。
[レジストリを作成する] をクリックします。
[レジストリ ID] 用の「
my-registry
」を入力します。米国にいる場合は、[リージョン] で us-central1 を選択します。米国以外の場合、希望するリージョンを選択します。
[プロトコル] には、[MQTT] を選択します。
[デフォルトのテレメトリーのトピック] プルダウン リストで、[トピックの作成] を選択します。
[トピックを作成する] ダイアログの [名前] フィールドに「
my-device-events
」を入力します。[トピックの作成] ダイアログで、[作成] をクリックします。
[デバイスの状態のトピック] と [証明書の値] は省略可であるため、空白のままにします。
Cloud IoT Core ページで、[作成] をクリックします。
デバイス テレメトリー イベントをパブリッシュするために、Cloud Pub/Sub トピックでデバイス レジストリを作成しました。
認証情報を作成する
デバイスの鍵ペアを生成する
ターミナル ウィンドウを開き、次の複数行のコマンドを実行して、RS256 鍵を作成します。
openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem -nodes \ -out rsa_cert.pem -subj "/CN=unused"
ルート認証情報をダウンロードする
Google の CA ルート証明書をダウンロードし、ダウンロードした場所をメモします。以下の Node.js コマンドを実行するときにファイルパスが必要です。
次のセクションでは、レジストリにデバイスを追加し、公開鍵をデバイスに関連付けます。
レジストリに端末を追加する
[レジストリ] ページで [
my-registry
] を選択します。[デバイス] タブを選択し、[デバイスを作成する] をクリックします。
[デバイス ID] に、「
my-device
」と入力します。[デバイスの通信] には、[許可] を選択します。
公開鍵情報を [認証] フィールドに追加します。
rsa_cert.pem
の内容をクリップボードにコピーします。-----BEGIN CERTIFICATE-----
と-----END CERTIFICATE-----
という行を必ず含めてください。- [公開鍵の形式] には、[RS256_X509] を選択します。
- 公開鍵を [公開鍵の値] ボックスに貼り付けます。
- [追加] をクリックして、RS256_X509 鍵をデバイスに関連付けます。
[デバイス メタデータ] フィールドは省略可です。空白のままにします。
[作成] をクリックします。
レジストリに端末が追加されました。デバイスの [デバイスの詳細] ページに RS256_X509 鍵が表示されます。
Node.js サンプルを実行して仮想端末を接続し、テレメトリーを表示する
GitHub から Cloud IoT Core Node.js サンプルを取得します。Cloud IoT Core のサンプルは
iot
ディレクトリにあります。git clone https://github.com/googleapis/nodejs-iot.git
クローン作成されたリポジトリで、
iot/mqtt_example
ディレクトリに移動します。残りのステップをこのディレクトリで行います。cd nodejs-iot/samples/mqtt_example
前のセクションで作成した秘密鍵(
rsa_private.pem
)を現在のディレクトリ(samples/mqtt_example
)にコピーします。cp ../../../rsa_private.pem .
Node.js 依存関係をインストールします。
npm install
次のコマンドを実行し、レジストリの Pub/Sub トピックにサブスクリプションを作成します。このとき、ご自分のプロジェクト ID を使用してください。
gcloud pubsub subscriptions create \ projects/PROJECT_ID/subscriptions/my-subscription \ --topic=projects/PROJECT_ID/topics/my-device-events
次のコマンドを実行し、MQTT ブリッジを使用して仮想端末を Cloud IoT Core に接続します。このとき、ご自分のプロジェクト ID を使用してください。
serverCertFile
が Google のルート証明書をダウンロードした場所に設定されていることを確認します。node cloudiot_mqtt_example_nodejs.js \ mqttDeviceDemo \ --projectId=PROJECT_ID \ --cloudRegion=REGION \ --registryId=my-registry \ --deviceId=my-device \ --privateKeyFile=rsa_private.pem \ --serverCertFile=roots.pem \ --numMessages=25 \ --algorithm=RS256
出力には、サンプルのデバイスがテレメトリー トピックにメッセージをパブリッシュしていることが示されます。25 個のメッセージが公開されます。
次のコマンドを実行して、テレメトリー トピックにパブリッシュされたメッセージを読み取ります。
gcloud pubsub subscriptions pull --auto-ack \ projects/PROJECT_ID/subscriptions/my-subscription
追加メッセージを表示するには、
subscriptions pull
コマンドを繰り返します。
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
- Google Cloud コンソールで、Google Cloud Pub/Sub の [トピック] ページに移動します。
リスト内のトピックの横にあるチェックボックスをオンにし、ページ上部の [削除] をクリックします。
- Google Cloud コンソールで、[レジストリ] ページに移動します。
リスト内のレジストリの名前をクリックします。
リスト内のデバイスの名前をクリックします。
[デバイスの詳細] ページの上部にある [削除] をクリックします。削除を確認するために、デバイスの名前を入力します。
レジストリを削除するには、まずレジストリ内のすべてのデバイスを削除する必要があります。このレジストリに他のデバイスを追加した場合は、それらのデバイスも削除してください。
- Google Cloud コンソールで、[レジストリ] ページに移動します。
リスト内のレジストリの名前をクリックします。
[レジストリの詳細] ページの上部にある [削除] をクリックします。