Didacticiel : interagir avec un appareil IoT Plug-and-Play connecté à votre solution

IoT Plug-and-Play simplifie l’IoT en vous permettant d’interagir avec les fonctionnalités d’un appareil sans avoir connaissance de l’implémentation de l’appareil sous-jacent. Ce tutoriel vous montre comment utiliser C# pour vous connecter à un appareil IoT Plug-and-Play connecté à votre solution et le contrôler.

Prérequis

Avant de continuer, assurez-vous d’avoir configuré votre environnement, y compris votre hub IoT.

Vous pouvez exécuter ce tutoriel sur Linux ou Windows. Dans ce tutoriel, les commandes de l’interpréteur de commandes suivent la convention Linux des séparateurs de chemin « / ». Si vous suivez ce guide sur Windows, veillez à remplacer les séparateurs par « \ ».

Clonez le référentiel SDK avec l’exemple de code

Si vous avez terminé Démarrage rapide : Connecter un exemple d’application pour appareil IoT Plug-and-Play s’exécutant sur Windows à IoT Hub (C#), vous avez déjà cloné le dépôt.

Clonez les exemples à partir du dépôt GitHub Azure IoT SDK pour C#. Ouvrez une invite de commandes dans un dossier de votre choix. Exécutez la commande suivante pour cloner le dépôt GitHub Microsoft Azure IoT SDK pour .NET :

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

Générer le code d’appareil

Vous pouvez maintenant générer l’exemple d’appareil et l’exécuter. Exécutez les commandes suivantes pour générer l’échantillon :

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

Exécuter l’exemple d’appareil

Pour exécuter l’exemple, exécutez la commande suivante :

dotnet run

L’appareil, désormais prêt à recevoir des commandes et des mises à jour de propriétés, a commencé à envoyer des données de télémétrie au hub. Laissez l’exemple s’exécuter pendant que vous effectuez les étapes suivantes.

Exécuter l’exemple de solution

Dans Configurer votre environnement pour les guides de démarrage rapide et tutoriels IoT Plug-and-Play, vous avez créé deux variables d’environnement pour configurer l’exemple afin qu’il se connecte à votre hub IoT :

  • IOTHUB_CONNECTION_STRING : la chaîne de connexion de hub IoT que vous avez notée précédemment.
  • IOTHUB_DEVICE_ID : "my-pnp-device".

Dans ce tutoriel, vous utilisez un exemple de solution IoT écrit en C# pour interagir avec l’exemple d’appareil que vous venez de configurer et d’exécuter.

  1. Dans une autre fenêtre de terminal, accédez au dossier azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat .

  2. Exécutez la commande suivante pour générer l’exemple de service :

    dotnet build
    
  3. Exécutez la commande suivante pour exécuter l’exemple de service :

    dotnet run
    

Obtenir un jumeau d’appareil

L’extrait de code suivant montre comment l’application de service récupère le jumeau d’appareil :

// 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}");

Notes

Cet exemple utilise l’espace de noms Microsoft.Azure.Devices.Client à partir du client du service IoT Hub. Pour en savoir plus sur les API, y compris l’API Digital Twins, consultez le Guide du développeur sur les services.

Ce code génère la sortie suivante :

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

L’extrait de code suivant montre comment utiliser un correctif pour mettre à jour les propriétés par le biais du jumeau d’appareil :

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

Ce code génère la sortie suivante à partir de l’appareil lorsque le service met à jour la propriété 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.

Appeler une commande

L’exemple de code suivant montre comment appeler une commande :

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}");
}

Ce code génère la sortie suivante à partir de l’appareil lorsque le service appelle la commande 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 Plug-and-Play simplifie l’IoT en vous permettant d’interagir avec les fonctionnalités d’un appareil sans avoir connaissance de l’implémentation de l’appareil sous-jacent. Ce tutoriel vous montre comment utiliser Java pour vous connecter à un appareil IoT Plug-and-Play connecté à votre solution et le contrôler.

Prérequis

Avant de continuer, assurez-vous d’avoir configuré votre environnement, y compris votre hub IoT.

Vous pouvez exécuter ce tutoriel sur Linux ou Windows. Dans ce tutoriel, les commandes de l’interpréteur de commandes suivent la convention Linux des séparateurs de chemin « / ». Si vous suivez ce guide sur Windows, veillez à remplacer les séparateurs par « \ ».

Pour suivre ce tutoriel, installez le logiciel suivant dans votre environnement local :

Clonez le référentiel SDK avec l’exemple de code

Si vous avez terminé Tutoriel : Connecter un exemple d’application pour appareil IoT Plug-and-Play s’exécutant sur Windows à IoT Hub (Java), vous avez déjà cloné le référentiel.

Ouvrez une invite de commandes dans le répertoire de votre choix. Exécutez la commande suivante pour cloner le dépôt GitHub SDK Microsoft Azure IoT pour Java à cet emplacement :

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

Créer et exécuter l’exemple d’appareil

Accédez au dossier racine de l’exemple de thermostat dans le référentiel du SDK Java cloné et générez-le :

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

Dans Configurer votre environnement, vous avez créé quatre variables d’environnement pour configurer l’exemple afin d’utiliser le service Device Provisioning Service (DPS) pour vous connecter à votre hub IoT :

  • IOTHUB_DEVICE_SECURITY_TYPE avec la valeur DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE avec l’étendue ID DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID avec la valeur my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY avec la clé primaire d’inscription.
  • IOTHUB_DEVICE_DPS_ENDPOINT avec la valeur global.azure-devices-provisioning.net.

Pour en savoir plus sur l’exemple de configuration, consultez l’exemple de fichier Lisez-moi.

À partir du dossier /device/iot-device-samples/pnp-device-sample/thermostat-device-sample , exécutez l’application :

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

L’appareil, désormais prêt à recevoir des commandes et des mises à jour de propriétés, a commencé à envoyer des données de télémétrie au hub. Laissez l’exemple s’exécuter pendant que vous effectuez les étapes suivantes.

Exécuter l’exemple de solution

Dans Configurer votre environnement pour les guides de démarrage rapide et tutoriels IoT Plug-and-Play, vous avez créé deux variables d’environnement pour configurer l’exemple afin qu’il se connecte à votre hub IoT :

  • IOTHUB_CONNECTION_STRING : la chaîne de connexion de hub IoT que vous avez notée précédemment.
  • IOTHUB_DEVICE_ID : "my-pnp-device".

Dans ce tutoriel, vous utilisez un exemple de solution IoT écrit en Java pour interagir avec l’exemple d’appareil que vous venez de configurer.

Notes

Cet exemple utilise l’espace de noms com.microsoft.azure.sdk.iot.service à partir du client du service IoT Hub. Pour en savoir plus sur les API, y compris l’API Digital Twins, consultez le Guide du développeur sur les services.

  1. Ouvrez une autre fenêtre de terminal à utiliser comme terminal service.

  2. Dans le dépôt du kit SDK Java cloné, accédez au dossier service/iot-service-samples/pnp-service-sample/thermostat-service-sample.

  3. Pour générer et exécuter l’exemple d’application de service, exécutez la commande suivante :

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

Obtenir un jumeau d’appareil

L’extrait de code suivant montre comment récupérer le jumeau d’appareil dans le service :

 // 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());

Mettre à jour un jumeau d’appareil

L’extrait de code suivant vous montre comment utiliser un correctif pour mettre à jour les propriétés par le biais du jumeau d’appareil :

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

La sortie de l’appareil montre comment l’appareil répond à cette mise à jour de propriété.

Appeler une commande

L’extrait de code suivant montre comment appeler une commande sur l’appareil :

// 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());

La sortie de l’appareil montre comment l’appareil répond à cette commande.

IoT Plug-and-Play simplifie l’IoT en vous permettant d’interagir avec les fonctionnalités d’un appareil sans avoir connaissance de l’implémentation de l’appareil sous-jacent. Ce tutoriel vous montre comment utiliser Node.js pour vous connecter à un appareil IoT Plug-and-Play connecté à votre solution et le contrôler.

