クイック スタート:デバイスから IoT ハブに利用統計情報を送信して Azure CLI で監視する

Azure IoT Hubは、クラウドでのストレージまたは処理のために IoT デバイスから大量のテレメトリ データを収集するように設計されています。 このコード不要クイックスタートでは、Azure CLI を使用して IoT ハブおよびシミュレートされたデバイスを作成します。 デバイス テレメトリをハブに送信し、デバイスでメッセージの送信、メソッドの呼び出し、プロパティの更新も行います。 Azure ポータルを使用して、デバイス メトリックを視覚化します。

この記事では、Azure CLIを使用してIoT Hub アプリケーションと対話することで、開発者向けの基本的なワークフローを提供します。

前提条件

  • Azure サブスクリプション。 お持ちでない場合は、開始する前に 無料で作成 できます。
  • Azure CLI。 このクイック スタートでは、ブラウザーまたは Windows ターミナル などのアプリで実行される対話型 CLI シェルである Azure Cloud Shell を使用して、すべてのコマンドを実行できます。 Cloud Shellを使用する場合は、何もインストールする必要はありません。 CLI をローカルで使用する場合、このクイックスタートでは、Azure CLI バージョン 2.36 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードするには、Azure CLI のインストールを参照してください。

Azure portal にサインインする

Azure portal にサインインします。

CLI をローカルで実行するか、Cloud Shellで実行するかに関係なく、ブラウザーでポータルを開いたままにしておきます。 後ほど、このクイックスタートで使用します。

Cloud Shell を開く

このセクションでは、Cloud Shellのインスタンスを開きます。 CLI をローカルで使用する場合は、「2 つの CLI セッションを準備する」のセクションに進んでください。

  1. Azure ポータルの右上にあるメニュー バーで Cloud Shell を選択します。

    Azure ポータルの Cloud Shell ボタンを示したスクリーンショット。

    Cloud Shellを初めて使用する場合は、Cloud Shellを使用する必要があるストレージを作成するように求められます。 ストレージ アカウントとAzure Files共有を作成するサブスクリプションを選択します。

  2. [環境の選択] ドロップダウン リストで、好みの CLI 環境を選択 します。 このクイック スタートでは、Bash 環境を使用します。 PowerShell 環境を使用することもできます。

    CLI 環境の選択を示すスクリーンショット。

    一部のコマンドでは、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 拡張機能により、Azure CLIに固有の IoT Hub、Azure IoT Edge、IoT Device Provisioning Service コマンドが追加されます。

    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 インスタンスを開きます。

    新しい Cloud Shell セッションを開く画面のスクリーンショット。

IoT ハブを作成する

このセクションでは、Azure CLI を使用してリソース グループと IoT ハブを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 IoT ハブは、IoT アプリケーションとデバイス間の双方向通信のための中央メッセージ ハブとして機能します。

  1. 最初の CLI セッションで、az group create コマンドを実行してリソース グループを作成します。 次のコマンドは、MyResourceGroupの場所に eastus という名前のリソース グループを作成します。

    az group create --name MyResourceGroup --location eastus
    
  2. 最初の 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 セッションで、イベントおよびテレメトリを監視します。

シミュレートされたデバイスを作成し開始するには以下を行います。

  1. 最初の CLI セッションで az iot hub device-identity create コマンドを実行します。 このコマンドにより、シミュレートされたデバイス ID が作成されます。

    • YourIotHubName。 次のコードのこのプレースホルダーを、IoT ハブ用に選択した名前に置き換えます。
    • simDevice。 このクイックスタートの残りの部分では、この名前をシミュレートされたデバイスに対して直接使用できます。 別の名前を使用することもできます。
    az iot hub device-identity create -d simDevice -n {YourIoTHubName} 
    
  2. 最初の CLI セッションで、az iot device simulate コマンドを実行します。 このコマンドにより、シミュレートされたデバイスが起動します。 デバイスは、IoT ハブにテレメトリを送信し、そこからメッセージを受信します。

    次のコードの YourIotHubName プレースホルダーを、IoT ハブ用に選択した名前に置き換えます。

    az iot device simulate -d simDevice -n {YourIoTHubName}
    

デバイスを監視するには以下を行います。

  1. 2 つ目の CLI セッションで、az iot hub monitor-events コマンドを実行します。 このコマンドにより、シミュレートされたデバイスが継続的に監視されます。 出力には、シミュレートされたデバイスから IoT ハブに送信されるイベントやプロパティの状態の変更などのテレメトリが表示されます。

    次のコードの YourIotHubName プレースホルダーを、IoT ハブ用に選択した名前に置き換えます。

    az iot hub monitor-events --output table -p all -n {YourIoTHubName}
    

    シミュレートされたデバイスでのイベントの監視のスクリーンショット。

  2. 2 番目の CLI セッションでシミュレートされたデバイスを監視した後、Ctrl + C キーを押して監視を停止します。 2 番目の CLI セッションは、後の手順で使用できるように開いたままにします。

CLI を使用してメッセージを送信する

このセクションでは、シミュレートされたデバイスにメッセージを送信します。

  1. 最初の CLI セッションで、シミュレートされたデバイスがまだ実行されていることを確認します。 デバイスが停止した場合は、次のコマンドを実行して再起動します。

    次のコードの YourIotHubName プレースホルダーを、IoT ハブ用に選択した名前に置き換えます。

    az iot device simulate -d simDevice -n {YourIoTHubName}
    
  2. 2 つ目の CLI セッションで、az iot device c2d-message send コマンドを実行します。 このコマンドにより、cloud-to-device メッセージが IoT ハブからシミュレートされたデバイスに送信されます。 メッセージには、文字列と 2 つのキーと値のペアが含まれています。

    次のコードの YourIotHubName プレースホルダーを、IoT ハブ用に選択した名前に置き換えます。

    az iot device c2d-message send -d simDevice --data "Hello World" --props "key0=value0;key1=value1" -n {YourIoTHubName}
    

    必要に応じて、Azure portal を使用して、cloud-to-device メッセージを送信できます。 Azure ポータルからメッセージを送信するには、IoT ハブの Overview ページを参照し、IoT Devices を選択し、シミュレートされたデバイスを選択して、Message to Device を選択します。

  3. 最初の CLI セッションで、シミュレートされたデバイスがメッセージを受信したことを確認します。

    メッセージを受信するシミュレートされたデバイスを示すスクリーンショット。

CLI を使用してデバイス メソッドを呼び出す

このセクションでは、シミュレートされたデバイスでダイレクト メソッドを呼び出します。

  1. 以前行ったように、最初の CLI セッションのシミュレートされたデバイスが実行されていることを確認します。 そうでない場合は、再起動します。

  2. 2 つ目の CLI セッションで、az iot hub invoke-device-method コマンドを実行します。 この例では、デバイスの既存のメソッドはありません。 このコマンドでは、シミュレートされたデバイスで、サンプルのメソッド名を呼び出し、ペイロードを返します。

    次のコードの YourIotHubName プレースホルダーを、IoT ハブ用に選択した名前に置き換えます。

    az iot hub invoke-device-method --mn MySampleMethod -d simDevice -n {YourIoTHubName}
    
  3. 最初の CLI セッションで、出力にメソッド呼び出しが表示されていることを確認します。

    メソッドが呼び出された後に出力を表示するシミュレートされたデバイスを示すスクリーンショット。

CLI を使用してデバイスのプロパティを更新する

このセクションでは、プロパティ値を設定して、シミュレートされたデバイスの状態を更新します。

  1. 以前行ったように、最初の CLI セッションのシミュレートされたデバイスが実行されていることを確認します。 そうでない場合は、再起動します。

  2. 2 つ目の CLI セッションで、az iot hub device-twin update コマンドを実行します。 このコマンドにより、シミュレートされたデバイスに対応する IoT ハブ デバイス ツイン上で、プロパティが目的の状態に更新されます。 この場合、コマンドではサンプルの温度条件プロパティを設定します。

    重要

    CLI シェルで PowerShell を使用している場合は、次のコードで PowerShell バージョンのコマンドを使用します。 PowerShell では、JSON ペイロード内の文字をエスケープする必要があります。

    次のコードの YourIotHubName プレースホルダーを、IoT ハブ用に選択した名前に置き換えます。

    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}
    
  3. 最初の CLI セッションで、シミュレートされたデバイスからプロパティの更新が出力されたことを確認します。

    デバイスのプロパティを更新する方法を示すスクリーンショット。

  4. 2 つ目の CLI セッションで、az iot hub device-twin show コマンドを実行します。 このコマンドにより、デバイスのプロパティに対する変更が報告されます。

    次のコードの YourIotHubName プレースホルダーを、IoT ハブ用に選択した名前に置き換えます。

    az iot hub device-twin show -d simDevice --query properties.reported -n {YourIoTHubName}
    

    デバイス ツインの更新されたプロパティを示すスクリーンショット。

ポータルでメッセージング メトリックを表示する

Azure ポータルでは、IoT ハブとデバイスのすべての側面を管理できます。 デバイスからテレメトリを取り込む一般的な IoT Hub アプリケーションでは、デバイスを監視したり、デバイスのテレメトリに関するメトリックを表示したい場合があります。

Azure portal でメッセージング メトリックを視覚化するには以下を行います。

  1. ポータルのサービス メニューで、[ すべてのリソース] を選択します。 このタブには、作成した IoT ハブを含め、サブスクリプション内のすべてのリソースが一覧表示されます。

  2. 作成した IoT ハブ上のリンクを選択します。 ポータルにハブの [概要 ] ページが表示されます。

  3. IoT ハブの左側のウィンドウで [メトリック] を選択します。

    IoT Hub のメッセージング メトリックを示すスクリーンショット。

  4. "スコープ" フィールドに、IoT ハブ名を入力します。

  5. Metric Namespace フィールドで、標準メトリックIoT Hub を選択します。

  6. "メトリック" フィールドで、[使用されているメッセージの合計数] を選択します。

  7. デバイスがメッセージを送信したタイムラインの領域上にマウス ポインターを置きます。 特定の時点におけるメッセージの合計数は、タイムラインの左下隅に表示されます。

    IoT Hub メトリックのビューを示すスクリーンショット。

  8. 必要に応じて、[ メトリック ] ドロップダウン リストを使用して、シミュレートされたデバイスに他のメトリックを表示します。 たとえば、「 C2d メッセージの配信完了 」または 「デバイスの合計数 (プレビュー)」を参照してください。

リソースをクリーンアップする

このクイック スタートで作成したAzure リソースが不要になった場合は、Azure CLIを使用して削除できます。

次の推奨記事に進む場合は、既に作成したリソースを保持して再利用できます。

重要

リソース グループを削除すると、元に戻すことができません。 リソース グループとそこに含まれるすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。

名前でリソース グループを削除するには、以下の手順を実行します。

  1. az group delete コマンドを実行します。 このコマンドを実行すると、作成したリソース グループ、IoT ハブ、およびデバイスの登録が削除されます。

    az group delete --name MyResourceGroup
    
  2. az group list コマンドを実行して、リソース グループが削除されたことを確認します。

    az group list
    

まとめ

このクイックスタートでは、Azure CLI を使用して、IoT ハブとシミュレートされたデバイスを作成し、テレメトリを送信して監視し、メソッドを呼び出し、目的のプロパティを設定し、リソースをクリーン アップしました。 Azure portal を使用して、デバイス上のメッセージング メトリックを視覚化しました。

デバイス開発者の場合、推奨される次の手順は、Azure IoT Device SDK for C を使用するテレメトリ クイック スタートを確認することです。必要に応じて、任意の言語または SDK で使用可能なIoT Hubテレメトリ クイック スタート記事のいずれかを参照してください。

バックエンド アプリケーションからシミュレートされたデバイスを制御する方法を学習するには、次のクイック スタートに進んでください。

次のステップ