クイック スタート:デバイスから IoT ハブに利用統計情報を送信して Azure CLI で監視する
IoT Hub は、保管や処理のために IoT デバイスから大量のテレメトリをクラウドに取り込むことを可能にする Azure サービスです。 このコード不要クイックスタートでは、Azure CLI を使用して IoT ハブおよびシミュレートされたデバイスを作成します。 デバイス テレメトリをハブに送信し、メッセージを送信し、メソッドを呼び出し、デバイスのプロパティを更新します。 また、Azure portal を使用して、デバイス メトリックを視覚化します。 この記事では、CLI を使用して IoT Hub アプリケーションとやり取りする開発者のための基本的なワークフローを示します。
前提条件
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料でアカウントを 1 つ作成してください。
- Azure CLI。 このクイックスタートのすべてのコマンドは、ブラウザーまたは Windows Terminal などのアプリで実行されるインタラクティブ CLI シェルである Azure Cloud Shell を使用して実行できます。 Cloud Shell を使用する場合は、何もインストールする必要はありません。 CLI をローカルで使用する場合、このクイックスタートでは、Azure CLI バージョン 2.36 以降が必要です。 バージョンを確認するには、
az --version
を実行します。 インストールまたはアップグレードする必要には、「Azure CLI のインストール」をご覧ください。
Azure portal にサインインする
Azure portal にサインインします。
CLI をローカルで実行するか Cloud Shell で実行するかにかかわらず、ポータルをブラウザーで開いたままにしておきます。 後ほど、このクイックスタートで使用します。
Cloud Shell を起動する
このセクションでは、Azure Cloud Shell のインスタンスを起動します。 CLI をローカルで使用する場合は、「2 つの CLI セッションを準備する」のセクションに進んでください。
Cloud Shell を起動するには以下を行います。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。
注意
Cloud Shell を初めて使用する場合は、Cloud Shell を使用するために必要なストレージを作成するように求められます。 ストレージ アカウントと Microsoft Azure ファイル共有を作成するためのサブスクリプションを選択します。
[環境の選択] ドロップダウンで、優先する CLI 環境を選択します。 このクイックスタートでは、Bash 環境を使用します。 PowerShell 環境を使うこともできます。
注意
一部のコマンドは、Bash および PowerShell 環境では異なる構文または書式が必要です。 詳細については、「Azure CLI を正しく使用するためのヒント」を参照してください。
2 つの CLI セッションを準備する
次に、2 つの Azure CLI セッションを準備します。 Cloud Shell を使用している場合は、これらのセッションを別々の Cloud Shell タブで実行します。 ローカル CLI クライアントを使用している場合は、別々の CLI インスタンスを実行します。 次のタスクには、別々の CLI セッションを使用します。
- 最初のセッションでは、IoT ハブと通信する IoT デバイスをシミュレートします。
- 2 番目のセッションでは、最初のセッションのデバイスを監視するか、メッセージ、コマンド、およびプロパティの更新を送信します。
コマンドを実行するには、 [コピー] を選択してこのクイックスタートのコード ブロックをコピーし、シェル セッションに貼り付けて実行します。
Azure CLI を使用するには、Azure アカウントにログインする必要があります。 Azure CLI シェル セッションと IoT hub の間のすべての通信は認証および暗号化されます。 そのため、このクイックスタートでは、接続文字列などの実際のデバイスで使用する追加の認証は必要ありません。
最初の CLI セッションで、 az extension add コマンドを実行します。 このコマンドにより、Azure CLI 用の Microsoft Azure IoT 拡張機能が CLI シェルにインストールされます。 IoT Hub、IoT Edge、IoT Device Provisioning Service (DPS) 固有のコマンドが Azure CLI に追加されます。
az extension add --name azure-iot
Azure IOT 拡張機能をインストールした後は、Cloud Shell セッションで再度インストールする必要はありません。
注意
この記事では、
azure-iot
と呼ばれる、Azure IoT 拡張機能の最新バージョンを使用します。 従来のバージョンはazure-cli-iot-ext
と呼ばれます。一度にインストールできるバージョンは 1 つだけです。 コマンドaz extension list
を使用すると、現在インストールされている拡張機能を確認できます。拡張機能の従来のバージョンを削除するには、
az extension remove --name azure-cli-iot-ext
を使用します。拡張機能の新しいバージョンを追加するには、
az extension add --name azure-iot
を使用します。インストール済みの拡張機能を表示するには、
az extension list
を使用してください。2 つ目の CLI セッションを開きます。 ブラウザーで Cloud Shell を使用している場合は、[新しいセッションを開く] ボタンを使用します。 CLI をローカルで使用している場合は、2 つ目の CLI インスタンスを開きます。
IoT ハブを作成する
このセクションでは、Azure CLI を使用してリソース グループと IoT ハブを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 IoT ハブは、IoT アプリケーションとデバイスの間の双方向通信に対する中央メッセージ ハブとして機能します。
最初の CLI セッションで、az group create コマンドを実行してリソース グループを作成します。 次のコマンドは、myResourceGroup という名前のリソース グループを eastus という場所に作成します。
az group create --name MyResourceGroup --location eastus
最初の CLI セッションで、Az PowerShell module iot hub create コマンドを実行して IoT ハブを作成します。 IoT ハブの作成には数分かかります。
YourIotHubName: 以下のコマンドでは、このプレースホルダーとその前後の中かっこを実際の IoT ハブの名前に置き換えます。 IoT ハブ名は Azure でグローバルに一意である必要があります。 以降、このクイックスタートに出現しているプレースホルダーにはすべて、実際の IoT ハブの名前を使用してください。
az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
デバイスの作成と監視
このセクションでは、最初の CLI セッションでシミュレートされたデバイスを作成します。 シミュレートされたデバイスは、デバイスのテレメトリを IoT ハブ に送信します。 2 番目の CLI セッションで、イベントおよびテレメトリを監視します。
シミュレートされたデバイスを作成し開始するには以下を行います。
最初の CLI セッションで az iot hub device-identity create コマンドを実行します。 このコマンドにより、シミュレートされたデバイス ID が作成されます。
YourIotHubName: このプレースホルダーは、実際の IoT Hub に対して選んだ名前に置き換えてください。
simDevice。 このクイックスタートの残りの部分では、この名前をシミュレートされたデバイスに対して直接使用できます。 別の名前を使用することもできます。
az iot hub device-identity create -d simDevice -n {YourIoTHubName}
最初の CLI セッションで、az iot device simulate コマンドを実行します。 このコマンドにより、シミュレートされたデバイスが起動します。 デバイスは、IoT ハブにテレメトリを送信し、そこからメッセージを受信します。
YourIotHubName: このプレースホルダーは、実際の IoT Hub に対して選んだ名前に置き換えてください。
az iot device simulate -d simDevice -n {YourIoTHubName}
デバイスを監視するには以下を行います。
2 つ目の CLI セッションで、az iot hub monitor-events コマンドを実行します。 このコマンドにより、シミュレートされたデバイスが継続的に監視されます。 出力には、シミュレートされたデバイスから IoT ハブに送信されるイベントやプロパティの状態の変更などのテレメトリが表示されます。
YourIotHubName: このプレースホルダーは、実際の IoT Hub に対して選んだ名前に置き換えてください。
az iot hub monitor-events --output table -p all -n {YourIoTHubName}
2 つ目の CLI セッションでシミュレートされたデバイスを監視した後、Ctrl+C キーを押して監視を停止します。 2 番目の CLI セッションは、後の手順で使用できるように開いたままにします。
CLI を使用してメッセージを送信する
このセクションでは、シミュレートされたデバイスにメッセージを送信します。
最初の CLI セッションで、シミュレートされたデバイスがまだ実行されていることを確認します。 デバイスが停止している場合は、次のコマンドを実行して再起動します。
YourIotHubName: このプレースホルダーは、実際の IoT Hub に対して選んだ名前に置き換えてください。
az iot device simulate -d simDevice -n {YourIoTHubName}
2 つ目の CLI セッションで、az iot device c2d-message send コマンドを実行します。 このコマンドにより、cloud-to-device メッセージが IoT ハブからシミュレートされたデバイスに送信されます。 メッセージには、文字列と 2 つのキー/値ペアが含まれます。
YourIotHubName: このプレースホルダーは、実際の IoT Hub に対して選んだ名前に置き換えてください。
az iot device c2d-message send -d simDevice --data "Hello World" --props "key0=value0;key1=value1" -n {YourIoTHubName}
必要に応じて、Azure portal を使用して、cloud-to-device メッセージを送信できます。 これを行うには、IoT Hub の 概要 ページに移動し、IoT デバイス を選択して、シミュレートされたデバイスを選択し、デバイスへのメッセージ を選択します。
最初の CLI セッションで、シミュレートされたデバイスがメッセージを受信したことを確認します。
CLI を使用してデバイス メソッドを呼び出す
このセクションでは、シミュレートされたデバイスでダイレクト メソッドを呼び出します。
以前行ったように、最初の CLI セッションのシミュレートされたデバイスが実行されていることを確認します。 そうでない場合は、再起動します。
2 つ目の CLI セッションで、az iot hub invoke-device-method コマンドを実行します。 この例では、デバイスの既存のメソッドはありません。 このコマンドでは、シミュレートされたデバイスで、サンプルのメソッド名を呼び出し、ペイロードを返します。
YourIotHubName: このプレースホルダーは、実際の IoT Hub に対して選んだ名前に置き換えてください。
az iot hub invoke-device-method --mn MySampleMethod -d simDevice -n {YourIoTHubName}
最初の CLI セッションで、出力にメソッド呼び出しが表示されているのを確認します。
CLI を使用してデバイスのプロパティを更新する
このセクションでは、プロパティ値を設定して、シミュレートされたデバイスの状態を更新します。
以前行ったように、最初の CLI セッションのシミュレートされたデバイスが実行されていることを確認します。 そうでない場合は、再起動します。
2 つ目の CLI セッションで、az iot hub device-twin update コマンドを実行します。 このコマンドにより、シミュレートされたデバイスに対応する IoT ハブ デバイス ツイン上で、プロパティが目的の状態に更新されます。 この場合、コマンドではサンプルの温度条件プロパティを設定します。
重要
CLI シェルで PowerShell を使用している場合は、次に示す PowerShell バージョンのコマンドを使用します。 PowerShell では、JSON ペイロード内の文字をエスケープする必要があります。
YourIotHubName: このプレースホルダーは、実際の IoT Hub に対して選んだ名前に置き換えてください。
az iot hub device-twin update -d simDevice --desired '{"conditions":{"temperature":{"warning":98, "critical":107}}}' -n {YourIoTHubName}
az iot hub device-twin update -d simDevice --desired '{\"conditions\":{\"temperature\":{\"warning\":98, \"critical\":107}}}' -n {YourIoTHubName}
最初の CLI セッションで、シミュレートされたデバイスからプロパティの更新が出力されたことを確認します。
2 つ目の CLI セッションで、az iot hub device-twin show コマンドを実行します。 このコマンドにより、デバイスのプロパティに対する変更が報告されます。
YourIotHubName: このプレースホルダーは、実際の IoT Hub に対して選んだ名前に置き換えてください。
az iot hub device-twin show -d simDevice --query properties.reported -n {YourIoTHubName}
ポータルでメッセージング メトリックを表示する
Azure portal を使用すると、IoT ハブとデバイスのすべての側面を管理できます。 デバイスからテレメトリを取り込む一般的な IoT Hub アプリケーションでは、デバイスを監視したり、デバイスのテレメトリに関するメトリックを表示したい場合があります。
Azure portal でメッセージング メトリックを視覚化するには以下を行います。
ポータルの左側のナビゲーション メニューで [すべてのリソース] を選択します。 このタブにより、作成した IoT ハブを含む、サブスクリプション内のすべてのリソースが一覧表示されます。
作成した IoT ハブのリンクを選択します。 ポータルにはハブの [概要] ページが表示されます。
IoT Hub の左側のウィンドウで [メトリック] を選択します。
"スコープ" フィールドに、IoT ハブ名を入力します。
"メトリック名前空間" フィールドで、[Iot Hub の標準メトリック] を選択します。
"メトリック" フィールドで、[使用されているメッセージの合計数] を選択します。
デバイスがメッセージを送信したタイムラインの領域上にマウス ポインターを置きます。 特定の時点におけるメッセージの合計数は、タイムラインの左下隅に表示されます。
必要に応じて、 [メトリック] ドロップダウンを使用して、シミュレートされたデバイスの他のメトリックを表示します。 たとえば、[C2d message deliveries completed] (完了した C2d メッセージ配信) または [デバイスの合計数 (プレビュー) ]。
リソースをクリーンアップする
このクイックスタートで作成した Azure リソースが不要になった場合は、Azure CLI を使用して削除できます。
次の推奨記事に進む場合は、既に作成したリソースを維持して、再利用することができます。
重要
リソース グループを削除すると、元に戻すことができません。 リソース グループとそこに含まれるすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。
名前でリソース グループを削除するには、以下の手順を実行します。
az group delete コマンドを実行します。 このコマンドにより、作成したリソース グループ、IoT ハブ、デバイスの登録が削除されます。
az group delete --name MyResourceGroup
az group list コマンドを実行して、リソース グループが削除されていることを確認します。
az group list
次のステップ
このクイックスタートでは、Azure CLI を使用して、IoT ハブとシミュレートされたデバイスを作成し、テレメトリを送信して監視し、メソッドを呼び出し、目的のプロパティを設定し、リソースをクリーン アップしました。 Azure portal を使用して、デバイス上のメッセージング メトリックを視覚化しました。
デバイス開発者の場合、C 用 Azure IoT Device SDK を使用するテレメトリのクイックスタートを参照することをお勧めします。必要に応じて、希望する言語または SDK での Azure IoT Hub テレメトリのクイックスタートに関する利用可能ないずれかの記事を参照してください。
バックエンド アプリケーションからシミュレートされたデバイスを制御する方法を学習するには、次のクイック スタートに進んでください。