Prérequis

Avant de continuer, assurez-vous d’avoir configuré votre environnement, y compris votre hub IoT.

Pour suivre ce tutoriel, vous avez besoin de Node.js sur votre machine de développement. Vous pouvez télécharger la dernière version recommandée pour plusieurs plateformes à partir de nodejs.org.

Vous pouvez vérifier la version actuelle de Node.js sur votre machine de développement à l’aide de la commande suivante :

node --version

Clonez le référentiel SDK avec l’exemple de code

Clonez les exemples à partir du dépôt SDK Node. Ouvrez une fenêtre de terminal dans un dossier de votre choix. Exécutez la commande suivante pour cloner le dépôt GitHub SDK Microsoft Azure IoT pour Node.js :

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

Exécuter l’exemple d’appareil

Dans Configurer votre environnement, vous avez créé quatre variables d’environnement pour configurer l’exemple afin d’utiliser le service Device Provisioning Service (DPS) pour vous connecter à votre hub IoT :

  • IOTHUB_DEVICE_SECURITY_TYPE avec la valeur DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE avec l’étendue ID DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID avec la valeur my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY avec la clé primaire d’inscription.
  • IOTHUB_DEVICE_DPS_ENDPOINT avec la valeur global.azure-devices-provisioning.net.

Pour en savoir plus sur l’exemple de configuration, consultez l’exemple de fichier Lisez-moi.

Dans ce tutoriel, vous utilisez un exemple de thermostat écrit en Node.js en tant qu’appareil IoT Plug-and-Play. Pour exécuter l’exemple d’appareil :

  1. Ouvrez une fenêtre de terminal, puis accédez au dossier local contenant le référentiel SDK Microsoft Azure IoT pour Node.js que vous avez cloné depuis GitHub.

  2. Cette fenêtre de terminal est utilisée en tant que terminal device. Accédez au dossier de votre dépôt cloné, puis accédez au dossier /azure-iot-sdk-node/device/samples/javascript. Installez toutes les dépendances en exécutant la commande suivante :

    npm install
    
  3. Pour exécutez l’exemple d’appareil à thermostat, utilisez la commande suivante :

    node pnp_simple_thermostat.js
    
  4. Des messages s’affichent pour indiquer que l’appareil a envoyé des informations et qu’il s’est signalé comme étant en ligne. Ces messages indiquent que l’appareil a commencé à envoyer des données de télémétrie au hub et est maintenant prêt à recevoir des commandes et des mises à jour de propriétés. Ne fermez pas ce terminal. Vous en aurez besoin pour confirmer que l’exemple de service fonctionne également.

Exécuter l’exemple de solution

Dans Configurer votre environnement pour les guides de démarrage rapide et tutoriels IoT Plug-and-Play, vous avez créé deux variables d’environnement pour configurer l’exemple afin qu’il se connecte à votre hub IoT :

  • IOTHUB_CONNECTION_STRING : la chaîne de connexion de hub IoT que vous avez notée précédemment.
  • IOTHUB_DEVICE_ID : "my-pnp-device".

Dans ce tutoriel, vous utilisez un exemple de solution Node.js IoT pour interagir avec l’exemple d’appareil que vous venez de configurer et d’exécuter.

  1. Ouvrez une autre fenêtre de terminal à utiliser comme terminal service.

  2. Dans le dépôt SDK Node cloné, accédez au dossier azure-iot-sdk-node/service/samples/javascript. Installez toutes les dépendances en exécutant la commande suivante :

    npm install
    

