Tutorial: Interacción con un dispositivo IoT Plug and Play conectado a la solución

IoT Plug and Play simplifica IoT, ya que permite interactuar con las funcionalidades de un dispositivo sin tener que conocer la implementación subyacente del mismo. En este tutorial se muestra cómo usar C# para conectarse y controlar un dispositivo IoT Plug and Play que esté conectado a la solución.

Prerrequisitos

Antes de continuar, asegúrese de que ha configurado el entorno, incluido el centro de IoT.

Para este tutorial se puede ejecutar Linux o Windows. Los comandos de shell de este tutorial siguen la convención de Linux para los separadores de ruta de acceso "/". Si utiliza Windows, asegúrese de cambiar estos separadores por "\".

Clonación del repositorio de SDK con el código de ejemplo

Si completó el Tutorial: Conexión a IoT Hub (C#) de una aplicación de ejemplo de dispositivo IoT Plug and Play que se ejecuta en Windows, ya ha clonado el repositorio.

Clone los ejemplos de SDK de Internet de las cosas de Azure del repositorio de GitHub para C#. Abra un símbolo del sistema en la carpeta de su elección. Ejecute el comando siguiente para clonar el repositorio de GitHub SDK de Microsoft Azure IoT para .NET:

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

Compilación del nodo del dispositivo

Ahora puede compilar el ejemplo de dispositivo y ejecutarlo. Ejecute el siguiente comando para compilar la muestra:

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

Ejecución del ejemplo de dispositivo

Para ejecutar el ejemplo, ejecute el siguiente comando:

dotnet run

El dispositivo ya está listo para recibir comandos y actualizaciones de propiedades, y ha empezado a enviar datos de telemetría al centro. Siga ejecutando el ejemplo a medida que complete los pasos siguientes.

Ejecución de la solución de ejemplo

En Configuración del entorno para los tutoriales y las guías de inicio rápido de IoT Plug and Play, creó dos variables de entorno para configurar el ejemplo para conectarse a su instancia de IoT Hub:

  • IOTHUB_CONNECTION_STRING: la cadena de conexión de IoT Hub que anotó anteriormente.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

En este tutorial, se usa una solución de IoT de ejemplo escrita en C# para interactuar con el dispositivo de ejemplo que acaba de configurar y ejecutar.

  1. En otra ventana de terminal, vaya a la carpeta azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat.

  2. Ejecute el siguiente comando para compilar el ejemplo de servicio:

    dotnet build
    
  3. Ejecute el siguiente comando para ejecutar el ejemplo de servicio:

    dotnet run
    

Obtener dispositivo gemelo

En el fragmento de código siguiente se muestra la forma en que la aplicación de servicio recupera el dispositivo gemelo:

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

Nota

En este ejemplo se usa el espacio de nombres Microsoft.Azure.Devices.Client del cliente del servicio IoT Hub. Para más información sobre las API, incluida la API de gemelos digitales, consulte la guía para desarrolladores de servicios.

Este código genera el siguiente resultado:

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

En el fragmento de código siguiente se muestra cómo usar una revisión para actualizar las propiedades a través del dispositivo gemelo:

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

Este código genera el siguiente resultado desde el dispositivo cuando el servicio actualiza la propiedad 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.

Invocación de un comando

En el fragmento de código siguiente se muestra cómo llamar a un comando:

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

Este código genera el siguiente resultado desde el dispositivo cuando el servicio llama al comando 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 simplifica IoT, ya que permite interactuar con las funcionalidades de un dispositivo sin tener que conocer la implementación subyacente del mismo. En este tutorial se muestra cómo usar Java para conectarse a un dispositivo IoT Plug and Play que esté conectado a la solución y controlarlo.

Prerrequisitos

Antes de continuar, asegúrese de que ha configurado el entorno, incluido el centro de IoT.

Para este tutorial se puede ejecutar Linux o Windows. Los comandos de shell de este tutorial siguen la convención de Linux para los separadores de ruta de acceso "/". Si utiliza Windows, asegúrese de cambiar estos separadores por "\".

Para realizar este tutorial, instale el siguiente software en el entorno de desarrollo local:

Clonación del repositorio de SDK con el código de ejemplo

Si completó Tutorial: Conexión a IoT Hub (Java) de una aplicación de ejemplo del dispositivo IoT Plug and Play que se ejecuta en Windows, ya ha clonado el repositorio.

Abra un símbolo del sistema en el directorio que prefiera. Ejecute el siguiente comando para clonar el repositorio de GitHub de los SDK de Microsoft Azure IoT para Java en esta ubicación:

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

Compilación y ejecución del dispositivo de ejemplo

Vaya a la carpeta raíz del ejemplo de termostato en el repositorio del SDK de Java clonado y compílelo:

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

En Configuración del entorno, creó cuatro variables de entorno para configurar el ejemplo de modo que usara Device Provisioning Service (DPS) para conectarse a IoT Hub:

  • IOTHUB_DEVICE_SECURITY_TYPE con el valor DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE con el ámbito del id. de DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID con el valor my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY con la clave principal de inscripción.
  • IOTHUB_DEVICE_DPS_ENDPOINT con el valor global.azure-devices-provisioning.net.

Para más información sobre la configuración de ejemplo, consulte el archivo Léame de ejemplo.

En la carpeta /device/iot-device-samples/pnp-device-sample/thermostat-device-sample, ejecute la aplicación:

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

El dispositivo ya está listo para recibir comandos y actualizaciones de propiedades, y ha empezado a enviar datos de telemetría al centro. Siga ejecutando el ejemplo a medida que complete los pasos siguientes.

Ejecución de la solución de ejemplo

En Configuración del entorno para los tutoriales y las guías de inicio rápido de IoT Plug and Play, creó dos variables de entorno para configurar el ejemplo para conectarse a su instancia de IoT Hub:

  • IOTHUB_CONNECTION_STRING: la cadena de conexión de IoT Hub que anotó anteriormente.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

En este tutorial, se usa una solución de IoT de ejemplo escrita en Java para interactuar con el dispositivo de ejemplo que acaba de configurar.

Nota

En este ejemplo se usa el espacio de nombres com.microsoft.azure.sdk.iot.service del cliente del servicio IoT Hub. Para más información sobre las API, incluida la API de gemelos digitales, consulte la guía para desarrolladores de servicios.

  1. Abra otra ventana de terminal para utilizarla como terminal de servicio.

  2. En el repositorio del SDK de Java clonado, vaya a la carpeta service/iot-service-samples/pnp-service-sample/thermostat-service-sample.

  3. Para compilar y ejecutar la aplicación del servicio de ejemplo, utilice los comandos siguientes:

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

Obtener dispositivo gemelo

En el fragmento de código siguiente se muestra cómo recuperar el dispositivo gemelo en el servicio:

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

Actualización de un dispositivo gemelo

En el fragmento de código siguiente se muestra cómo usar una revisión para actualizar las propiedades a través del dispositivo gemelo:

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

La salida del dispositivo muestra cómo responde el dispositivo a esta actualización de propiedades.

Invocación de un comando

En el fragmento de código siguiente se muestra cómo llamar a un comando en el dispositivo:

// 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 salida del dispositivo muestra cómo responde el dispositivo a este comando.

IoT Plug and Play simplifica IoT, ya que permite interactuar con las funcionalidades de un dispositivo sin tener que conocer la implementación subyacente del mismo. En este tutorial se muestra cómo usar Node.js para conectarse a un dispositivo IoT Plug and Play que esté conectado a la solución y controlarlo.

Prerrequisitos

Antes de continuar, asegúrese de que ha configurado el entorno, incluido el centro de IoT.

Para completar este tutorial, necesita Node.js en la máquina de desarrollo. Puede descargar la última versión recomendada para varias plataformas desde nodejs.org.

Puede verificar la versión actual de Node.js en el equipo de desarrollo con el comando siguiente:

node --version

Clonación del repositorio de SDK con el código de ejemplo

Clone los ejemplos del repositorio del SDK de Node.js. Abra una ventana de terminal en la carpeta que prefiera. Ejecute el siguiente comando para clonar el repositorio de GitHub del SDK de Microsoft Azure IoT para Node.js:

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

Ejecución del dispositivo de ejemplo

En Configuración del entorno, creó cuatro variables de entorno para configurar el ejemplo de modo que usara Device Provisioning Service (DPS) para conectarse a IoT Hub:

  • IOTHUB_DEVICE_SECURITY_TYPE con el valor DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE con el ámbito del id. de DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID con el valor my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY con la clave principal de inscripción.
  • IOTHUB_DEVICE_DPS_ENDPOINT con el valor global.azure-devices-provisioning.net.

Para más información sobre la configuración de ejemplo, consulte el archivo Léame de ejemplo.

En este tutorial, se usa un dispositivo termostato de ejemplo, que se ha escrito en Node.js, como dispositivo IoT Plug and Play. Para ejecutar el dispositivo de ejemplo:

  1. Abra una ventana de terminal y vaya a la carpeta local que contiene el repositorio de SDK de Microsoft Azure IoT para Node.js que ha clonado de GitHub.

  2. Esta ventana de terminal se usa ahora como terminal del dispositivo. Vaya a la carpeta del repositorio clonado y luego a la carpeta /azure-iot-sdk-node/device/samples/javascript. Instale todas las dependencias, para lo que debe ejecutar el siguiente comando:

    npm install
    
  3. Ejecute el dispositivo termostato de ejemplo con el siguiente comando:

    node pnp_simple_thermostat.js
    
  4. Verá mensajes que señalan que el dispositivo ha enviado cierta información y ha indicado que está en línea. Estos mensajes indican que el dispositivo ha comenzado a enviar datos de telemetría al centro y que ya está listo para recibir comandos y actualizaciones de propiedades. No cierre este terminal, ya que lo necesita para confirmar que el ejemplo del servicio funciona.

Ejecución de la solución de ejemplo

En Configuración del entorno para los tutoriales y las guías de inicio rápido de IoT Plug and Play, creó dos variables de entorno para configurar el ejemplo para conectarse a su instancia de IoT Hub:

  • IOTHUB_CONNECTION_STRING: la cadena de conexión de IoT Hub que anotó anteriormente.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

En este tutorial, se usa una solución de IoT de Node.js de ejemplo para interactuar con el dispositivo de ejemplo que acaba de configurar y ejecutar.

  1. Abra otra ventana de terminal para utilizarla como terminal de servicio.

  2. En el repositorio del SDK de Node.js clonado, vaya a la carpeta azure-iot-sdk-node/service/samples/javascript. Instale todas las dependencias, para lo que debe ejecutar el siguiente comando:

    npm install
    

Lectura de una propiedad

  1. Al ejecutar el dispositivo termostato de ejemplo en el terminal del dispositivo, vio los siguientes mensajes que indicaban su estado en línea:

    properties have been reported for component
    sending telemetry message 0...
    
  2. Vaya al terminal de servicio y use el siguiente comando para ejecutar el ejemplo para leer información del dispositivo:

    node twin.js
    
  3. En la salida del terminal de servicio, observe la respuesta del gemelo. Se muestra el identificador de modelo del dispositivo y las propiedades asociadas notificadas:

    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. En el fragmento de código siguiente se muestra el código del archivo twin.js, que recupera el identificador de modelo del dispositivo gemelo:

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

En este escenario, la salida es Model Id: dtmi:com:example:Thermostat;1.

Nota

En estos ejemplos de servicio se usa la clase Registry del cliente del servicio IoT Hub. Para más información sobre las API, incluida la API de gemelos digitales, consulte la guía para desarrolladores de servicios.

Actualización de una propiedad editable

  1. Abra el archivo twin.js en un editor de código.

  2. Examine el código de ejemplo, que muestra dos formas de actualizar el dispositivo. Para usar la primera, modifique la variable twinPatch como se indica a continuación:

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

    La propiedad targetTemperature se define como una propiedad grabable en el modelo del dispositivo termostato.

  3. En el terminal de servicio, use el siguiente comando para ejecutar el ejemplo para actualizar la propiedad:

    node twin.js
    
  4. En el terminal del dispositivo, se muestra que el dispositivo ha recibido la actualización:

    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. En el terminal de servicio, ejecute el siguiente comando para comprobar que la propiedad está actualizada:

    node twin.js
    
  6. En la salida del terminal de servicio, en la sección de propiedades de reported, se ve que se ha notificado la actualización de la temperatura de destino. El dispositivo puede tardar cierto tiempo en finalizar la actualización. Repita este paso hasta que el dispositivo haya procesado la actualización de la propiedad:

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

Invocación de un comando

  1. Abra device_method.js y examine el código.

  2. Vaya al terminal de servicio. Use el siguiente comando para ejecutar el ejemplo para invocar el comando:

    set IOTHUB_METHOD_NAME=getMaxMinReport
    set IOTHUB_METHOD_PAYLOAD=commandpayload
    node device_method.js
    
  3. La salida del terminal de servicio muestra la siguiente confirmación:

    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. En el terminal del dispositivo, se muestra que el comando se ha confirmado:

    MaxMinReport commandpayload
    Response to method 'getMaxMinReport' sent successfully.
    

IoT Plug and Play simplifica IoT, ya que permite interactuar con el modelo de un dispositivo sin tener que conocer la implementación subyacente del dispositivo. En este tutorial se muestra cómo usar Python para conectarse a un dispositivo IoT Plug and Play que esté conectado a la solución y controlarlo.

Prerrequisitos

Antes de continuar, asegúrese de que ha configurado el entorno, incluido el centro de IoT.

Para completar este tutorial, se necesita tener Python instalado en la máquina de desarrollo. Compruebe el SDK de Python de Azure IoT para ver los requisitos actuales de la versión de Python. Puede comprobar la versión de Python con el siguiente comando:

python --version

Puede descargar la última versión recomendada para varias plataformas desde python.org.

En el entorno local de Python, instale el paquete azure-iot-device como se indica a continuación:

pip install azure-iot-device

Para instalar el paquete azure-iot-hub ejecute el comando siguiente:

pip install azure-iot-hub

Ejecución del dispositivo de ejemplo

En Configuración del entorno, creó cuatro variables de entorno para configurar el ejemplo de modo que usara Device Provisioning Service (DPS) para conectarse a IoT Hub:

  • IOTHUB_DEVICE_SECURITY_TYPE con el valor DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE con el ámbito del id. de DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID con el valor my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY con la clave principal de inscripción.
  • IOTHUB_DEVICE_DPS_ENDPOINT con el valor global.azure-devices-provisioning.net.

Para más información sobre la configuración de ejemplo, consulte el archivo Léame de ejemplo.

En este tutorial, se usa un dispositivo termostato de ejemplo, que se ha escrito en Python, como dispositivo IoT Plug and Play. Para ejecutar el dispositivo de ejemplo:

  1. Abra una ventana de terminal en la carpeta que prefiera. Ejecute el siguiente comando para clonar el repositorio de GitHub del SDK para Python del dispositivo IoT de Azure en esta ubicación:

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  2. Esta ventana de terminal se usa ahora como terminal del dispositivo. Vaya a la carpeta del repositorio clonado y luego a la carpeta azure-iot-sdk-python/samples/pnp.

  3. Ejecute el dispositivo termostato de ejemplo con el siguiente comando:

    python simple_thermostat.py
    
  4. Verá mensajes que señalan que el dispositivo ha enviado cierta información y ha indicado que está en línea. Estos mensajes indican que el dispositivo ha comenzado a enviar datos de telemetría al centro y que ya está listo para recibir comandos y actualizaciones de propiedades. No cierre este terminal, ya que lo necesita para confirmar que el ejemplo del servicio funciona.

Ejecución de la solución de ejemplo

En este tutorial, se usa una solución de IoT de ejemplo en Python para interactuar con el dispositivo de ejemplo que acaba de configurar.

  1. Abra otra ventana de terminal para utilizarla como terminal de servicio. Ejecute el siguiente comando para clonar el repositorio de GitHub del SDK para Python de Azure IoT Hub en esta ubicación:

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

  3. Vaya a la carpeta /azure-iot-hub-python/samples del repositorio del SDK de Python clonado.

  4. Abra el archivo registry_manager_pnp_sample.py y examine el código. En este ejemplo se muestra cómo usar la clase IoTHubRegistryManager para interactuar con un dispositivo IoT Plug and Play.

Nota

En estos ejemplos de servicio se usa la clase IoTHubRegistryManager del cliente del servicio IoT Hub. Para más información sobre las API, incluida la API de gemelos digitales, consulte la guía para desarrolladores de servicios.

Obtención del dispositivo gemelo

En Configuración del entorno para los tutoriales y las guías de inicio rápido de IoT Plug and Play, creó dos variables de entorno para configurar el ejemplo para conectarse a su instancia de IoT Hub:

  • IOTHUB_CONNECTION_STRING: la cadena de conexión de IoT Hub que anotó anteriormente.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Use el siguiente comando en el terminal de servicio para ejecutar este ejemplo:

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

Nota

Si ejecuta el ejemplo en Linux, use export en lugar de set.

La salida muestra el dispositivo gemelo e imprime su identificador de modelo:

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

En el fragmento de código siguiente se muestra el código de ejemplo 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("")

Actualización de un dispositivo gemelo

En este ejemplo se muestra cómo actualizar la propiedad grabable targetTemperature en el dispositivo:

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

Puede comprobar que la actualización está aplicada en el terminal del dispositivo que muestra la salida siguiente:

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

El terminal de servicio confirma que la revisión se realizó correctamente:

The twin patch has been successfully applied

Invocación de un comando

Luego, el ejemplo invoca el comando:

El terminal de servicio muestra un mensaje de confirmación del dispositivo:

The device method has been successfully invoked

En el terminal del dispositivo, puede ver que el dispositivo recibe el comando:

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

Limpieza de recursos

Si ya ha terminado los inicios rápidos y tutoriales, consulte Limpieza de recursos.

Pasos siguientes

En este tutorial, ha aprendido a conectar un dispositivo IoT Plug and Play a una solución de IoT. Para más información acerca de los modelos de dispositivo IoT Plug and Play, consulte: