チュートリアル: Linux または Windows 上で実行されている IoT Plug and Play のサンプル デバイス アプリケーションを IoT Hub に接続する

このチュートリアルでは、IoT プラグ アンド プレイ デバイス アプリケーションのサンプルをビルドし、それをご利用の IoT ハブに接続し、送信されるテレメトリを Azure IoT エクスプローラー ツールを使用して表示する方法を示します。 このサンプル アプリケーションは C で記述され、C 対応の Azure IoT device SDK に含められています。ソリューション ビルダーは、Azure IoT エクスプローラー ツールを使用すれば、デバイス コードを表示しなくても IoT プラグ アンド プレイ デバイスの機能を理解することができます。

Browse code

前提条件

続行する前に、IoT ハブを含め、環境が設定されていることを確認してください。

このチュートリアルは Linux または Windows で実行できます。 このチュートリアルのシェル コマンドは、パス区切り記号を "/" とする Linux 規則に従っています。Windows 方式に従う場合は、必ずこれらの区切り記号を "\" に置き換えてください。

前提条件は、次のように、オペレーティング システムによって異なります。

Linux

このチュートリアルは、Ubuntu Linux を使用することを前提としています。 このチュートリアルの手順は、Ubuntu 18.04 を使用してテストされました。

このチュートリアルを Linux で完了するには、ご利用のローカルの Linux 環境に以下のソフトウェアをインストールする必要があります。

apt-get コマンドを使用して、GCCGitcmake、および必要なすべての依存関係をインストールします。

sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev

cmake のバージョンが 2.8.12 より大きく、GCC のバージョンが 4.4.7 より大きいことを確認します。

cmake --version
gcc --version

Windows

Windows でこのチュートリアルを完了するには、ご利用のローカル Windows 環境に次のソフトウェアをインストールします。

コードのダウンロード

このチュートリアルでは、Azure IoT Hub Device C SDK をクローンしてビルドするために使用できる開発環境を準備します。

任意のディレクトリでコマンド プロンプトを開きます。 次のコマンドを実行して、Azure IoT C SDK およびライブラリの GitHub リポジトリをこの場所にクローンします。

git clone https://github.com/Azure/azure-iot-sdk-c.git
cd azure-iot-sdk-c
git submodule update --init

この操作が完了するまで数分かかることが予想されます。

コードのビルド

コードをビルドして実行するには、Visual Studio を使用するか、コマンドラインで cmake を使用します。

Visual Studio を使用する

  1. クローンされたリポジトリのルート フォルダーを開きます。 数秒後、プロジェクトを実行してデバッグするのに必要なものがすべて Visual Studio の CMake サポートによって作成されます。

  2. Visual Studio の準備ができたら、ソリューション エクスプローラーで、サンプル iothub_client/samples/pnp/pnp_simple_thermostat/ に移動します。

  3. pnp_simple_thermostat.c ファイルを右クリックし、デバッグ構成の追加を選択します。 [既定値] を選択します。

  4. Visual Studio によって、launch.vs.json ファイルが開かれます。 このファイルを、次のスニペットに示すように編集して、必要な環境変数を設定します。 「IoT プラグ アンド プレイのクイックスタートとチュートリアル用の環境の設定」を完了したときに、スコープ ID と登録プライマリ キーを書き留めました。

    {
      "version": "0.2.1",
      "defaults": {},
      "configurations": [
        {
          "type": "default",
          "project": "iothub_client\\samples\\pnp\\pnp_simple_thermostat\\pnp_pnp_simple_thermostat.c",
          "projectTarget": "",
          "name": "pnp_simple_thermostat.c",
          "env": {
            "IOTHUB_DEVICE_SECURITY_TYPE": "DPS",
            "IOTHUB_DEVICE_DPS_ID_SCOPE": "<Your ID scope>",
            "IOTHUB_DEVICE_DPS_DEVICE_ID": "my-pnp-device",
            "IOTHUB_DEVICE_DPS_DEVICE_KEY": "<Your enrollment primary key>"
          }
        }
      ]
    }
    
  5. pnp_simple_thermostat.cファイルを右クリックし、スタートアップ項目として設定を選択します。

  6. Visual Studio でのコードの実行をトレースするには、pnp_simple_thermostat.c ファイルの main 関数にブレークポイントを追加します。

  7. これで、 [デバッグ] メニューからサンプルを実行およびデバッグできるようになりました。

これで、デバイスはコマンドとプロパティの更新情報を受信する準備ができ、ハブへのテレメトリ データの送信が開始されました。 次の手順を完了するまで、サンプルを実行したままにしておきます。

cmake を使用してコードをビルドする

cmake コマンドライン ユーティリティを使用して、コードをビルドします。

  1. デバイス SDK のルート フォルダーに cmake サブディレクトリを作成し、そのフォルダーに移動します。

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    
  2. 次のコマンドを実行して、SDK とサンプルをビルドします。

    cmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF ..
    cmake --build .
    

デバイス サンプルを実行する

環境の設定で、Device Provisioning Service (DPS) を使用して IoT ハブに接続するようにサンプルを構成するための 4 つの環境変数を作成しました。

  • 値が DPSIOTHUB_DEVICE_SECURITY_TYPE
  • DPS の ID スコープを格納する IOTHUB_DEVICE_DPS_ID_SCOPE
  • my-pnp-device を格納する IOTHUB_DEVICE_DPS_DEVICE_ID
  • 登録プライマリ キーを格納する IOTHUB_DEVICE_DPS_DEVICE_KEY
  • global.azure-devices-provisioning.net を格納する IOTHUB_DEVICE_DPS_ENDPOINT

サンプル構成の詳細については、サンプルの readme を参照してください。

IoT ハブにテレメトリを送信する IoT プラグ アンド プレイ デバイスをシミュレートする、SDK のサンプル アプリケーションを実行します。

cmake フォルダーから、実行可能ファイルを含むフォルダーに移動し、そのファイルを実行します。

# Bash
cd iothub_client/samples/pnp/pnp_simple_thermostat/
./pnp_simple_thermostat
REM Windows
cd iothub_client\samples\pnp\pnp_simple_thermostat\Debug
.\pnp_simple_thermostat.exe

ヒント

Windows 上の Visual Studio でコードの実行をトレースするには、main ファイルの main 関数にブレーク ポイントを追加します。

これで、デバイスはコマンドとプロパティの更新情報を受信する準備ができ、ハブへのテレメトリ データの送信が開始されました。 次の手順を完了するまで、サンプルを実行したままにしておきます。

Azure IoT エクスプローラーを使用してコードを確認する

デバイス クライアントのサンプルが開始された後、Azure IoT エクスプローラー ツールを使用して、それが動作していることを確認します。

  1. Azure IoT エクスプローラーを開きます。

  2. IoT ハブへの接続をまだ追加していない場合は、 [IoT ハブ] ページで、 [+ 接続の追加] を選択します。 先ほど作成した IoT ハブの接続文字列を入力して、 [保存] を選択します。

  3. [IoT プラグ アンド プレイの設定] ページで、[+ 追加] > [ローカル フォルダー] の順に選択し、モデル ファイルを保存したローカルの [モデル] フォルダーを選択します。

  4. [IoT ハブ] ページで、操作するハブの名前をクリックします。 IoT ハブに登録されたデバイスの一覧が表示されます。

  5. 先ほど作成したデバイスのデバイス ID をクリックします。

  6. 左側のメニューに、デバイスで利用できるさまざまな種類の情報が表示されます。

  7. [IoT プラグ アンド プレイ コンポーネント] を選択して、デバイスのモデル情報を表示します。

  8. デバイスのさまざまなコンポーネントを表示できます。 既定のコンポーネントと追加のコンポーネント。 操作するコンポーネントを選択します。

  9. [テレメトリ] ページを選択し、 [開始] を選択して、デバイスから送信されているこのコンポーネントのテレメトリ データを表示します。

  10. [プロパティ (読み取り専用)] ページを選択して、このコンポーネントについて報告された読み取り専用プロパティを表示します。

  11. [プロパティ (書き込み可能)] ページを選択して、このコンポーネントに対して更新を行うことができる書き込み可能なプロパティを表示します。

  12. 名前でプロパティを選択し、新しい値を入力して、 [Update desired value](必要な値の更新) を選択します。

  13. 新しい値が表示されるようにするには、[更新] ボタンを選択します。

  14. [コマンド] ページを選択して、このコンポーネントを対象とするすべてのコマンドを表示します。

  15. テストするコマンドを選択します。パラメーターがある場合は、それを設定します。 [コマンドの送信] を選択して、デバイス上でコマンドを呼び出します。 サンプル コードが実行されているコマンド プロンプト ウィンドウで、デバイスがコマンドに応答していることを確認できます。

コードの確認

このサンプルにより、単純な IoT プラグ アンド プレイのサーモスタット デバイスが実装されます。 サーモスタット モデルでは、IoT プラグ アンド プレイ コンポーネントは使用されません。 サーモスタット デバイスの DTDL モデル ファイルにより、デバイスによって実装されるテレメトリ、プロパティ、およびコマンドが定義されます。

デバイス コードでは、IoT ハブに接続するために標準の関数が使用されます。

deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)

デバイスにより、接続要求で実装される DTDL モデルのモデル ID が送信されます。 モデル ID を送信するデバイスは、IoT プラグ アンド プレイ デバイスです。

static const char g_ModelId[] = "dtmi:com:example:Thermostat;1";

...

IoTHubDeviceClient_SetOption(deviceHandle, OPTION_MODEL_ID, modelId)

プロパティの更新、コマンドの処理、テレメトリの送信を行うコードは、IoT プラグ アンド プレイ規則を使用しないデバイスのコードと同じです。

IoT ハブから送信されたペイロード内の JSON オブジェクトを解析するために、このコードでは Parson ライブラリが使用されます。

// JSON parser
#include "parson.h"

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

クイックスタートとチュートリアルを読み終えたら、「リソースを削除する」を参照してください。

このチュートリアルでは、IoT プラグ アンド プレイ デバイス アプリケーションのサンプルをビルドし、それをご利用の IoT ハブに接続し、送信されるテレメトリを Azure IoT エクスプローラー ツールを使用して表示する方法を示します。 このサンプル アプリケーションは C# で記述されており、C# 用 Azure IoT SDK に含まれています。 ソリューション ビルダーは Azure IoT エクスプローラー ツールを使用して、デバイス コードを表示しなくても IoT プラグ アンド プレイ デバイスの機能を理解することができます。

Browse code

前提条件

続行する前に、IoT ハブを含め、環境が設定されていることを確認してください。

このチュートリアルは Linux または Windows で実行できます。 このチュートリアルのシェル コマンドは、パス区切り記号を "/" とする Linux 規則に従っています。Windows 方式に従う場合は、必ずこれらの区切り記号を "\" に置き換えてください。

  • お使いのプラットフォーム用の最新 .NET SDK
  • Git.

コードのダウンロード

このチュートリアルでは、Azure IoT SDK for C# リポジトリをクローンしてビルドするために使用できる開発環境を準備します。

任意のフォルダーでコマンド プロンプトを開きます。 次のコマンドを実行して、Microsoft Azure IoT SDK for C# (.NET) GitHub リポジトリをこの場所にクローンします。

git clone  https://github.com/Azure/azure-iot-sdk-csharp

コードのビルド

これで、サンプルをビルドして実行できます。 次のコマンドを実行して、サンプルをビルドします。

cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build

デバイス サンプルを実行する

サンプルを実行するには、次のコマンドを実行します。

dotnet run

これで、デバイスはコマンドとプロパティの更新情報を受信する準備ができ、ハブへのテレメトリ データの送信が開始されました。 次の手順を完了するまで、サンプルを実行したままにしておきます。

Azure IoT エクスプローラーを使用してコードを確認する

デバイス クライアントのサンプルが開始された後、Azure IoT エクスプローラー ツールを使用して、それが動作していることを確認します。

  1. Azure IoT エクスプローラーを開きます。

  2. IoT ハブへの接続をまだ追加していない場合は、 [IoT ハブ] ページで、 [+ 接続の追加] を選択します。 先ほど作成した IoT ハブの接続文字列を入力して、 [保存] を選択します。

  3. [IoT プラグ アンド プレイの設定] ページで、[+ 追加] > [ローカル フォルダー] の順に選択し、モデル ファイルを保存したローカルの [モデル] フォルダーを選択します。

  4. [IoT ハブ] ページで、操作するハブの名前をクリックします。 IoT ハブに登録されたデバイスの一覧が表示されます。

  5. 先ほど作成したデバイスのデバイス ID をクリックします。

  6. 左側のメニューに、デバイスで利用できるさまざまな種類の情報が表示されます。

  7. [IoT プラグ アンド プレイ コンポーネント] を選択して、デバイスのモデル情報を表示します。

  8. デバイスのさまざまなコンポーネントを表示できます。 既定のコンポーネントと追加のコンポーネント。 操作するコンポーネントを選択します。

  9. [テレメトリ] ページを選択し、 [開始] を選択して、デバイスから送信されているこのコンポーネントのテレメトリ データを表示します。

  10. [プロパティ (読み取り専用)] ページを選択して、このコンポーネントについて報告された読み取り専用プロパティを表示します。

  11. [プロパティ (書き込み可能)] ページを選択して、このコンポーネントに対して更新を行うことができる書き込み可能なプロパティを表示します。

  12. 名前でプロパティを選択し、新しい値を入力して、 [Update desired value](必要な値の更新) を選択します。

  13. 新しい値が表示されるようにするには、[更新] ボタンを選択します。

  14. [コマンド] ページを選択して、このコンポーネントを対象とするすべてのコマンドを表示します。

  15. テストするコマンドを選択します。パラメーターがある場合は、それを設定します。 [コマンドの送信] を選択して、デバイス上でコマンドを呼び出します。 サンプル コードが実行されているコマンド プロンプト ウィンドウで、デバイスがコマンドに応答していることを確認できます。

コードの確認

このサンプルにより、単純な IoT プラグ アンド プレイのサーモスタット デバイスが実装されます。 このサンプルにより実装されるモデルによって、IoT プラグ アンド プレイ コンポーネントは使用されません。 サーモスタット デバイスの Digital Twins Definition Language (DTDL) モデル ファイルにより、デバイスによって実装されるテレメトリ、プロパティ、およびコマンドが定義されます。

デバイス コードにより、標準の CreateFromConnectionString メソッドが使用され、IoT ハブに接続されます。 デバイスにより、接続要求で実装される DTDL モデルのモデル ID が送信されます。 モデル ID を送信するデバイスは、IoT プラグ アンド プレイ デバイスです。