Lire une propriété

  1. Lorsque vous avez exécuté l’exemple de thermostat dans le terminal de l’​​appareil, vous avez vu les messages suivants indiquant son état en ligne :

    properties have been reported for component
    sending telemetry message 0...
    
  2. Accédez au terminal de service et utilisez la commande suivante pour exécuter l’exemple de lecture des informations de l’appareil :

    node twin.js
    
  3. Dans la sortie de terminal du service, notez la réponse du jumeau d’appareil. Vous voyez l’ID de modèle d’appareil et les propriétés associées signalées :

    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. L’extrait de code suivant montre le code dans twin.js qui extrait l’ID de modèle du jumeau d’appareil :

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

Dans ce scénario, il génère la sortie suivante : Model Id: dtmi:com:example:Thermostat;1.

Notes

Ces exemples de services utilisent la classe Registry à partir du client du service IoT Hub. Pour en savoir plus sur les API, y compris l’API Digital Twins, consultez le Guide du développeur sur les services.

Mettre à jour une propriété accessible en écriture

  1. Ouvrez le fichier twin.js dans un éditeur de code.

  2. Examinez l’exemple de code ; il vous montre deux façons de mettre à jour le jumeau d’appareil. Pour utiliser la première méthode, modifiez la variable twinPatch comme suit :

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

    La propriété targetTemperature est définie en tant que propriété accessible en écriture dans le modèle d’appareil à thermostat.

  3. Dans le terminal du service, utilisez la commande suivante pour exécuter l’exemple de mise à jour de la propriété :

    node twin.js
    
  4. Dans votre terminal d’appareil, vous voyez que l’appareil a reçu la mise à jour :

    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. Dans votre terminal de service, exécutez la commande suivante pour confirmer la mise à jour de la propriété :

    node twin.js
    
  6. Dans la sortie de terminal du service, dans la section des propriétés reported, vous voyez la température de la cible mise à jour signalée. L’appareil peut prendre un certain temps pour terminer la mise à jour. Répétez cette étape jusqu’à ce que l’appareil ait traité la mise à jour de propriété.

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

Appeler une commande

  1. Ouvrez le fichier device_method.js et passez en revue le code.

  2. Accédez au terminal de service. Utilisez la commande suivante pour exécuter exemple d’appel de la commande :

    set IOTHUB_METHOD_NAME=getMaxMinReport
    set IOTHUB_METHOD_PAYLOAD=commandpayload
    node device_method.js
    
  3. La sortie du terminal de service montre la confirmation suivante :

    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. Dans le terminal de l’appareil, vous voyez que la commande a été reconnue :

    MaxMinReport commandpayload
    Response to method 'getMaxMinReport' sent successfully.
    

IoT Plug-and-Play simplifie l’IoT en vous permettant d’interagir avec le modèle d’un appareil sans avoir connaissance de l’implémentation de l’appareil sous-jacent. Ce tutoriel vous montre comment utiliser Python pour vous connecter à un appareil IoT Plug-and-Play connecté à votre solution et le contrôler.

Prérequis

Avant de continuer, assurez-vous d’avoir configuré votre environnement, y compris votre hub IoT.

Pour suivre ce tutoriel, vous avez besoin de l’installation de Python sur votre machine de développement. Consultez le Kit de développement logiciel (SDK) Python Azure IoT pour connaître les exigences actuelles en matière de version de Python. Vous pouvez vérifier votre version de Python à l’aide de la commande suivante :

python --version

Vous pouvez télécharger la dernière version recommandée pour plusieurs plateformes à partir de python.org.

Dans votre environnement Python local, installez le package azure-iot-devicecomme suit :

pip install azure-iot-device

Installez le package azure-iot-hub en exécutant la commande suivante :

pip install azure-iot-hub

Exécuter l’exemple d’appareil

Dans Configurer votre environnement, vous avez créé quatre variables d’environnement pour configurer l’exemple afin d’utiliser le service Device Provisioning Service (DPS) pour vous connecter à votre hub IoT :

  • IOTHUB_DEVICE_SECURITY_TYPE avec la valeur DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE avec l’étendue ID DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID avec la valeur my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY avec la clé primaire d’inscription.
  • IOTHUB_DEVICE_DPS_ENDPOINT avec la valeur global.azure-devices-provisioning.net.

