チュートリアル: ご利用のソリューションに接続されている IoT Plug and Play デバイスを操作する

IoT プラグ アンド プレイを使用すると、基盤となるデバイスの実装に関する知識がなくてもデバイスの機能とやり取りできるので、IoT が簡略化されます。 このチュートリアルでは、C# を使用して、ご利用のソリューションに接続されている IoT プラグ アンド プレイ デバイスに接続して制御する方法について説明します。

前提条件

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

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

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

サンプル コードを使用して SDK リポジトリをクローンする

[チュートリアル: Windows 上で実行されている IoT プラグ アンド プレイのサンプル デバイス アプリケーションを IoT Hub に接続する (C#)] を完了している場合、リポジトリは既にクローンされています。

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

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

デバイス コードをビルドする

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

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

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

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

dotnet run

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

サンプル ソリューションを実行する

IoT プラグ アンド プレイのクイックスタートとチュートリアル用の環境の設定」では、IoT ハブに接続するようにサンプルを構成するための 2 つの環境変数を作成しました。

  • IOTHUB_CONNECTION_STRING: 先ほどメモした IoT ハブ接続文字列。
  • IOTHUB_DEVICE_ID: "my-pnp-device"

このチュートリアルでは、C# で記述されたサンプルの IoT ソリューションを使用して、先ほど設定して実行したサンプル デバイスとやり取りします。

  1. 別のターミナル ウィンドウで、azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermosta フォルダーに移動します。

  2. 次のコマンドを実行して、サービス サンプルをビルドします。

    dotnet build
    
  3. 次のコマンドを実行して、サービス サンプルを実行します。

    dotnet run
    

デバイス ツインを取得する

次のコード スニペットは、サービス アプリケーションがデバイス ツインを取得する方法を示しています。

// Get a Twin and retrieves model Id set by Device client
Twin twin = await s_registryManager.GetTwinAsync(s_deviceId);
s_logger.LogDebug($"Model Id of this Twin is: {twin.ModelId}");

注意

このサンプルでは、IoT Hub サービス クライアントMicrosoft.Azure.Devices.Client 名前空間を使用します。 デジタル ツイン API を含む API の詳細については、サービス開発者ガイドを参照してください。

このコードは、次の出力を生成します。

[09/21/2020 11:26:04]dbug: Thermostat.Program[0]
      Model Id of this Twin is: dtmi:com:example:Thermostat;1

次のコード スニペットは、"パッチ" を使用して、デバイス ツインを介してプロパティを更新する方法を示しています。

// Update the twin
var twinPatch = new Twin();
twinPatch.Properties.Desired[PropertyName] = PropertyValue;
await s_registryManager.UpdateTwinAsync(s_deviceId, twinPatch, twin.ETag);

このコードによって、サービスが targetTemperature プロパティを更新するときに、デバイスから次の出力が生成されます。

[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Property: Received - { "targetTemperature": 60°C }.
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Property: Update - {"targetTemperature": 60°C } is InProgress.

...

[09/21/2020 11:26:17]dbug: Thermostat.ThermostatSample[0]
      Property: Update - {"targetTemperature": 60°C } is Completed.

コマンドを呼び出す

次のコード スニペットは、コマンドを呼び出す方法を示しています。

private static async Task InvokeCommandAsync()
{
    var commandInvocation = new CloudToDeviceMethod(CommandName) { ResponseTimeout = TimeSpan.FromSeconds(30) };

    // Set command payload
    string componentCommandPayload = JsonConvert.SerializeObject(s_dateTime);
    commandInvocation.SetPayloadJson(componentCommandPayload);

    CloudToDeviceMethodResult result = await s_serviceClient.InvokeDeviceMethodAsync(s_deviceId, commandInvocation);

    if (result == null)
    {
        throw new Exception($"Command {CommandName} invocation returned null");
    }

    s_logger.LogDebug($"Command {CommandName} invocation result status is: {result.Status}");
}

このコードによって、サービスが getMaxMinReport コマンドを呼び出すときに、デバイスから次の出力が生成されます。

[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Command: Received - Generating max, min and avg temperature report since 21/09/2020 11:25:58.
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Command: MaxMinReport since 21/09/2020 11:25:58: maxTemp=32, minTemp=32, avgTemp=32, startTime=21/09/2020 11:25:59, endTime=21/09/2020 11:26:04

IoT プラグ アンド プレイを使用すると、基盤となるデバイスの実装に関する知識がなくてもデバイスの機能とやり取りできるので、IoT が簡略化されます。 このチュートリアルでは、Java を使用して、ご利用のソリューションに接続されている IoT プラグ アンド プレイ デバイスに接続して制御する方法について説明します。

前提条件

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

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

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

サンプル コードを使用して SDK リポジトリをクローンする

チュートリアル: Windows 上で実行されている IoT プラグ アンド プレイのサンプル デバイス アプリケーションを IoT Hub に接続する (Java)」を完了している場合、リポジトリは既にクローンされています。

任意のディレクトリでコマンド プロンプトを開きます。 次のコマンドを実行して、Java 用 Microsoft Azure IoT 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"

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

サンプル ソリューションを実行する

IoT プラグ アンド プレイのクイックスタートとチュートリアル用の環境の設定」では、IoT ハブに接続するようにサンプルを構成するための 2 つの環境変数を作成しました。

  • IOTHUB_CONNECTION_STRING: 先ほどメモした IoT ハブ接続文字列。
  • IOTHUB_DEVICE_ID: "my-pnp-device"

このチュートリアルでは、Java で記述されたサンプルの IoT ソリューションを使用して、先ほど設定したサンプル デバイスとやり取りします。

注意

このサンプルでは、IoT Hub サービス クライアントcom.microsoft.azure.sdk.iot.service 名前空間を使用します。 デジタル ツイン API を含む API の詳細については、サービス開発者ガイドを参照してください。

  1. サービス ターミナルとして使用する別のターミナル ウィンドウを開きます。

  2. クローンした Java SDK リポジトリで、service/iot-service-samples/pnp-service-sample/thermostat-service-sample フォルダーに移動します。

  3. サンプル サービス アプリケーションをビルドして実行するには、次のコマンドを実行します。

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

デバイス ツインを取得する

次のコード スニペットは、サービス内でデバイス ツインを取得する方法を示しています。

 // Get the twin and retrieve model Id set by Device client.
DeviceTwinDevice twin = new DeviceTwinDevice(deviceId);
twinClient.getTwin(twin);
System.out.println("Model Id of this Twin is: " + twin.getModelId());

デバイス ツインを更新する

次のコード スニペットは、"パッチ" を使用して、デバイス ツインを介してプロパティを更新する方法を示しています。

String propertyName = "targetTemperature";
double propertyValue = 60.2;
twin.setDesiredProperties(Collections.singleton(new Pair(propertyName, propertyValue)));
twinClient.updateTwin(twin);

デバイス出力には、デバイスがこのプロパティの更新にどのように応答するかが示されます。

コマンドを呼び出す

次のコード スニペットは、デバイスでコマンドを呼び出す方法を示しています。

// The method to invoke for a device without components should be "methodName" as defined in the DTDL.
String methodToInvoke = "getMaxMinReport";
System.out.println("Invoking method: " + methodToInvoke);

Long responseTimeout = TimeUnit.SECONDS.toSeconds(200);
Long connectTimeout = TimeUnit.SECONDS.toSeconds(5);

// Invoke the command.
String commandInput = ZonedDateTime.now(ZoneOffset.UTC).minusMinutes(5).format(DateTimeFormatter.ISO_DATE_TIME);
MethodResult result = methodClient.invoke(deviceId, methodToInvoke, responseTimeout, connectTimeout, commandInput);
if(result == null)
{
    throw new IOException("Method result is null");
}

System.out.println("Method result status is: " + result.getStatus());

デバイス出力には、デバイスがこのコマンドにどのように応答するかが示されます。

IoT プラグ アンド プレイを使用すると、基盤となるデバイスの実装に関する知識がなくてもデバイスの機能とやり取りできるので、IoT が簡略化されます。 このチュートリアルでは、Node.js を使用して、ご利用のソリューションに接続されている IoT プラグ アンド プレイ デバイスに接続して制御する方法について説明します。

前提条件

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

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

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

node --version

サンプル コードを使用して SDK リポジトリをクローンする

Node SDK リポジトリにあるサンプルをクローンします。 任意のフォルダーでターミナル ウィンドウを開きます。 次のコマンドを実行して、Node.js 用 Microsoft Azure IoT SDK の GitHub リポジトリをクローンします。

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

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

環境の設定で、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 を参照してください。

このチュートリアルでは、Node.js に IoT プラグ アンド プレイ デバイスとして記述されたサンプルのサーモスタット デバイスを使用します。 サンプル デバイスを実行するには、次のようにします。

  1. ターミナル ウィンドウを開いて、GitHub からクローンした Microsoft Azure IoT SDK for Node.js リポジトリが格納されているローカル フォルダーに移動します。

  2. このターミナル ウィンドウは、デバイス ターミナルとして使用されます。 クローンしたリポジトリのフォルダーに移動し、/azure-iot-sdk-node/device/samples/javascript フォルダーに移動します。 次のコマンドを実行して、すべての依存関係をインストールします。

    npm install
    
  3. 次のコマンドを使用して、サンプルのサーモスタット デバイスを実行します。

    node pnp_simple_thermostat.js
    
  4. デバイスが情報を送信し、自身がオンラインであると報告したことを示すメッセージが表示されます。 これらのメッセージは、デバイスによってハブへのテレメトリ データの送信が開始され、コマンドとプロパティの更新情報を受信する準備ができたことを示します。 このターミナルは閉じないでください。これは、サービスのサンプルが動作していることを確認するために必要になります。

サンプル ソリューションを実行する

IoT プラグ アンド プレイのクイックスタートとチュートリアル用の環境の設定」では、IoT ハブに接続するようにサンプルを構成するための 2 つの環境変数を作成しました。

  • IOTHUB_CONNECTION_STRING: 先ほどメモした IoT ハブ接続文字列。
  • IOTHUB_DEVICE_ID: "my-pnp-device"

このチュートリアルでは、サンプルの Node.js IoT ソリューションを使用して、先ほど設定して実行したサンプル デバイスとやり取りします。

  1. サービス ターミナルとして使用する別のターミナル ウィンドウを開きます。

  2. クローンした Node SDK リポジトリで、azure-iot-sdk-node/service/samples/javascript フォルダーに移動します。 次のコマンドを実行して、すべての依存関係をインストールします。

    npm install
    

プロパティを読み取る

  1. デバイス ターミナルでサンプルのサーモスタット デバイスを実行したときに、そのオンライン状態を示す次のメッセージが表示されました。

    properties have been reported for component
    sending telemetry message 0...
    
  2. "サービス" ターミナルにアクセスし、次のコマンドを使用して、デバイス情報を読み取るためのサンプルを実行します。

    node twin.js
    
  3. サービス ターミナル出力の、デバイス ツインの応答に注目してください。 デバイスのモデル ID と関連プロパティが報告されているのがわかります。

    Model Id: dtmi:com:example:Thermostat;1
    {
      "deviceId": "my-pnp-device",
      "etag": "AAAAAAAAAAE=",
      "deviceEtag": "Njc3MDMxNDcy",
      "status": "enabled",
      "statusUpdateTime": "0001-01-01T00:00:00Z",
      "connectionState": "Connected",
      "lastActivityTime": "0001-01-01T00:00:00Z",
      "cloudToDeviceMessageCount": 0,
      "authenticationType": "sas",
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      },
      "modelId": "dtmi:com:example:Thermostat;1",
      "version": 4,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2020-10-05T11:35:19.4574755Z"
          },
          "$version": 1
        },
        "reported": {
          "maxTempSinceLastReboot": 31.343640523762232,
          "serialNumber": "123abc",
          "$metadata": {
            "$lastUpdated": "2020-10-05T11:35:23.7339042Z",
            "maxTempSinceLastReboot": {
              "$lastUpdated": "2020-10-05T11:35:23.7339042Z"
            },
            "serialNumber": {
              "$lastUpdated": "2020-10-05T11:35:23.7339042Z"
            }
          },
          "$version": 3
        }
      },
      "capabilities": {
        "iotEdge": false
      },
      "tags": {}
    }
    
  4. 次のスニペットは、デバイス ツインのモデル ID を取得する、twin.js のコードを示しています。

    var registry = Registry.fromConnectionString(connectionString);
    registry.getTwin(deviceId, function(err, twin) {
      if (err) {
        console.error(err.message);
      } else {
        console.log('Model Id: ' + twin.modelId);
        //...
      }
      //...
    }
    

このシナリオでは、Model Id: dtmi:com:example:Thermostat;1が出力されます。

注意

これらのサービス サンプルでは、IoT Hub サービス クライアントからの Registry クラスを使用します。 デジタル ツイン API を含む API の詳細については、サービス開発者ガイドを参照してください。

書き込み可能なプロパティを更新する

  1. コード エディターで、twin.js ファイルを開きます。

  2. サンプル コードを見てみましょう。ここには、デバイス ツインを更新する 2 つの方法が示されています。 最初の方法を使用するには、twinPatch 変数を次のように変更します。

    var twinPatch = {
      tags: {
        city: "Redmond"
      },
      properties: {
        desired: {
          targetTemperature: 42
        }
      }
    };
    

    targetTemperature プロパティは、サーモスタット デバイス モデルの書き込み可能なプロパティとして定義されています。

  3. サービス ターミナルで、次のコマンドを使用して、プロパティを更新するためのサンプルを実行します。

    node twin.js
    
  4. デバイス ターミナルで、デバイスによって更新情報が受信されていることを確認します。

    The following properties will be updated for the default component:
    {
      targetTemperature: {
        value: 42,
        ac: 200,
        ad: 'Successfully executed patch for targetTemperature',
        av: 2
      }
    }
    updated the property
    
  5. サービス ターミナルで、次のコマンドを実行して、プロパティが更新されていることを確認します。

    node twin.js
    
  6. サービス ターミナル出力の reported プロパティ セクションに、更新されたターゲット温度がレポートされているのがわかります。 デバイスでの更新が完了するまで、しばらく時間がかかる場合があります。 デバイスによってプロパティの更新が処理されるまで、この手順は繰り返します。

    "reported": {
      //...
      "targetTemperature": {
        "value": 42,
        "ac": 200,
        "ad": "Successfully executed patch for targetTemperature",
        "av": 4
      },
      //...
    }
    

コマンドを呼び出す

  1. device_method.js ファイルを開き、コードを確認します。

  2. "サービス" ターミナルにアクセスします。 次のコマンドを使用して、コマンドを呼び出すためのサンプルを実行します。

    set IOTHUB_METHOD_NAME=getMaxMinReport
    set IOTHUB_METHOD_PAYLOAD=commandpayload
    node device_method.js
    
  3. サービス ターミナル出力に、次の確認が表示されます。

    getMaxMinReport on my-pnp-device:
    {
      "status": 200,
      "payload": {
        "maxTemp": 23.460596940801928,
        "minTemp": 23.460596940801928,
        "avgTemp": 23.460596940801928,
        "endTime": "2020-10-05T12:48:08.562Z",
        "startTime": "2020-10-05T12:47:54.450Z"
      }
    }
    
  4. デバイス ターミナルで、コマンドが確認されていることがわかります。

    MaxMinReport commandpayload
    Response to method 'getMaxMinReport' sent successfully.
    

IoT プラグ アンド プレイを使用すると、基礎となるデバイスの実装に関する知識がなくてもデバイスのモデルを操作できるため、IoT が簡略化されます。 このチュートリアルでは、Python を使用して、ご利用のソリューションに接続されている IoT プラグ アンド プレイ デバイスに接続して制御する方法について説明します。

前提条件

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

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

python --version

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

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

pip install azure-iot-device

次のコマンドを実行して、azure-iot-hub パッケージをインストールします。

pip install azure-iot-hub

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

環境の設定で、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 プラグ アンド プレイ デバイスとして、Python で記述されたサンプルのサーモスタット デバイスを使用します。 サンプル デバイスを実行するには、次のようにします。

  1. 任意のフォルダーでターミナル ウィンドウを開きます。 次のコマンドを実行して、Azure IoT Device Python SDK GitHub リポジトリをこの場所に複製します。

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  2. このターミナル ウィンドウは、デバイス ターミナルとして使用されます。 クローンしたリポジトリのフォルダーに移動し、azure-iot-sdk-python/samples/pnp フォルダーに移動します。

  3. 次のコマンドを使用して、サンプルのサーモスタット デバイスを実行します。

    python simple_thermostat.py
    
  4. デバイスが情報を送信し、自身がオンラインであると報告したことを示すメッセージが表示されます。 これらのメッセージは、デバイスによってハブへのテレメトリ データの送信が開始され、コマンドとプロパティの更新情報を受信する準備ができたことを示します。 このターミナルは閉じないでください。これは、サービスのサンプルが動作していることを確認するために必要になります。

サンプル ソリューションを実行する

このチュートリアルでは、Python のサンプルの IoT ソリューションを使用して、先ほど設定したサンプル デバイスとやり取りします。

  1. サービス ターミナルとして使用する別のターミナル ウィンドウを開きます。 次のコマンドを実行して、Azure IoT Hub Python SDK GitHub リポジトリをこの場所に複製します。

    git clone https://github.com/Azure/azure-iot-hub-python
    
  2. をインストールする

  3. 複製された Python SDK リポジトリの /azure-iot-hub-python/samples フォルダーに移動します。

  4. registry_manager_pnp_sample.py ファイルを開き、コードを確認します。 このサンプルは、IoTHubRegistryManager クラスを使用して IoT プラグ アンド プレイ デバイスと対話する方法を示しています。

注意

これらのサービス サンプルでは、IoT Hub サービス クライアントからの IoTHubRegistryManager クラスを使用します。 デジタル ツイン API を含む API の詳細については、サービス開発者ガイドを参照してください。

デバイス ツインを取得する

IoT プラグ アンド プレイのクイックスタートとチュートリアル用の環境の設定」では、IoT ハブに接続するようにサンプルを構成するための 2 つの環境変数を作成しました。

  • IOTHUB_CONNECTION_STRING: 先ほどメモした IoT ハブ接続文字列。
  • IOTHUB_DEVICE_ID: "my-pnp-device"

このサンプルを実行するには、サービス ターミナルで次のコマンドを使用します。

set IOTHUB_METHOD_NAME="getMaxMinReport"
set IOTHUB_METHOD_PAYLOAD="hello world"
python registry_manager_pnp_sample.py

注意

このサンプルを Linux 上で実行する場合は、set の代わりに export を使用してください。

出力には、デバイス ツインが示され、そのモデル ID が出力されます。

The Model ID for this device is:
dtmi:com:example:Thermostat;1

次のスニペットは、registry_manager_pnp_sample.py からのサンプル コードを示しています。

    # Create IoTHubRegistryManager
    iothub_registry_manager = IoTHubRegistryManager(iothub_connection_str)

    # Get device twin
    twin = iothub_registry_manager.get_twin(device_id)
    print("The device twin is: ")
    print("")
    print(twin)
    print("")

    # Print the device's model ID
    additional_props = twin.additional_properties
    if "modelId" in additional_props:
        print("The Model ID for this device is:")
        print(additional_props["modelId"])
        print("")

デバイス ツインを更新する

このサンプルは、デバイスの targetTemperature 書き込み可能プロパティを更新する方法を示しています。

    # Update twin
    twin_patch = Twin()
    twin_patch.properties = TwinProperties(
        desired={"targetTemperature": 42}
    )  # this is relevant for the thermostat device sample
    updated_twin = iothub_registry_manager.update_twin(device_id, twin_patch, twin.etag)
    print("The twin patch has been successfully applied")
    print("")

以下の出力を示すデバイス ターミナルで更新が適用されていることを確認できます。

the data in the desired properties patch was: {'targetTemperature': 42, '$version': 2}

サービス ターミナルで、パッチが成功したことを確認します。

The twin patch has been successfully applied

コマンドを呼び出す

サンプルでは、次に、コマンドを呼び出します。

サービス ターミナルで、デバイスからの確認メッセージが表示されます。

The device method has been successfully invoked

デバイス ターミナルで、デバイスがコマンドを受け取ったことを確認します。

Command request received with payload
hello world
Will return the max, min and average temperature from the specified time hello to the current time
Done generating
{"tempReport": {"avgTemp": 34.2, "endTime": "09/07/2020 09:58:11", "maxTemp": 49, "minTemp": 10, "startTime": "09/07/2020 09:56:51"}}

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

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

次のステップ

このチュートリアルでは、IoT Plug and Play デバイスを IoT ソリューションに接続する方法を学習しました。 IoT プラグ アンド プレイ デバイス モデルの詳細については、以下を参照してください。