private static void InitializeDeviceClientAsync()
{
  var options = new ClientOptions
  {
    ModelId = ModelId,
  };
  s_deviceClient = DeviceClient.CreateFromConnectionString(s_deviceConnectionString, TransportType.Mqtt, options);
  s_deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
  {
     s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
  });
}

モデル ID は、次のスニペットに示すように、コードに格納されます。

private const string ModelId = "dtmi:com:example:Thermostat;1";

プロパティの更新、コマンドの処理、テレメトリの送信を行うコードは、IoT プラグ アンド プレイ規則を使用しないデバイスのコードと同じです。

IoT ハブから送信されたペイロード内の JSON オブジェクトを解析するために、このサンプルによって JSON ライブラリが使用されます。

using Newtonsoft.Json;

...

DateTime since = JsonConvert.DeserializeObject<DateTime>(request.DataAsJson);

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

クイックスタートとチュートリアルを読み終えたら、「リソースを削除する」を参照してください。

このチュートリアルでは、IoT プラグ アンド プレイ デバイス アプリケーションのサンプルをビルドし、それをご利用の IoT ハブに接続し、送信されるテレメトリを Azure IoT エクスプローラー ツールを使用して表示する方法を示します。 このサンプル アプリケーションは Java で記述されており、Java 用 Azure IoT device SDK に含まれています。 ソリューション ビルダーは Azure IoT エクスプローラー ツールを使用して、デバイス コードを表示しなくても IoT プラグ アンド プレイ デバイスの機能を理解することができます。

Browse code

前提条件

続行する前に、IoT ハブを含め、環境が設定されていることを確認してください。

このチュートリアルは Linux または Windows で実行できます。 このチュートリアルのシェル コマンドは、パス区切り記号を "/" とする Linux 規則に従っています。Windows 方式に従う場合は、必ずこれらの区切り記号を "\" に置き換えてください。

このチュートリアルを完了するには、ローカル開発環境に次のソフトウェアをインストールします。

コードのダウンロード

このチュートリアルでは、Azure IoT Hub Device Java SDK をクローンしてビルドするために使用できる開発環境を準備します。

任意のディレクトリでコマンド プロンプトを開きます。 次のコマンドを実行して、Azure IoT Java SDK およびライブラリの GitHub リポジトリをこの場所にクローンします。

git clone https://github.com/Azure/azure-iot-sdk-java.git

コードのビルド

複製された Java SDK リポジトリ内のサーモスタット サンプルのルート フォルダーに移動し、ビルドします。

cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package

デバイス サンプルを実行する

環境の設定で、Device Provisioning Service (DPS) を使用して IoT ハブに接続するようにサンプルを構成するための 4 つの環境変数を作成しました。

  • 値が DPSIOTHUB_DEVICE_SECURITY_TYPE
  • DPS の ID スコープを格納する IOTHUB_DEVICE_DPS_ID_SCOPE
  • my-pnp-device を格納する IOTHUB_DEVICE_DPS_DEVICE_ID
  • 登録プライマリ キーを格納する IOTHUB_DEVICE_DPS_DEVICE_KEY
  • global.azure-devices-provisioning.net を格納する IOTHUB_DEVICE_DPS_ENDPOINT

サンプル構成の詳細については、サンプルの readme を参照してください。

/device/iot-device-samples/pnp-device-sample/thermostat-device-sample フォルダーからアプリケーションを実行します。

mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"

これで、デバイスはコマンドとプロパティの更新情報を受信する準備ができ、ハブへのテレメトリ データの送信が開始されました。 次の手順を完了するまで、サンプルを実行したままにしておきます。

Azure IoT エクスプローラーを使用してコードを確認する

デバイス クライアントのサンプルが開始された後、Azure IoT エクスプローラー ツールを使用して、それが動作していることを確認します。

  1. Azure IoT エクスプローラーを開きます。

  2. IoT ハブへの接続をまだ追加していない場合は、 [IoT ハブ] ページで、 [+ 接続の追加] を選択します。 先ほど作成した IoT ハブの接続文字列を入力して、 [保存] を選択します。

  3. [IoT プラグ アンド プレイの設定] ページで、[+ 追加] > [ローカル フォルダー] の順に選択し、モデル ファイルを保存したローカルの [モデル] フォルダーを選択します。

  4. [IoT ハブ] ページで、操作するハブの名前をクリックします。 IoT ハブに登録されたデバイスの一覧が表示されます。

  5. 先ほど作成したデバイスのデバイス ID をクリックします。

  6. 左側のメニューに、デバイスで利用できるさまざまな種類の情報が表示されます。

  7. [IoT プラグ アンド プレイ コンポーネント] を選択して、デバイスのモデル情報を表示します。

  8. デバイスのさまざまなコンポーネントを表示できます。 既定のコンポーネントと追加のコンポーネント。 操作するコンポーネントを選択します。

  9. [テレメトリ] ページを選択し、 [開始] を選択して、デバイスから送信されているこのコンポーネントのテレメトリ データを表示します。

  10. [プロパティ (読み取り専用)] ページを選択して、このコンポーネントについて報告された読み取り専用プロパティを表示します。

  11. [プロパティ (書き込み可能)] ページを選択して、このコンポーネントに対して更新を行うことができる書き込み可能なプロパティを表示します。

  12. 名前でプロパティを選択し、新しい値を入力して、 [Update desired value](必要な値の更新) を選択します。

  13. 新しい値が表示されるようにするには、[更新] ボタンを選択します。

  14. [コマンド] ページを選択して、このコンポーネントを対象とするすべてのコマンドを表示します。

  15. テストするコマンドを選択します。パラメーターがある場合は、それを設定します。 [コマンドの送信] を選択して、デバイス上でコマンドを呼び出します。 サンプル コードが実行されているコマンド プロンプト ウィンドウで、デバイスがコマンドに応答していることを確認できます。