Pour en savoir plus sur l’exemple de configuration, consultez l’exemple de fichier Lisez-moi.

Dans ce tutoriel, vous utilisez un exemple d’appareil à thermostat, écrit en Python, en tant qu’appareil IoT Plug-and-Play. Pour exécuter l’exemple d’appareil :

  1. Ouvrez une fenêtre de terminal dans un dossier de votre choix. Exécutez la commande suivante pour cloner le référentiel GitHub Azure IoT Device Python SDK à cet emplacement :

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  2. Cette fenêtre de terminal est utilisée en tant que terminal device. Accédez au dossier de votre référentiel cloné, puis au dossier azure-iot-sdk-python/samples/pnp.

  3. Pour exécutez l’exemple d’appareil à thermostat, utilisez la commande suivante :

    python simple_thermostat.py
    
  4. Des messages s’affichent pour indiquer que l’appareil a envoyé des informations et qu’il s’est signalé comme étant en ligne. Ces messages indiquent que l’appareil a commencé à envoyer des données de télémétrie au hub et est maintenant prêt à recevoir des commandes et des mises à jour de propriétés. Ne fermez pas ce terminal. Vous en aurez besoin pour confirmer que l’exemple de service fonctionne également.

Exécuter l’exemple de solution

Dans ce tutoriel, vous utilisez un exemple de solution IoT en Python pour interagir avec l’exemple d’appareil que vous venez de configurer.

  1. Ouvrez une autre fenêtre de terminal à utiliser comme terminal service. Exécutez la commande suivante pour cloner le référentiel GitHub Azure IoT Hub Python SDK à cet emplacement :

    git clone https://github.com/Azure/azure-iot-hub-python
    
  2. Installer

  3. Accédez au dossier /azure-iot-hub-python/samples du référentiel du kit SDK Python cloné.

  4. Ouvrez le fichier registry_manager_pnp_sample.py et passez en revue le code. Cet exemple montre comment utiliser la classe IoTHubRegistryManager pour interagir avec votre appareil IoT Plug-and-Play.

Notes

Ces exemples de services utilisent la classe IoTHubRegistryManager à partir du client du service IoT Hub. Pour en savoir plus sur les API, y compris l’API Digital Twins, consultez le Guide du développeur sur les services.

Obtenir le jumeau d’appareil

Dans Configurer votre environnement pour les guides de démarrage rapide et tutoriels IoT Plug-and-Play, vous avez créé deux variables d’environnement pour configurer l’exemple afin qu’il se connecte à votre hub IoT :

  • IOTHUB_CONNECTION_STRING : la chaîne de connexion de hub IoT que vous avez notée précédemment.
  • IOTHUB_DEVICE_ID : "my-pnp-device".

Utilisez la commande suivante dans le terminal service pour exécuter cet exemple :

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

Notes

Si vous exécutez cet exemple sur Linux, utilisez export à la place de set.

La sortie affiche le jumeau d’appareil et son ID de modèle :

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

L’extrait de code suivant montre l’exemple de code de 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("")

Mettre à jour un jumeau d’appareil

Cet exemple montre comment mettre à jour la propriété targetTemperature accessible en écriture dans l’appareil :

    # 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("")

Vous pouvez vérifier que la mise à jour est appliquée dans le terminal device qui affiche la sortie suivante :

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

Le terminal service confirme que le correctif a réussi :

The twin patch has been successfully applied

Appeler une commande

L’exemple appelle ensuite une commande :

Le terminal service affiche un message de confirmation de l’appareil :

The device method has been successfully invoked

Dans le terminal device, vous voyez que l’appareil reçoit la commande :

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"}}

Nettoyer les ressources

Si vous avez terminé les guides de démarrage rapide et les tutoriels, consultez Nettoyer les ressources.

Étapes suivantes

Dans ce didacticiel, vous avez appris à connecter un appareil IoT Plug-and-Play à une solution IoT. Pour découvrir plus d’informations sur les modèles d’appareils IoT Plug-and-Play, consultez :