このクイック スタートでは、ダイレクト メソッドを使用して、IoT ハブに接続されているシミュレートされたデバイスを制御します。 IoT Hub は、クラウドから IoT デバイスを管理し、ストレージまたは処理のために大量のデバイス テレメトリをクラウドに取り込む Azure サービスです。 ダイレクト メソッドを使用して、IoT ハブに接続されているデバイスの動作をリモートで変更できます。
このクイック スタートでは、2 つの事前に書き込まれた .NET アプリケーションを使用します。
サービス アプリケーションから呼び出されたダイレクト メソッドに応答するシミュレートされたデバイス アプリケーション。 ダイレクト メソッド呼び出しを受け取るために、このアプリケーションは IoT ハブ上のデバイス固有のエンドポイントに接続します。
シミュレートされたデバイスでダイレクト メソッドを呼び出すサービス アプリケーション。 デバイスでダイレクト メソッドを呼び出すために、このアプリケーションは IoT ハブ上のサービス側エンドポイントに接続します。
[前提条件]
アクティブなサブスクリプションを持つ Azure アカウント。 無料で作成できます。
このクイック スタートで実行する 2 つのサンプル アプリケーションは、C# を使用して記述されています。 開発用コンピューターに .NET SDK 6.0 以上が必要です。
.NET から複数のプラットフォーム用の .NET Core SDK をダウンロードできます。
次のコマンドを使用して、開発用コンピューター上の現在のバージョンの C# を確認できます。
dotnet --versionGitHub から Microsoft Azure IoT SDK for .NET を 複製またはダウンロードします。 このクイックスタートで使用するサンプル アプリケーションは、SDK に含まれています。
ポート 8883 がファイアウォールで開放されていることを確認してください。 このクイック スタートのデバイス サンプルでは、ポート 8883 経由で通信する MQTT プロトコルを使用します。 このポートは、企業や教育用のネットワーク環境によってはブロックされている場合があります。 この問題を回避する方法の詳細については、「MQTT プロトコルを使用して IoT ハブ と通信する」の「 IoT Hub への接続」セクションを参照してください。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
注
この記事では、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を使用します。
このセクションでは、Azure CLI を使用して IoT ハブとリソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 IoT ハブは、IoT アプリケーションとデバイスの間の双方向通信に対する中央メッセージ ハブとして機能します。
Azure サブスクリプションに IoT ハブが既にある場合は、このセクションをスキップできます。
IoT ハブとリソース グループを作成するには、次のようにします。
CLI アプリを起動します。 この記事の以降の部分で CLI コマンドを実行するには、コマンド構文をコピーして CLI アプリに貼り付け、変数の値を編集して
Enterを押します。- Cloud Shell を使用する場合は、CLI コマンドの [Try It](試してみる) ボタンを選択すると、分割されたブラウザー ウィンドウで Cloud Shell が起動します。 また、別のブラウザー タブで Cloud Shell を開くこともできます。
- Azure CLI をローカルで使用している場合は、CLI コンソール アプリを起動し、Azure CLI にサインインします。
az extension add を実行して、azure-iot 拡張機能をインストールするか、最新バージョンにアップグレードします。
az extension add --upgrade --name azure-iotCLI アプリで az group create コマンドを実行してリソース グループを作成します。 次のコマンドは、myResourceGroup という名前のリソース グループを eastus という場所に作成します。
注
必要に応じて、別の場所を設定できます。 選択できる場所を確認するには、
az account list-locationsを実行します。 コマンド例を見るとわかるように、このクイックスタートでは eastus を使用しています。az group create --name MyResourceGroup --location eastusaz iot hub create コマンドを実行して、IoT ハブを作成します。 IoT ハブの作成には数分かかることがあります。
YourIoTHubName。 以下のコマンドでは、選択した IoT ハブの名前に合わせて、プレースホルダーとそれを囲む中かっこを置き換えます。 IoT ハブ名は Azure でグローバルに一意である必要があります。 以降、このクイックスタートに出現しているプレースホルダーにはすべて、実際の IoT ハブの名前を使用してください。
az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
サービス接続文字列を取得する
また、サービス アプリケーションがハブに接続してメッセージを取得できるようにするには、IoT ハブのサービス 接続文字列 も必要です。 サービス接続文字列は IoT ハブ全体を対象としており、前のセクションで取得したデバイス接続文字列とは異なります。
次のコマンドは、IoT ハブのサービス接続文字列を取得します。
az iot hub connection-string show --policy-name service --hub-name {YourIoTHubName} --output table
次のようなサービス接続文字列を書き留めます。
HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}
この値は、クイックスタートの後半で使用します。
デバイスをシミュレートする
シミュレートされたデバイス アプリケーションは、IoT ハブ上のデバイス固有のエンドポイントに接続し、シミュレートされたテレメトリを送信し、ハブからのダイレクト メソッド呼び出しをリッスンします。 このクイック スタートでは、ハブからのダイレクト メソッド呼び出しによって、テレメトリを送信する間隔を変更するようにデバイスに指示します。 シミュレートされたデバイスは、ダイレクト メソッドを実行した後、ハブに受信確認を送信します。
ローカル ターミナル ウィンドウで、SDK のルート フォルダーに移動します。 次に、 iothub\device\samples\getting started\SimulatedDeviceWithCommand フォルダーに 移動します。
次のコマンドを実行して、シミュレートされたデバイス アプリケーションに必要なパッケージをインストールします。
dotnet restore次のコマンドを実行して、シミュレートされたデバイス アプリケーションをビルドして実行します。
{DeviceConnectionString}: このプレースホルダーは、前に説明したデバイス接続文字列に置き換えます。dotnet run -- -c "{DeviceConnectionString}"次のスクリーンショットは、シミュレートされたデバイス アプリケーションが IoT ハブにテレメトリを送信するときの出力を示しています。
ダイレクト メソッドを呼び出す
サービス アプリケーションは、IoT Hub 上のサービス側エンドポイントに接続します。 アプリケーションは、IoT ハブを介してデバイスに直接メソッド呼び出しを行い、受信確認をリッスンします。 通常、IoT Hub サービス アプリケーションはクラウドで実行されます。
別のローカル ターミナル ウィンドウで、SDK のルート フォルダーに移動します。 次に、 iothub\service\samples\getting started\InvokeDeviceMethod フォルダーに移動します。
ローカル ターミナル ウィンドウで、次のコマンドを実行して、サービス アプリケーションに必要なライブラリをインストールします。
dotnet buildローカル ターミナル ウィンドウで、次のコマンドを実行して、サービス アプリケーションをビルドして実行します。
{ServiceConnectionString}: このプレースホルダーを、前に説明した IoT Hub サービス接続文字列に置き換えます。{DeviceName}: このプレースホルダーは、登録したデバイスの名前に置き換えます。dotnet run -- -c "{ServiceConnectionString}" -d {DeviceName}次のスクリーンショットは、アプリケーションがデバイスへのダイレクト メソッド呼び出しを行い、受信確認を受信する際の出力を示しています。
サービス アプリケーションを実行すると、シミュレートされたデバイスを実行しているローカル ターミナル ウィンドウにメッセージが表示され、メッセージの送信速度が変わります。
このクイック スタートでは、次の 2 つの Java アプリケーションを使用します。
- バックエンド アプリケーションから呼び出されたダイレクト メソッドに応答するシミュレートされたデバイス アプリケーション。
- シミュレートされたデバイスでダイレクト メソッドを呼び出すサービス アプリケーション。
[前提条件]
アクティブなサブスクリプションを持つ Azure アカウント。 無料で作成できます。
Java SE 開発キット 8. Azure と Azure Stack に対する Java の長期的なサポートでは、[長期的なサポート] で [Java 8] を選択します。
次のコマンドを使用して、開発用コンピューター上の Java の現在のバージョンを確認できます。
java -version-
次のコマンドを使用して、開発用コンピューター上の Maven の現在のバージョンを確認できます。
mvn --version GitHub から Java 用 Azure IoT サンプルを 複製またはダウンロードします。
ポート 8883 がファイアウォールで開放されていることを確認してください。 このクイック スタートのデバイス サンプルでは、ポート 8883 経由で通信する MQTT プロトコルを使用します。 このポートは、企業や教育用のネットワーク環境によってはブロックされている場合があります。 この問題を回避する方法の詳細については、「MQTT プロトコルを使用して IoT ハブ と通信する」の「 IoT Hub への接続」セクションを参照してください。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
注
この記事では、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 ハブを作成する
このセクションでは、Azure CLI を使用して IoT ハブとリソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 IoT ハブは、IoT アプリケーションとデバイスの間の双方向通信に対する中央メッセージ ハブとして機能します。
Azure サブスクリプションに IoT ハブが既にある場合は、このセクションをスキップできます。
IoT ハブとリソース グループを作成するには、次のようにします。
CLI アプリを起動します。 この記事の以降の部分で CLI コマンドを実行するには、コマンド構文をコピーして CLI アプリに貼り付け、変数の値を編集して
Enterを押します。- Cloud Shell を使用する場合は、CLI コマンドの [Try It](試してみる) ボタンを選択すると、分割されたブラウザー ウィンドウで Cloud Shell が起動します。 また、別のブラウザー タブで Cloud Shell を開くこともできます。
- Azure CLI をローカルで使用している場合は、CLI コンソール アプリを起動し、Azure CLI にサインインします。
az extension add を実行して、azure-iot 拡張機能をインストールするか、最新バージョンにアップグレードします。
az extension add --upgrade --name azure-iotCLI アプリで az group create コマンドを実行してリソース グループを作成します。 次のコマンドは、myResourceGroup という名前のリソース グループを eastus という場所に作成します。
注
必要に応じて、別の場所を設定できます。 選択できる場所を確認するには、
az account list-locationsを実行します。 コマンド例を見るとわかるように、このクイックスタートでは eastus を使用しています。az group create --name MyResourceGroup --location eastusaz iot hub create コマンドを実行して、IoT ハブを作成します。 IoT ハブの作成には数分かかることがあります。
YourIoTHubName。 以下のコマンドでは、選択した IoT ハブの名前に合わせて、プレースホルダーとそれを囲む中かっこを置き換えます。 IoT ハブ名は Azure でグローバルに一意である必要があります。 以降、このクイックスタートに出現しているプレースホルダーにはすべて、実際の IoT ハブの名前を使用してください。
az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
デバイスの登録
デバイスを IoT Hub に接続するには、あらかじめ IoT Hub に登録しておく必要があります。 このセクションでは、Azure CLI を使用してデバイス ID を作成します。
IoT ハブにデバイスが既に登録されている場合は、このセクションをスキップできます。
デバイス ID を作成するには:
CLI シェルで az iot hub device-identity create コマンドを実行します。 このコマンドは、デバイス ID を作成します。
YourIoTHubName。 以下のコマンドでは、選択した IoT ハブの名前に合わせて、プレースホルダーとそれを囲む中かっこを置き換えます。 IoT ハブ名は Azure でグローバルに一意である必要があります。
myDevice。 この記事全体でデバイス ID にこの名前を使用することも、別のデバイス名を指定することもできます。
az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}az iot hub device-identity connection-string show コマンドを実行します。
az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}接続文字列の出力形式は次のとおりです。
HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>接続文字列を安全な場所に保存します。
注
CLI アプリを開いたままにします。 後の手順で使用します。
サービス接続文字列を取得する
バックエンド アプリケーションが IoT ハブに接続してメッセージを取得できるようにするには、 サービス接続文字列 も必要です。 次のコマンドは、IoT ハブのサービス接続文字列を取得します。
YourIoTHubName: 次のコマンドのこのプレースホルダーを、IoT ハブ用に選択した名前に置き換えます。
az iot hub connection-string show --policy-name service --hub-name {YourIoTHubName} --output table
次のようなサービス接続文字列を書き留めます。
HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}
この値は、クイックスタートの後半で使用します。 このサービス接続文字列は、前の手順で説明したデバイス接続文字列とは異なります。
デバイスをシミュレートする
シミュレートされたデバイス アプリケーションは、IoT ハブ上のデバイス固有のエンドポイントに接続し、シミュレートされたテレメトリを送信し、ハブからのダイレクト メソッド呼び出しをリッスンします。 このクイック スタートでは、ハブからのダイレクト メソッド呼び出しによって、テレメトリを送信する間隔を変更するようにデバイスに指示します。 シミュレートされたデバイスは、ダイレクト メソッドを実行した後、ハブに受信確認を送信します。
ローカル ターミナル ウィンドウで、サンプル Java プロジェクトのルート フォルダーに移動します。 次に、 iot-hub\Quickstarts\simulated-device-2 フォルダーに 移動します。
任意のテキスト エディターで src/main/java/com/microsoft/docs/iothub/samples/SimulatedDevice.java ファイルを開きます。
connString変数の値を、前にメモしたデバイス接続文字列に置き換えます。 次に、変更を SimulatedDevice.javaに保存します。ローカル ターミナル ウィンドウで、次のコマンドを実行して必要なライブラリをインストールし、シミュレートされたデバイス アプリケーションをビルドします。
mvn clean packageローカル ターミナル ウィンドウで、次のコマンドを実行して、シミュレートされたデバイス アプリケーションを実行します。
java -jar target/simulated-device-2-1.0.0-with-deps.jar次のスクリーンショットは、シミュレートされたデバイス アプリケーションが IoT ハブにテレメトリを送信するときの出力を示しています。
ダイレクト メソッドを呼び出す
バックエンド アプリケーションは、IoT Hub 上のサービス側エンドポイントに接続します。 アプリケーションは、IoT ハブを介してデバイスに直接メソッド呼び出しを行い、受信確認をリッスンします。 通常、IoT Hub バックエンド アプリケーションはクラウドで実行されます。
別のローカル ターミナル ウィンドウで、サンプル Java プロジェクトのルート フォルダーに移動します。 次に、 iot-hub\Quickstarts\バックエンド アプリケーション フォルダーに移動します。
任意のテキスト エディターで src/main/java/com/microsoft/docs/iothub/samples/BackEndApplication.java ファイルを開きます。
iotHubConnectionString変数の値を、前にメモしたサービス接続文字列に置き換えます。 次に、変更を BackEndApplication.javaに保存します。ローカル ターミナル ウィンドウで、次のコマンドを実行して必要なライブラリをインストールし、バックエンド アプリケーションをビルドします。
mvn clean packageローカル ターミナル ウィンドウで、次のコマンドを実行してバックエンド アプリケーションを実行します。
java -jar target/back-end-application-1.0.0-with-deps.jar次のスクリーンショットは、アプリケーションがデバイスへのダイレクト メソッド呼び出しを行い、受信確認を受信する際の出力を示しています。
バックエンド アプリケーションを実行すると、シミュレートされたデバイスを実行しているローカル ターミナル ウィンドウにメッセージが表示され、メッセージの送信速度が変わります。
このクイック スタートでは、次の 2 つの Node.js アプリケーションを使用します。
- バックエンド アプリケーションから呼び出されたダイレクト メソッドに応答するシミュレートされたデバイス アプリケーション。 ダイレクト メソッド呼び出しを受け取るために、このアプリケーションは IoT ハブ上のデバイス固有のエンドポイントに接続します。
- シミュレートされたデバイスでダイレクト メソッドを呼び出すバックエンド アプリケーション。 デバイスでダイレクト メソッドを呼び出すために、このアプリケーションは IoT ハブ上のサービス固有のエンドポイントに接続します。
[前提条件]
アクティブなサブスクリプションを持つ Azure アカウント。 無料で作成できます。
-
次のコマンドを使用して、開発用コンピューター上の Node.js の現在のバージョンを確認できます。
node --version GitHub から Azure IoT Node.js サンプル を複製またはダウンロードします。
ポート 8883 がファイアウォールで開放されていることを確認してください。 このクイック スタートのデバイス サンプルでは、ポート 8883 経由で通信する MQTT プロトコルを使用します。 このポートは、企業や教育用のネットワーク環境によってはブロックされている場合があります。 この問題を回避する方法の詳細については、「MQTT プロトコルを使用して IoT ハブ と通信する」の「 IoT Hub への接続」セクションを参照してください。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
注
この記事では、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 ハブを作成する
このセクションでは、Azure CLI を使用して IoT ハブとリソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 IoT ハブは、IoT アプリケーションとデバイスの間の双方向通信に対する中央メッセージ ハブとして機能します。
Azure サブスクリプションに IoT ハブが既にある場合は、このセクションをスキップできます。
IoT ハブとリソース グループを作成するには、次のようにします。
CLI アプリを起動します。 この記事の以降の部分で CLI コマンドを実行するには、コマンド構文をコピーして CLI アプリに貼り付け、変数の値を編集して
Enterを押します。- Cloud Shell を使用する場合は、CLI コマンドの [Try It](試してみる) ボタンを選択すると、分割されたブラウザー ウィンドウで Cloud Shell が起動します。 また、別のブラウザー タブで Cloud Shell を開くこともできます。
- Azure CLI をローカルで使用している場合は、CLI コンソール アプリを起動し、Azure CLI にサインインします。
az extension add を実行して、azure-iot 拡張機能をインストールするか、最新バージョンにアップグレードします。
az extension add --upgrade --name azure-iotCLI アプリで az group create コマンドを実行してリソース グループを作成します。 次のコマンドは、myResourceGroup という名前のリソース グループを eastus という場所に作成します。
注
必要に応じて、別の場所を設定できます。 選択できる場所を確認するには、
az account list-locationsを実行します。 コマンド例を見るとわかるように、このクイックスタートでは eastus を使用しています。az group create --name MyResourceGroup --location eastusaz iot hub create コマンドを実行して、IoT ハブを作成します。 IoT ハブの作成には数分かかることがあります。
YourIoTHubName。 以下のコマンドでは、選択した IoT ハブの名前に合わせて、プレースホルダーとそれを囲む中かっこを置き換えます。 IoT ハブ名は Azure でグローバルに一意である必要があります。 以降、このクイックスタートに出現しているプレースホルダーにはすべて、実際の IoT ハブの名前を使用してください。
az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
デバイスの登録
デバイスを IoT Hub に接続するには、あらかじめ IoT Hub に登録しておく必要があります。 このセクションでは、Azure CLI を使用してデバイス ID を作成します。
IoT ハブにデバイスが既に登録されている場合は、このセクションをスキップできます。
デバイス ID を作成するには:
CLI シェルで az iot hub device-identity create コマンドを実行します。 このコマンドは、デバイス ID を作成します。
YourIoTHubName。 以下のコマンドでは、選択した IoT ハブの名前に合わせて、プレースホルダーとそれを囲む中かっこを置き換えます。 IoT ハブ名は Azure でグローバルに一意である必要があります。
myDevice。 この記事全体でデバイス ID にこの名前を使用することも、別のデバイス名を指定することもできます。
az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}az iot hub device-identity connection-string show コマンドを実行します。
az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}接続文字列の出力形式は次のとおりです。
HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>接続文字列を安全な場所に保存します。
注
CLI アプリを開いたままにします。 後の手順で使用します。
サービス接続文字列を取得する
また、バックエンド アプリケーションが IoT ハブに接続してメッセージを取得できるようにするには、IoT ハブの サービス接続文字列 も必要です。 次のコマンドは、IoT ハブのサービス接続文字列を取得します。
YourIoTHubName: 次のコマンドのこのプレースホルダーを、IoT ハブ用に選択した名前に置き換えます。
az iot hub connection-string show \
--policy-name service --hub-name {YourIoTHubName} --output table
次のようなサービス接続文字列を書き留めます。
HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}
この値は、クイックスタートの後半で使用します。 このサービス接続文字列は、前の手順で説明したデバイス接続文字列とは異なります。
デバイスをシミュレートする
シミュレートされたデバイス アプリケーションは、IoT ハブ上のデバイス固有のエンドポイントに接続し、シミュレートされたテレメトリを送信し、ハブからのダイレクト メソッド呼び出しをリッスンします。 このクイック スタートでは、ハブからのダイレクト メソッド呼び出しによって、テレメトリを送信する間隔を変更するようにデバイスに指示します。 シミュレートされたデバイスは、ダイレクト メソッドを実行した後、ハブに受信確認を送信します。
ローカル ターミナル ウィンドウで、サンプル Node.js プロジェクトのルート フォルダーに移動します。 次に、 iot-hub\Quickstarts\simulated-device-2 フォルダーに 移動します。
任意のテキスト エディターで SimulatedDevice.js ファイルを開きます。
connectionString変数の値を、前にメモしたデバイス接続文字列に置き換えます。 その後、変更を SimulatedDevice.jsに保存します。ローカル ターミナル ウィンドウで、次のコマンドを実行して必要なライブラリをインストールし、シミュレートされたデバイス アプリケーションを実行します。
npm install node SimulatedDevice.js次のスクリーンショットは、シミュレートされたデバイス アプリケーションが IoT ハブにテレメトリを送信するときの出力を示しています。
ダイレクト メソッドを呼び出す
バックエンド アプリケーションは、IoT ハブ上のサービス側エンドポイントに接続します。 アプリケーションは、IoT ハブを介してデバイスに直接メソッド呼び出しを行い、受信確認をリッスンします。 通常、IoT Hub バックエンド アプリケーションはクラウドで実行されます。
別のローカル ターミナル ウィンドウで、サンプル Node.js プロジェクトのルート フォルダーに移動します。 次に、 iot-hub\Quickstarts\バックエンド アプリケーション フォルダーに移動します。
任意のテキスト エディターで BackEndApplication.js ファイルを開きます。
connectionString変数の値を、前にメモしたサービス接続文字列に置き換えます。 その後、変更を BackEndApplication.jsに保存します。ローカル ターミナル ウィンドウで、次のコマンドを実行して必要なライブラリをインストールし、バックエンド アプリケーションを実行します。
npm install node BackEndApplication.js次のスクリーンショットは、アプリケーションがデバイスへのダイレクト メソッド呼び出しを行い、受信確認を受信する際の出力を示しています。
バックエンド アプリケーションを実行すると、シミュレートされたデバイスを実行しているローカル ターミナル ウィンドウにメッセージが表示され、メッセージの送信速度が変わります。
このクイック スタートでは、次の 2 つの Python アプリケーションを使用します。
- バックエンド アプリケーションから呼び出されたダイレクト メソッドに応答するシミュレートされたデバイス アプリケーション。
- シミュレートされたデバイスでダイレクト メソッドを呼び出すバックエンド アプリケーション。
[前提条件]
アクティブなサブスクリプションを持つ Azure アカウント。 無料で作成できます。
Python 3.7 以降。 サポートされている Python のその他のバージョンについては、 Azure IoT デバイスの機能に関するページを参照してください。
GitHub から Azure IoT Python サンプル を複製またはダウンロードします。
ポート 8883 がファイアウォールで開放されていることを確認してください。 このクイック スタートのデバイス サンプルでは、ポート 8883 経由で通信する MQTT プロトコルを使用します。 このポートは、企業や教育用のネットワーク環境によってはブロックされている場合があります。 この問題を回避する方法の詳細については、「MQTT プロトコルを使用して IoT ハブ と通信する」の「 IoT Hub への接続」セクションを参照してください。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
注
この記事では、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 ハブを作成する
このセクションでは、Azure CLI を使用して IoT ハブとリソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 IoT ハブは、IoT アプリケーションとデバイスの間の双方向通信に対する中央メッセージ ハブとして機能します。
Azure サブスクリプションに IoT ハブが既にある場合は、このセクションをスキップできます。
IoT ハブとリソース グループを作成するには、次のようにします。
CLI アプリを起動します。 この記事の以降の部分で CLI コマンドを実行するには、コマンド構文をコピーして CLI アプリに貼り付け、変数の値を編集して
Enterを押します。- Cloud Shell を使用する場合は、CLI コマンドの [Try It](試してみる) ボタンを選択すると、分割されたブラウザー ウィンドウで Cloud Shell が起動します。 また、別のブラウザー タブで Cloud Shell を開くこともできます。
- Azure CLI をローカルで使用している場合は、CLI コンソール アプリを起動し、Azure CLI にサインインします。
az extension add を実行して、azure-iot 拡張機能をインストールするか、最新バージョンにアップグレードします。
az extension add --upgrade --name azure-iotCLI アプリで az group create コマンドを実行してリソース グループを作成します。 次のコマンドは、myResourceGroup という名前のリソース グループを eastus という場所に作成します。
注
必要に応じて、別の場所を設定できます。 選択できる場所を確認するには、
az account list-locationsを実行します。 コマンド例を見るとわかるように、このクイックスタートでは eastus を使用しています。az group create --name MyResourceGroup --location eastusaz iot hub create コマンドを実行して、IoT ハブを作成します。 IoT ハブの作成には数分かかることがあります。
YourIoTHubName。 以下のコマンドでは、選択した IoT ハブの名前に合わせて、プレースホルダーとそれを囲む中かっこを置き換えます。 IoT ハブ名は Azure でグローバルに一意である必要があります。 以降、このクイックスタートに出現しているプレースホルダーにはすべて、実際の IoT ハブの名前を使用してください。
az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
デバイスの登録
デバイスを IoT Hub に接続するには、あらかじめ IoT Hub に登録しておく必要があります。 このセクションでは、Azure CLI を使用してデバイス ID を作成します。
IoT ハブにデバイスが既に登録されている場合は、このセクションをスキップできます。
デバイス ID を作成するには:
CLI シェルで az iot hub device-identity create コマンドを実行します。 このコマンドは、デバイス ID を作成します。
YourIoTHubName。 以下のコマンドでは、選択した IoT ハブの名前に合わせて、プレースホルダーとそれを囲む中かっこを置き換えます。 IoT ハブ名は Azure でグローバルに一意である必要があります。
myDevice。 この記事全体でデバイス ID にこの名前を使用することも、別のデバイス名を指定することもできます。
az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}az iot hub device-identity connection-string show コマンドを実行します。
az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}接続文字列の出力形式は次のとおりです。
HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>接続文字列を安全な場所に保存します。
注
CLI アプリを開いたままにします。 後の手順で使用します。
サービス接続文字列を取得する
バックエンド アプリケーションが IoT ハブに接続してメッセージを取得できるようにするには、 サービス接続文字列 も必要です。 次のコマンドは、IoT ハブのサービス接続文字列を取得します。
YourIoTHubName: 次のコマンドのこのプレースホルダーを、IoT ハブに対して選択した名前に置き換えます。
az iot hub connection-string show \
--policy-name service \
--hub-name {YourIoTHubName} \
--output table
次のようなサービス接続文字列を書き留めます。
HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}
この値は、クイックスタートの後半で使用します。 このサービス接続文字列は、前の手順で説明したデバイス接続文字列とは異なります。
デバイスをシミュレートする
シミュレートされたデバイス アプリケーションは、IoT ハブ上のデバイス固有のエンドポイントに接続し、シミュレートされたテレメトリを送信し、ハブからのダイレクト メソッド呼び出しをリッスンします。 このクイック スタートでは、ハブからのダイレクト メソッド呼び出しによって、テレメトリを送信する間隔を変更するようにデバイスに指示します。 シミュレートされたデバイスは、ダイレクト メソッドを実行した後、ハブに受信確認を送信します。
ローカル ターミナル ウィンドウで、サンプル Python プロジェクトのルート フォルダーに移動します。 次に、 iot-hub\Quickstarts\simulated-device-2 フォルダーに 移動します。
任意のテキスト エディターで SimulatedDeviceSync.py ファイルを開きます。
CONNECTION_STRING変数の値を、前にメモしたデバイス接続文字列に置き換えます。 次に、変更を SimulatedDeviceSync.py に保存します。ローカル ターミナル ウィンドウで、次のコマンドを実行して、シミュレートされたデバイス アプリケーションに必要なライブラリをインストールします。
pip install azure-iot-deviceローカル ターミナル ウィンドウで、次のコマンドを実行して、シミュレートされたデバイス アプリケーションを実行します。
python SimulatedDeviceSync.py次のスクリーンショットは、シミュレートされたデバイス アプリケーションが IoT ハブにテレメトリを送信するときの出力を示しています。
ダイレクト メソッドを呼び出す
バックエンド アプリケーションは、IoT Hub 上のサービス側エンドポイントに接続します。 アプリケーションは、IoT ハブを介してデバイスに直接メソッド呼び出しを行い、受信確認をリッスンします。 通常、IoT Hub バックエンド アプリケーションはクラウドで実行されます。
別のローカル ターミナル ウィンドウで、サンプル Python プロジェクトのルート フォルダーに移動します。 次に、 iot-hub\Quickstarts\バックエンド アプリケーション フォルダーに移動します。
任意のテキスト エディターで BackEndApplication.py ファイルを開きます。
CONNECTION_STRING変数の値を、前にメモしたサービス接続文字列に置き換えます。 次に、変更を BackEndApplication.py に保存します。ローカル ターミナル ウィンドウで、次のコマンドを実行して、シミュレートされたデバイス アプリケーションに必要なライブラリをインストールします。
pip install azure-iot-hubローカル ターミナル ウィンドウで、次のコマンドを実行してバックエンド アプリケーションを実行します。
python BackEndApplication.py次のスクリーンショットは、アプリケーションがデバイスへのダイレクト メソッド呼び出しを行い、受信確認を受信する際の出力を示しています。
バックエンド アプリケーションを実行すると、シミュレートされたデバイスを実行しているコンソール ウィンドウにメッセージが表示され、メッセージの送信速度が変わります。
リソースをクリーンアップする
次の推奨記事に進む場合は、既に作成したリソースを保持して再利用できます。
それ以外の場合は、課金を回避するために、この記事で作成した Azure リソースを削除できます。
Important
リソース グループを削除すると、元に戻すことができません。 リソース グループとそこに含まれるすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 保持するリソースを含む既存のリソース グループ内に IoT ハブを作成した場合は、リソース グループを削除するのではなく、IoT Hub リソース自体のみを削除してください。
リソース グループを名前で削除するには:
Azure portal にサインインし、 [リソース グループ] を選択します。
[ 任意のフィールドのフィルター] ボックスに、IoT ハブを含むリソース グループの名前を入力します。
結果の一覧で、IoT ハブを含むリソース グループを選択します。
リソース グループの作業ウィンドウで、コマンド バーから [リソース グループの削除 ] を選択します。
リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにもう一度リソース グループの名前を入力し、 [削除] を選択します。 しばらくすると、リソース グループとそこに含まれているすべてのリソースが削除されます。
次のステップ
このクイック スタートでは、サービス アプリケーションからデバイスでダイレクト メソッドを呼び出し、シミュレートされたデバイス アプリケーションのダイレクト メソッド呼び出しに応答しました。
デバイスからクラウドへのメッセージをクラウド内のさまざまな宛先にルーティングする方法については、次のチュートリアルに進んでください。