コードの確認

このサンプルにより、単純な IoT プラグ アンド プレイのサーモスタット デバイスが実装されます。 このサンプルにより実装されるモデルによって、IoT プラグ アンド プレイ コンポーネントは使用されません。 サーモスタット デバイスの DTDL モデル ファイルにより、デバイスによって実装されるテレメトリ、プロパティ、およびコマンドが定義されます。

デバイス コードによって、IoT ハブに接続するために標準の DeviceClient クラスが使用されます。 デバイスにより、接続要求で実装される DTDL モデルのモデル ID が送信されます。 モデル ID を送信するデバイスは、IoT プラグ アンド プレイ デバイスです。

private static void initializeDeviceClient() throws URISyntaxException, IOException {
    ClientOptions options = new ClientOptions();
    options.setModelId(MODEL_ID);
    deviceClient = new DeviceClient(deviceConnectionString, protocol, options);

    deviceClient.registerConnectionStatusChangeCallback((status, statusChangeReason, throwable, callbackContext) -> {
        log.debug("Connection status change registered: status={}, reason={}", status, statusChangeReason);

        if (throwable != null) {
            log.debug("The connection status change was caused by the following Throwable: {}", throwable.getMessage());
            throwable.printStackTrace();
        }
    }, deviceClient);

    deviceClient.open();
}

モデル ID は、次のスニペットに示すように、コードに格納されます。

private static final String MODEL_ID = "dtmi:com:example:Thermostat;1";

プロパティの更新、コマンドの処理、テレメトリの送信を行うコードは、IoT プラグ アンド プレイ規則を使用しないデバイスのコードと同じです。

IoT ハブから送信されたペイロード内の JSON オブジェクトを解析するために、このサンプルによって JSON ライブラリが使用されます。

import com.google.gson.Gson;

...

Date since = new Gson().fromJson(jsonRequest, Date.class);

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

クイックスタートとチュートリアルを読み終えたら、「リソースを削除する」を参照してください。

このチュートリアルでは、IoT プラグ アンド プレイ デバイス アプリケーションのサンプルをビルドし、それをご利用の IoT ハブに接続し、送信されるテレメトリを Azure IoT エクスプローラー ツールを使用して表示する方法を示します。 このサンプル アプリケーションは Node.js で記述されており、Node.js 用 Azure IoT device SDK に含まれています。 ソリューション ビルダーは Azure IoT エクスプローラー ツールを使用して、デバイス コードを表示しなくても IoT プラグ アンド プレイ デバイスの機能を理解することができます。

Browse code

前提条件

続行する前に、IoT ハブを含め、環境が設定されていることを確認してください。

このチュートリアルは Linux または Windows で実行できます。 このチュートリアルのシェル コマンドは、パス区切り記号を "/" とする Linux 規則に従っています。Windows 方式に従う場合は、必ずこれらの区切り記号を "\" に置き換えてください。

このチュートリアルを完了するには、開発用コンピューターに Node.js が必要です。 nodejs.org から、複数のプラットフォームに対応した最新の推奨バージョンをダウンロードできます。

開発コンピューターに現在インストールされている Node.js のバージョンは、次のコマンドを使って確認できます。

node --version

コードのダウンロード

このチュートリアルでは、Node.js 用 Azure IoT Hub Device SDK をクローンしてビルドするために使用できる開発環境を準備します。

任意のディレクトリでコマンド プロンプトを開きます。 次のコマンドを実行して、Node.js 用 Microsoft Azure IoT SDK GitHub リポジトリをこの場所にクローンします。

git clone https://github.com/Azure/azure-iot-sdk-node

必要なライブラリをインストールする

デバイス SDK を使用して、含まれているサンプル コードをビルドします。 ビルドしたアプリケーションでは、IoT ハブに接続するデバイスのシミュレーションが行われます。 アプリケーションによりテレメトリとプロパティが送信され、コマンドが受け取られます。

  1. ローカル ターミナル ウィンドウで、クローンしたリポジトリのフォルダーに移動し、 /azure-iot-sdk-node/device/samples/javascript フォルダーに移動します。 次に、次のコマンドを実行して、必要なライブラリをインストールします。

    npm install
    

サンプル デバイスを実行する

