Azure CLI 向けの IoT 拡張機能を使用した Azure IoT Hub デバイス管理
この記事では、開発マシンでさまざまな管理オプションを指定して Azure CLI 向けの IoT 拡張機能を使用する方法について説明します。 Azure CLI 向けの IoT 拡張機能は、Azure CLI の機能に追加されるオープン ソースの IoT 拡張機能です。 Azure CLI には、Azure Resource Manager と管理エンドポイントと対話するためのコマンドが含まれています。 たとえば、Azure CLI を使って Azure VM または IoT ハブを作成できます。 Azure サービスは、CLI 拡張機能を使用して Azure CLI を拡張することで、追加されるサービス固有の機能にアクセスできるようにします。 IoT 開発者は、IoT 拡張機能を使用して、すべての IoT Hub、IoT Edge、および IoT Hub Device Provisioning Service の機能にコマンド ラインからアクセスできます。
管理オプション | タスク |
---|---|
ダイレクト メソッド | メッセージの送信開始や停止、デバイスの再起動などの機能をデバイスに実行させます。 |
デバイス ツインの必要なプロパティ | デバイスを特定の状態にします (LED を緑に設定したり、テレメトリの送信間隔を 30 分に設定したりします)。 |
デバイス ツインの報告されるプロパティ | デバイスの報告される状態を取得します。 たとえば、デバイスは、現在 LED が点滅していることを報告します。 |
デバイス ツインのタグ | デバイス固有のメタデータをクラウドに格納します。 例: 自動販売機の設置場所。 |
デバイス ツイン クエリ | すべてのデバイス ツインをクエリして、任意の条件 (使用可能なデバイスを識別するなど) でそれらのツインを取得します。 |
これらのオプションの相違点の詳細な説明と使用するためのガイダンスについては、「device-to-cloud 通信に関するガイダンス」と「cloud-to-device 通信に関するガイダンス」を参照してください。
デバイス ツインは、デバイスの状態に関する情報 (メタデータ、構成、状態) を格納する JSON ドキュメントです。 IoT Hub は、IoT Hub に接続する各デバイスにデバイス ツインを保持します。 デバイス ツインの詳細については、「デバイス ツインの使用」を参照してください。
注意
この記事では、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
を使用してください。
注意
この記事で説明されている機能は、Standard レベルの IoT Hub でのみ使用できます。 Basic および Standard または Free レベルの IoT Hub の詳細については、ソリューションに適した IoT Hub のレベルの選択に関するページを参照してください。
前提条件
Raspberry Pi オンライン シミュレーターのチュートリアル、またはいずれかのデバイス チュートリアルを完了してください。 たとえば、Node.js での Raspberry Pi に関する記事、またはテレメトリの送信に関するいずれかのクイックスタートにアクセスできます。 これらの記事では、次の要件について取り上げています。
- 有効な Azure サブスクリプション
- サブスクリプションの Azure IoT Hub。
- Azure IoT Hub にメッセージを送信するクライアント アプリケーション。
このチュートリアルの実行時にクライアント アプリケーションでデバイスが実行されていることを確認します。
Azure CLI インストールが必要な場合は、Azure CLI のインストールに関するページを参照してください。 Azure CLI のバージョンは、少なくとも 2.0.70 以降である必要があります。 検証するには、
az –version
を使用します。
注意
この記事では、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
を使用してください。
- IoT 拡張機能をインストールします。 最も簡単な方法は、
az extension add --name azure-iot
を実行することです。 IoT 拡張機能の readme に、拡張機能をインストールするためのいくつかの方法が説明されています。
Azure アカウントへのサインイン
次のコマンドを実行して Azure アカウントにサインインします。
az login
ダイレクト メソッド
az iot hub invoke-device-method --device-id <your device id> \
--hub-name <your hub name> \
--method-name <the method name> \
--method-payload <the method payload>
デバイス ツインの目的のプロパティ
次のコマンドを実行して、目的のプロパティ interval = 3000 を設定します。
az iot hub device-twin update -n <your hub name> \
-d <your device id> --set properties.desired.interval=3000
このプロパティをデバイスから読み取ることができます。
デバイス ツインの報告されるプロパティ
次のコマンドを実行して、デバイスの報告されるプロパティを取得します。
az iot hub device-twin show -n <your hub name> -d <your device id>
ツインの報告されるプロパティの 1 つは $metadata.$lastUpdated です。これは、デバイス アプリによって、その報告されるプロパティのセットが最後に更新された時刻を示します。
デバイス ツインのタグ
次のコマンドを実行して、デバイスのタグとプロパティを取得します。
az iot hub device-twin show --hub-name <your hub name> --device-id <your device id>
次のコマンドを実行して、role = temperature&humidity というフィールドをデバイスに追加します。
az iot hub device-twin update \
--hub-name <your hub name> \
--device-id <your device id> \
--set tags='{"role":"temperature&humidity"}'
デバイス ツイン クエリ
次のコマンドを実行して、role = 'temperature&humidity' というタグを含むデバイスのクエリを行います。
az iot hub query --hub-name <your hub name> \
--query-command "SELECT * FROM devices WHERE tags.role = 'temperature&humidity'"
次のコマンドを実行して、role = 'temperature&humidity' というタグを含むものをのぞくすべてのデバイスをクエリします。
az iot hub query --hub-name <your hub name> \
--query-command "SELECT * FROM devices WHERE tags.role != 'temperature&humidity'"
次のステップ
使用している IoT デバイスと Azure IoT Hub の間で D2C メッセージを監視し、C2D メッセージを送信する方法については学習しました。
引き続き Azure IoT Hub の使用方法を確認すると共に、すべての拡張された IoT のシナリオについて調べるには、次のページを参照してください。