このサンプルにより、単純な IoT プラグ アンド プレイのサーモスタット デバイスが実装されます。 このサンプルにより実装されるモデルによって、IoT プラグ アンド プレイ コンポーネントは使用されません。 サーモスタット デバイスの DTDL モデル ファイルにより、デバイスによって実装されるテレメトリ、プロパティ、およびコマンドが定義されます。

pnp_simple_thermostat.js ファイルを開きます。 このファイルでは、以下の方法を確認できます。

  1. 必要なインターフェイスをインポートする。
  2. プロパティ更新ハンドラーとコマンド ハンドラーを記述する。
  3. 必要なプロパティの修正プログラムを処理し、テレメトリを送信する。
  4. 必要に応じて、Azure Device Provisioning Service (DPS) を使用して、デバイスをプロビジョニングする。

main 関数では、すべてがどのようにまとめられているかを確認できます。

  1. 接続文字列からデバイスを作成するか、DPS を使用してデバイスをプロビジョニングします。
  2. IoT プラグ アンド プレイのデバイス モデルを指定するには、modelID オプションを使用します。
  3. コマンド ハンドラーを有効にします。
  4. デバイスからハブにテレメトリを送信します。
  5. デバイス ツインを取得し、レポートされたプロパティを更新します。
  6. 必要なプロパティ更新ハンドラーを有効にします。

環境の設定で、Device Provisioning Service (DPS) を使用して IoT ハブに接続するようにサンプルを構成するための 4 つの環境変数を作成しました。

  • 値が DPSIOTHUB_DEVICE_SECURITY_TYPE
  • DPS の ID スコープを格納する IOTHUB_DEVICE_DPS_ID_SCOPE
  • my-pnp-device を格納する IOTHUB_DEVICE_DPS_DEVICE_ID
  • 登録プライマリ キーを格納する IOTHUB_DEVICE_DPS_DEVICE_KEY
  • global.azure-devices-provisioning.net を格納する IOTHUB_DEVICE_DPS_ENDPOINT

サンプル構成の詳細については、サンプルの readme を参照してください。

サンプル アプリケーションを実行して、IoT ハブにテレメトリを送信する IoT プラグ アンド プレイ デバイスをシミュレートします。 サンプル アプリケーションを実行するには、次のコマンドを使用します。

node pnp_simple_thermostat.js

次の出力が表示されます。これは、デバイスがハブへの利用統計情報の送信を開始し、コマンドとプロパティの更新情報を受信する準備ができたことを示します。

Device confirmation messages

次の手順を完了するまで、サンプルを実行したままにしておきます。

Azure IoT エクスプローラーを使用してコードを確認する

デバイス クライアントのサンプルが開始された後、Azure IoT エクスプローラー ツールを使用して、それが動作していることを確認します。

  1. Azure IoT エクスプローラーを開きます。

  2. IoT ハブへの接続をまだ追加していない場合は、 [IoT ハブ] ページで、 [+ 接続の追加] を選択します。 先ほど作成した IoT ハブの接続文字列を入力して、 [保存] を選択します。

  3. [IoT プラグ アンド プレイの設定] ページで、[+ 追加] > [ローカル フォルダー] の順に選択し、モデル ファイルを保存したローカルの [モデル] フォルダーを選択します。

  4. [IoT ハブ] ページで、操作するハブの名前をクリックします。 IoT ハブに登録されたデバイスの一覧が表示されます。

  5. 先ほど作成したデバイスのデバイス ID をクリックします。

  6. 左側のメニューに、デバイスで利用できるさまざまな種類の情報が表示されます。

  7. [IoT プラグ アンド プレイ コンポーネント] を選択して、デバイスのモデル情報を表示します。

  8. デバイスのさまざまなコンポーネントを表示できます。 既定のコンポーネントと追加のコンポーネント。 操作するコンポーネントを選択します。

  9. [テレメトリ] ページを選択し、 [開始] を選択して、デバイスから送信されているこのコンポーネントのテレメトリ データを表示します。

  10. [プロパティ (読み取り専用)] ページを選択して、このコンポーネントについて報告された読み取り専用プロパティを表示します。

  11. [プロパティ (書き込み可能)] ページを選択して、このコンポーネントに対して更新を行うことができる書き込み可能なプロパティを表示します。

  12. 名前でプロパティを選択し、新しい値を入力して、 [Update desired value](必要な値の更新) を選択します。

  13. 新しい値が表示されるようにするには、[更新] ボタンを選択します。

  14. [コマンド] ページを選択して、このコンポーネントを対象とするすべてのコマンドを表示します。

  15. テストするコマンドを選択します。パラメーターがある場合は、それを設定します。 [コマンドの送信] を選択して、デバイス上でコマンドを呼び出します。 サンプル コードが実行されているコマンド プロンプト ウィンドウで、デバイスがコマンドに応答していることを確認できます。

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

クイックスタートとチュートリアルを読み終えたら、「リソースを削除する」を参照してください。

このチュートリアルでは、IoT プラグ アンド プレイ デバイス アプリケーションのサンプルをビルドし、それをご利用の IoT ハブに接続し、送信されるテレメトリを Azure IoT エクスプローラー ツールを使用して表示する方法を示します。 このサンプル アプリケーションは Python 用に記述されており、Python 用 Azure IoT Hub デバイス SDK に含まれています。 ソリューション ビルダーは Azure IoT エクスプローラー ツールを使用して、デバイス コードを表示しなくても IoT プラグ アンド プレイ デバイスの機能を理解することができます。

Browse code

前提条件

続行する前に、IoT ハブを含め、環境が設定されていることを確認してください。

このチュートリアルを完了するには、開発用コンピューターに Python をインストールする必要があります。 現在の Python バージョンの要件については、Azure IoT Python SDK を確認してください。 次のコマンドを使用して、ご利用の Python のバージョンを確認できます。

python --version

python.org から、複数のプラットフォームに対応した最新の推奨バージョンをダウンロードできます。

ローカルの Python 環境で、次のようにパッケージをインストールします。

pip install azure-iot-device

Python SDK IoT リポジトリをクローンします。

git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python

サンプル デバイスを実行する

azure-iot-sdk-python/samples/pnp フォルダーには、IoT プラグ アンド プレイ デバイスのサンプル コードが含まれています。 このチュートリアルでは、simple_thermostat.py ファイルを使用します。 このサンプル コードでは、IoT プラグ アンド プレイ互換デバイスを実装し、Azure IoT Python デバイス クライアント ライブラリを使用します。

テキスト エディターで simple_thermostat.py ファイルを開きます。 次の点に注意してください。

  1. サーモスタットを一意に表す単一のデバイス ツイン モデル識別子 (DTMI) を定義しています。 DTMI は、ユーザーに認識されている必要があり、デバイス実装のシナリオによって異なります。 現在のサンプルでは、モデルは、温度の監視に関連付けられたテレメトリ、プロパティ、およびコマンドを持つサーモスタットを表します。

  2. コマンド ハンドラーの実装を定義するための関数があります。 これらのハンドラーを記述して、コマンド要求に対してデバイスがどのように応答するかを定義します。

  3. コマンド応答を定義するための関数があります。 コマンド応答関数を作成して、IoT ハブに応答を返送します。

  4. アプリケーションを終了するための入力キーボード リスナー関数を定義しています。

  5. main 関数があります。 main 関数は、以下のことを行います。

    1. デバイス SDK を使用してデバイス クライアントを作成し、IoT ハブに接続します。

    2. プロパティを更新します。 Thermostat モデルでは、Thermostatの 2 つのプロパティとしてtargetTemperaturemaxTempSinceLastRebootが定義されています。 プロパティは、device_client で定義されている patch_twin_reported_properties メソッドを使用して更新されます。

    3. execute_command_listener 関数を使用して、コマンド要求のリッスンが開始されます。 この関数により、サービスからのコマンドをリッスンするように "リスナー" が設定されます。 リスナーを設定するときに、method_nameuser_command_handlercreate_user_response_handler を指定します。

      • user_command_handler 関数により、コマンドを受信したときにデバイスによって行われる必要がある内容が定義されます。
      • create_user_response_handler 関数により、コマンドが正常に実行されたときに IoT ハブに送信される応答が作成されます。 この応答はポータルで確認できます。
    4. テレメトリの送信が開始されます。 pnp_methods.py ファイルには、pnp_send_telemetry が定義されています。 サンプル コードでは、ループを使用して、8 秒ごとにこの関数を呼び出しています。

    5. ユーザーが Q または q キーを押したら、すべてのリスナーとタスクを無効にし、ループを終了します。

環境の設定で、Device Provisioning Service (DPS) を使用して IoT ハブに接続するようにサンプルを構成するための 4 つの環境変数を作成しました。

  • 値が DPSIOTHUB_DEVICE_SECURITY_TYPE
  • DPS の ID スコープを格納する IOTHUB_DEVICE_DPS_ID_SCOPE
  • my-pnp-device を格納する IOTHUB_DEVICE_DPS_DEVICE_ID
  • 登録プライマリ キーを格納する IOTHUB_DEVICE_DPS_DEVICE_KEY
  • global.azure-devices-provisioning.net を格納する IOTHUB_DEVICE_DPS_ENDPOINT

サンプル構成の詳細については、サンプルの readme を参照してください。

これでコードを見終えたので、次のコマンドを使用してサンプルを実行します。

python simple_thermostat.py

次の出力が表示されます。これは、デバイスによってハブにテレメトリ データが送信され、コマンドとプロパティの更新情報を受信する準備ができたことを示します。

Listening for command requests and property updates
Press Q to quit
Sending telemetry for temperature
Sent message

次の手順を完了するまで、サンプルを実行したままにしておきます。

Azure IoT エクスプローラーを使用してコードを確認する

デバイス クライアントのサンプルが開始された後、Azure IoT エクスプローラー ツールを使用して、それが動作していることを確認します。

  1. Azure IoT エクスプローラーを開きます。

  2. IoT ハブへの接続をまだ追加していない場合は、 [IoT ハブ] ページで、 [+ 接続の追加] を選択します。 先ほど作成した IoT ハブの接続文字列を入力して、 [保存] を選択します。

  3. [IoT プラグ アンド プレイの設定] ページで、[+ 追加] > [ローカル フォルダー] の順に選択し、モデル ファイルを保存したローカルの [モデル] フォルダーを選択します。

  4. [IoT ハブ] ページで、操作するハブの名前をクリックします。 IoT ハブに登録されたデバイスの一覧が表示されます。

  5. 先ほど作成したデバイスのデバイス ID をクリックします。

  6. 左側のメニューに、デバイスで利用できるさまざまな種類の情報が表示されます。

  7. [IoT プラグ アンド プレイ コンポーネント] を選択して、デバイスのモデル情報を表示します。

  8. デバイスのさまざまなコンポーネントを表示できます。 既定のコンポーネントと追加のコンポーネント。 操作するコンポーネントを選択します。

  9. [テレメトリ] ページを選択し、 [開始] を選択して、デバイスから送信されているこのコンポーネントのテレメトリ データを表示します。

  10. [プロパティ (読み取り専用)] ページを選択して、このコンポーネントについて報告された読み取り専用プロパティを表示します。

  11. [プロパティ (書き込み可能)] ページを選択して、このコンポーネントに対して更新を行うことができる書き込み可能なプロパティを表示します。

  12. 名前でプロパティを選択し、新しい値を入力して、 [Update desired value](必要な値の更新) を選択します。

  13. 新しい値が表示されるようにするには、[更新] ボタンを選択します。

  14. [コマンド] ページを選択して、このコンポーネントを対象とするすべてのコマンドを表示します。

  15. テストするコマンドを選択します。パラメーターがある場合は、それを設定します。 [コマンドの送信] を選択して、デバイス上でコマンドを呼び出します。 サンプル コードが実行されているコマンド プロンプト ウィンドウで、デバイスがコマンドに応答していることを確認できます。

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

クイックスタートとチュートリアルを読み終えたら、「リソースを削除する」を参照してください。

"制約のあるデバイス" 向けの開発を行っている場合、IoT プラグ アンド プレイを以下と共に使用できます。

この記事には、これらの制約のあるシナリオに向けたリンクとリソースが含まれています。

必須コンポーネント

以下のサンプルの多くは、特定のハードウェア デバイスが必要であり、前提条件はサンプルごとに異なります。 詳細な前提条件、構成、ビルド手順については、関連するサンプルへのリンクをたどってください。

埋め込み C 用の Azure SDK を使用する

埋め込み C 用の SDK には、IoT プラグ アンド プレイ規則の使用を含め、制約のあるデバイスを Azure IoT サービスに接続するための軽量ソリューションが用意されています。 下記のリンク先には、MCU ベースのデバイス用のサンプルと、教育およびデバッグ目的のサンプルが含まれます。

MCU ベースのデバイスを使用する

埋め込み C 用の SDK、Device Provisioning Service、IoT プラグ アンド プレイを MCU で使用する完全なエンド ツー エンドのチュートリアルについては、IoT Hub Device Provisioning Service を介して Azure に接続するための PIC-IoT Wx 開発ボードの用途変更に関するページをご覧ください。

導入用サンプル

埋め込み C 用の SDK のリポジトリには、IoT プラグ アンド プレイの使用方法を示すいくつかのサンプルが含まれています。

Note

これらのサンプルでは、教育およびデバッグの目的で、Windows および Linux での実行が示されます。 運用環境のシナリオでは、サンプルは制約のあるデバイスのみを対象としています。

Azure RTOS の使用

Azure RTOS には、Azure IoT クラウド サービスにネイティブ接続を追加する軽量なレイヤーが含まれています。 このレイヤーでは、Azure RTOS の高度な機能を使用しながら、制約のあるデバイスを Azure IoT に接続するための簡単なメカニズムが提供されます。 詳細については、「Microsoft Azure RTOS とは」を参照してください。

ツールチェーン

Azure RTOS のサンプルは、さまざまな種類の IDE とツールチェーンの組み合わせで提供されています。次に例を示します。

サンプル

Azure RTOS と IoT プラグ アンド プレイによってさまざまなデバイスの使用を開始する方法を示すサンプルを次の表に示します。

Manufacturer Device サンプル
Microchip ATSAME54-XPRO GCC/CMakeIARMPLAB
MXCHIP AZ3166 GCC/CMake
NXP MIMXRT1060-EVK GCC/CMakeIARMCUXpresso
STMicroelectronics 32F746GDISCOVERY IARSTM32Cube
STMicroelectronics B-L475E-IOT01 GCC/CMakeIARSTM32Cube
STMicroelectronics B-L4S5I-IOT01 GCC/CMakeIARSTM32Cube

次のステップ

このチュートリアルでは、IoT Plug and Play デバイスを IoT ハブに接続する方法を学習しました。 ご利用の IoT プラグ アンド プレイ デバイスとやりとりするソリューションを構築する方法の詳細については、次を参照してください。