Tutorial: Conexión de una aplicación de dispositivo de ejemplo de IoT Plug and Play en Linux o Windows a IoT Hub

En este tutorial se muestra cómo compilar una aplicación de dispositivo IoT Plug and Play de ejemplo, conectarla al centro de IoT y usar la herramienta Azure IoT Explorer para ver los datos de telemetría que envía. La aplicación de ejemplo está escrita en C y se incluye en el SDK de dispositivo IoT de Azure para C. Un generador de soluciones puede usar la herramienta Azure IoT Explorer para comprender las funcionalidades de cualquier dispositivo IoT Plug and Play sin necesidad de ver nada de código del dispositivo.

Examinar el código

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 "\".

Los requisitos previos difieren en función del sistema operativo:

Linux

En este tutorial se da por supuesto que usa Ubuntu Linux. Los pasos de este tutorial se han probado con Ubuntu 18.04.

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

Instale GCC, Git, cmake y todas las dependencias necesarias con el comando apt-get:

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

Compruebe que la versión de cmake es posterior a 2.8.12 y que la versión de GCC es posterior a 4.4.7.

cmake --version
gcc --version

Windows

Para completar este tutorial en Windows, instale el siguiente software en el entorno de Windows local:

Descargar el código

En este tutorial, se prepara un entorno de desarrollo que se puede usar para clonar y compilar el SDK de dispositivos de Azure IoT Hub para C.

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

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

Esta operación puede tardar varios minutos en completarse.

Compilación del código

Puede compilar y ejecutar el código con Visual Studio o usar cmake en la línea de comandos.

Usar Visual Studio

  1. Abra la carpeta raíz del repositorio clonado. Al cabo de unos segundos, la compatibilidad de CMake en Visual Studio crea todo lo que necesita para ejecutar y depurar el proyecto.

  2. Cuando Visual Studio esté listo, en el Explorador de soluciones, desplácese hasta el ejemplo iothub_client/samples/pnp/pnp_simple_thermostat/.

  3. Haga clic con el botón derecho en el archivo pnp_simple_thermostat.c y seleccione Agregar configuración de depuración. Seleccione Predeterminado.

  4. Visual Studio abre el archivo launch.vs.json. Edite este archivo como se muestra en el siguiente fragmento de código para establecer las variables de entorno necesarias. Anotó el identificador de ámbito y la clave principal de inscripción cuando completó Configuración del entorno para las guías de inicio rápido y los tutoriales de IoT Plug and Play:

    {
      "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. Haga clic con el botón derecho en el archivo pnp_simple_thermostat.c y seleccione Establecer como elemento de inicio.

  6. Para realizar el seguimiento de la ejecución del código en Visual Studio, agregue un punto de interrupción a la función main en el archivo pnp_simple_thermostat.c.

  7. Ahora puede ejecutar y depurar el ejemplo desde el menú Depurar.

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.

Uso de cmake para compilar el código

Use la utilidad de línea de comandos cmake para compilar el código:

  1. Cree un subdirectorio cmake en la carpeta raíz del SDK del dispositivo y vaya a esa carpeta:

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    
  2. Ejecute los siguientes comandos para compilar el SDK y los ejemplos:

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

Ejecución del ejemplo de dispositivo

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.

Ejecute la aplicación de ejemplo en el SDK que simula un dispositivo IoT Plug and Play que envía telemetría a su centro de IoT:

Desde la carpeta cmake, navegue hasta la carpeta que contiene el archivo ejecutable y ejecute lo siguiente:

# 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

Sugerencia

Para realizar el seguimiento de la ejecución del código en Visual Studio en Windows, agregue un punto de interrupción a la función main en el archivo main.

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.

Uso de Azure IoT Explorer para validar el código

Una vez iniciado el ejemplo de cliente de dispositivo, compruebe que funciona con la herramienta Azure IoT Explorer.

  1. Abra el explorador Azure IoT.

  2. En la página Centros de IoT, si aún no ha agregado una conexión al centro de IoT, seleccione + Agregar conexión. Escriba la cadena de conexión del centro de IoT que creó previamente y seleccione Guardar.

  3. En la página IoT Plug and Play Settings (Configuración de IoT Plug and Play), seleccione + Agregar > Carpeta local y seleccione la carpeta local models donde guardó los archivos de modelo.

  4. En la página Centros de IoT, haga clic en el nombre del centro con el que desea trabajar. Verá una lista de dispositivos registrados en el centro de IoT.

  5. Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.

  6. En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.

  7. Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.

  8. Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.

  9. Seleccione la página Telemetría y haga clic en Iniciar para ver los datos de telemetría que envía el dispositivo para este componente.

  10. Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.

  11. Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.

  12. Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).

  13. Para ver el nuevo valor, seleccione el botón Actualizar.

  14. Seleccione la página Comandos para ver todos los comandos para este componente.

  15. Seleccione el comando que desea probar para establecer el parámetro, si existe. Seleccione Enviar comando para llamar al comando en el dispositivo. Puede ver que el dispositivo responde al comando en la ventana del símbolo del sistema donde se está ejecutando el código de ejemplo.

Revisión del código

En este ejemplo se implementa un dispositivo termostato de IoT Plug and Play sencillo. El modelo de termostato no usa componentes de IoT Plug and Play. El archivo de modelo DTDL del dispositivo termostato define la telemetría, las propiedades y los comandos que implementa el dispositivo.

El código del dispositivo usa la función estándar para conectarse a su centro de IoT:

deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)

El dispositivo envía el identificador de modelo del modelo DTDL que implementa en la solicitud de conexión. Un dispositivo que envía un identificador de modelo es un dispositivo IoT Plug and Play:

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

...

IoTHubDeviceClient_SetOption(deviceHandle, OPTION_MODEL_ID, modelId)

El código que actualiza las propiedades, controla los comandos y envía la telemetría es idéntico al código de un dispositivo que no usa las convenciones de IoT Plug and Play.

El código usa una biblioteca de Parson para analizar objetos JSON en las cargas enviadas desde el centro de IoT:

// JSON parser
#include "parson.h"

Limpieza de recursos

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

En este tutorial se muestra cómo compilar una aplicación de dispositivo IoT Plug and Play de ejemplo, conectarla al centro de IoT y usar la herramienta Azure IoT Explorer para ver los datos de telemetría que envía. La aplicación de ejemplo se escribe en C# y se incluye en el SDK de Azure IoT de Azure para C#. Un generador de soluciones puede usar la herramienta Azure IoT Explorer para comprender las funcionalidades de cualquier dispositivo IoT Plug and Play sin necesidad de ver nada de código del dispositivo.

Examinar el código

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 "\".

Descargar el código

En este tutorial, se prepara un entorno de desarrollo que se puede usar para clonar y crear el SDK de Azure IoT para el repositorio de C#.

Abra un símbolo del sistema en la carpeta de su elección. Ejecute el siguiente comando para clonar el repositorio de GitHub del SDK de Microsoft Azure IoT para C# (.NET) en esta ubicación:

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

Compilación del código

Ya puede compilar y ejecutar la muestra. 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.

Uso de Azure IoT Explorer para validar el código

Una vez iniciado el ejemplo de cliente de dispositivo, compruebe que funciona con la herramienta Azure IoT Explorer.

  1. Abra el explorador Azure IoT.

  2. En la página Centros de IoT, si aún no ha agregado una conexión al centro de IoT, seleccione + Agregar conexión. Escriba la cadena de conexión del centro de IoT que creó previamente y seleccione Guardar.

  3. En la página IoT Plug and Play Settings (Configuración de IoT Plug and Play), seleccione + Agregar > Carpeta local y seleccione la carpeta local models donde guardó los archivos de modelo.

  4. En la página Centros de IoT, haga clic en el nombre del centro con el que desea trabajar. Verá una lista de dispositivos registrados en el centro de IoT.

  5. Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.

  6. En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.

  7. Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.

  8. Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.

  9. Seleccione la página Telemetría y haga clic en Iniciar para ver los datos de telemetría que envía el dispositivo para este componente.

  10. Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.

  11. Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.

  12. Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).

  13. Para ver el nuevo valor, seleccione el botón Actualizar.

  14. Seleccione la página Comandos para ver todos los comandos para este componente.

  15. Seleccione el comando que desea probar para establecer el parámetro, si existe. Seleccione Enviar comando para llamar al comando en el dispositivo. Puede ver que el dispositivo responde al comando en la ventana del símbolo del sistema donde se está ejecutando el código de ejemplo.

Revisión del código

En este ejemplo se implementa un dispositivo termostato de IoT Plug and Play sencillo. El modelo que se implementa en este ejemplo no usa los componentes de IoT Plug and Play. El archivo de modelo del lenguaje de definición de Digital Twins (DTDL) del dispositivo termostato define la telemetría, las propiedades y los comandos que implementa el dispositivo.

El código del dispositivo se conecta al centro de IoT mediante el método CreateFromConnectionString estándar. El dispositivo envía el identificador de modelo del modelo DTDL que implementa en la solicitud de conexión. Un dispositivo que envía un identificador de modelo es un dispositivo IoT Plug and Play:

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

El identificador del modelo se almacena en el código tal y como se muestra en el siguiente fragmento de código:

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

El código que actualiza las propiedades, controla los comandos y envía la telemetría es idéntico al código de un dispositivo que no usa las convenciones de IoT Plug and Play.

En el ejemplo se usa una biblioteca JSON para analizar objetos JSON en las cargas enviadas desde el centro de IoT:

using Newtonsoft.Json;

...

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

Limpieza de recursos

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

En este tutorial se muestra cómo compilar una aplicación de dispositivo IoT Plug and Play de ejemplo, conectarla al centro de IoT y usar la herramienta Azure IoT Explorer para ver los datos de telemetría que envía. La aplicación de ejemplo se escribe en Java y se incluye en el SDK de dispositivo IoT de Azure para Java. Un generador de soluciones puede usar la herramienta Azure IoT Explorer para comprender las funcionalidades de cualquier dispositivo IoT Plug and Play sin necesidad de ver nada de código del dispositivo.

Examinar el código

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:

Descargar el código

En este tutorial, se prepara un entorno de desarrollo que se puede usar para clonar y compilar el SDK del dispositivo de Azure IoT Hub para Java.

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

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

Compilación del código

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

Ejecución del ejemplo de dispositivo

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.

Uso de Azure IoT Explorer para validar el código

Una vez iniciado el ejemplo de cliente de dispositivo, compruebe que funciona con la herramienta Azure IoT Explorer.

  1. Abra el explorador Azure IoT.

  2. En la página Centros de IoT, si aún no ha agregado una conexión al centro de IoT, seleccione + Agregar conexión. Escriba la cadena de conexión del centro de IoT que creó previamente y seleccione Guardar.

  3. En la página IoT Plug and Play Settings (Configuración de IoT Plug and Play), seleccione + Agregar > Carpeta local y seleccione la carpeta local models donde guardó los archivos de modelo.

  4. En la página Centros de IoT, haga clic en el nombre del centro con el que desea trabajar. Verá una lista de dispositivos registrados en el centro de IoT.

  5. Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.

  6. En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.

  7. Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.

  8. Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.

  9. Seleccione la página Telemetría y haga clic en Iniciar para ver los datos de telemetría que envía el dispositivo para este componente.

  10. Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.

  11. Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.

  12. Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).

  13. Para ver el nuevo valor, seleccione el botón Actualizar.

  14. Seleccione la página Comandos para ver todos los comandos para este componente.

  15. Seleccione el comando que desea probar para establecer el parámetro, si existe. Seleccione Enviar comando para llamar al comando en el dispositivo. Puede ver que el dispositivo responde al comando en la ventana del símbolo del sistema donde se está ejecutando el código de ejemplo.

Revisión del código

En este ejemplo se implementa un dispositivo termostato de IoT Plug and Play sencillo. El modelo que se implementa en este ejemplo no usa los componentes de IoT Plug and Play. El archivo de modelo DTDL del dispositivo termostato define la telemetría, las propiedades y los comandos que implementa el dispositivo.

El código del dispositivo usa la clase DeviceClient estándar para conectarse a su centro de IoT. El dispositivo envía el identificador de modelo del modelo DTDL que implementa en la solicitud de conexión. Un dispositivo que envía un identificador de modelo es un dispositivo IoT Plug and Play:

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

El identificador del modelo se almacena en el código tal y como se muestra en el siguiente fragmento de código:

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

El código que actualiza las propiedades, controla los comandos y envía la telemetría es idéntico al código de un dispositivo que no usa las convenciones de IoT Plug and Play.

En el ejemplo se usa una biblioteca JSON para analizar objetos JSON en las cargas enviadas desde el centro de IoT:

import com.google.gson.Gson;

...

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

Limpieza de recursos

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

En este tutorial se muestra cómo compilar una aplicación de dispositivo IoT Plug and Play de ejemplo, conectarla al centro de IoT y usar la herramienta Azure IoT Explorer para ver los datos de telemetría que envía. La aplicación de ejemplo se escribe en Node.js y se incluye en el SDK de dispositivo IoT de Azure para Node.js. Un generador de soluciones puede usar la herramienta Azure IoT Explorer para comprender las funcionalidades de cualquier dispositivo IoT Plug and Play sin necesidad de ver nada de código del dispositivo.

Examinar el código

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

Descargar el código

En este tutorial, se prepara un entorno de desarrollo que se puede usar para clonar y compilar el SDK del dispositivo de Azure IoT Hub para Node.js.

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

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

Instalación de bibliotecas necesarias

Para compilar el código de ejemplo incluido, se usa el SDK del dispositivo. La aplicación que se compila simula un dispositivo que se conecta a un centro de IoT. La aplicación envía datos de telemetría y propiedades, y recibe comandos.

  1. En una ventana del terminal local, vaya a la carpeta del repositorio clonado y luego a la carpeta /azure-iot-sdk-node/device/samples/javascript. Después, ejecute el siguiente comando para instalar las bibliotecas necesarias:

    npm install
    

Ejecución del dispositivo de ejemplo

En este ejemplo se implementa un dispositivo termostato de IoT Plug and Play sencillo. El modelo que se implementa en este ejemplo no usa los componentes de IoT Plug and Play. El archivo de modelo DTDL del dispositivo termostato define la telemetría, las propiedades y los comandos que implementa el dispositivo.

Abra el archivo pnp_simple_thermostat.js. En este archivo, puede ver cómo:

  1. Importar las interfaces necesarias.
  2. Escribir un controlador de actualización de propiedades y un controlador de comandos.
  3. Controlar las revisiones de propiedades deseadas y enviar telemetría.
  4. De manera opcional, aprovisionar el dispositivo mediante el una única instancia de IoT Hub mediante Azure Device Provisioning Service (DPS).

En la función main, puede ver cómo todo encaja:

  1. Cree el dispositivo a partir de la cadena de conexión o aprovisiónelo con DPS.
  2. Use la opción modelID para especificar el modelo de dispositivo IoT Plug and Play.
  3. Habilite el controlador de comandos.
  4. Envíe telemetría desde el dispositivo al centro.
  5. Obtenga los dispositivos gemelos y actualice las propiedades proporcionadas.
  6. Habilite el controlador de actualizaciones de propiedades deseado.

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.

Ejecute una aplicación de ejemplo para simular un dispositivo IoT Plug and Play que envía telemetría al centro de IoT. Para ejecutar la aplicación de ejemplo, utilice el comando siguiente:

node pnp_simple_thermostat.js

Verá la salida siguiente, lo que significa que el dispositivo ha comenzado a enviar datos de telemetría al concentrador y que ya está listo para recibir comandos y actualizaciones de propiedades.

Mensajes de confirmación de dispositivo

Siga ejecutando el ejemplo a medida que complete los pasos siguientes.

Uso de Azure IoT Explorer para validar el código

Una vez iniciado el ejemplo de cliente de dispositivo, compruebe que funciona con la herramienta Azure IoT Explorer.

  1. Abra el explorador Azure IoT.

  2. En la página Centros de IoT, si aún no ha agregado una conexión al centro de IoT, seleccione + Agregar conexión. Escriba la cadena de conexión del centro de IoT que creó previamente y seleccione Guardar.

  3. En la página IoT Plug and Play Settings (Configuración de IoT Plug and Play), seleccione + Agregar > Carpeta local y seleccione la carpeta local models donde guardó los archivos de modelo.

  4. En la página Centros de IoT, haga clic en el nombre del centro con el que desea trabajar. Verá una lista de dispositivos registrados en el centro de IoT.

  5. Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.

  6. En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.

  7. Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.

  8. Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.

  9. Seleccione la página Telemetría y haga clic en Iniciar para ver los datos de telemetría que envía el dispositivo para este componente.

  10. Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.

  11. Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.

  12. Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).

  13. Para ver el nuevo valor, seleccione el botón Actualizar.

  14. Seleccione la página Comandos para ver todos los comandos para este componente.

  15. Seleccione el comando que desea probar para establecer el parámetro, si existe. Seleccione Enviar comando para llamar al comando en el dispositivo. Puede ver que el dispositivo responde al comando en la ventana del símbolo del sistema donde se está ejecutando el código de ejemplo.

Limpieza de recursos

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

En este tutorial se muestra cómo compilar una aplicación de dispositivo IoT Plug and Play de ejemplo, conectarla al centro de IoT y usar la herramienta Azure IoT Explorer para ver los datos de telemetría que envía. La aplicación de ejemplo se escribe para Python y se incluye en el SDK de dispositivo de Azure IoT Hub para Python. Un generador de soluciones puede usar la herramienta Azure IoT Explorer para comprender las funcionalidades de cualquier dispositivo IoT Plug and Play sin necesidad de ver nada de código del dispositivo.

Examinar el código

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 como se indica a continuación:

pip install azure-iot-device

Clone el repositorio IoT del SDK de Python:

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

Ejecución del dispositivo de ejemplo

La carpeta azure-iot-sdk-python/samples/pnp contiene el código de ejemplo para el dispositivo de IoT Plug and Play. En este tutorial se usa el archivo simple_thermostat.py. Este código de ejemplo implementa un dispositivo compatible con IoT Plug and Play y usa la biblioteca de cliente de dispositivo Python de Azure IoT.

Abra el archivo simple_thermostat.py en un editor de texto. Observe cómo:

  1. Define un identificador de modelo de dispositivo gemelo (DTMI) único que representa de forma única el termostato. El usuario debe conocer el DTMI, que varía en función del escenario de implementación del dispositivo. En el ejemplo actual, el modelo representa un termostato que tiene telemetría, propiedades y comandos asociados a la temperatura de supervisión.

  2. Tiene funciones para definir implementaciones de controlador de comandos. Estos controladores se escriben para definir el modo en que el dispositivo responde a las solicitudes de comandos.

  3. Tiene una función para definir una respuesta de comando. Debe crear funciones de respuesta de comandos para devolver una respuesta a su centro de IoT.

  4. Define una función de escucha de teclado de entrada que le permite salir de la aplicación.

  5. Tiene una función main. La función main:

    1. Usa el SDK de dispositivo para crear un cliente de dispositivo y conectarse a su centro de IoT.

    2. Actualiza las propiedades. El modelo de Thermostat define targetTemperature y maxTempSinceLastReboot como las dos propiedades del termostato. Las propiedades se actualizan mediante el método patch_twin_reported_properties definido en device_client.

    3. Inicia la escucha de las solicitudes de comando con la función execute_command_listener. La función configura un "agente de escucha" para escuchar los comandos que provienen del servicio. Al configurar el agente de escucha, debe proporcionar method_name, user_command_handler y create_user_response_handler.

      • La función user_command_handler define lo que debe hacer el dispositivo cuando recibe un comando.
      • La función create_user_response_handler crea una respuesta para enviar al centro de IoT cuando un comando se ejecuta correctamente. Puede ver esta respuesta en el portal.
    4. Empieza a enviar telemetría. El objeto pnp_send_telemetry se define en el archivo pnp_methods.py. En el código de ejemplo se usa un bucle para llamar a esta función cada ocho segundos.

    5. Deshabilita todos los agentes de escucha y las tareas, y sale del bucle al presionar Q o q.

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.

Ahora que ha visto el código, use el siguiente comando para ejecutar el ejemplo:

python simple_thermostat.py

Verá la salida siguiente, lo que significa que el dispositivo está enviando datos de telemetría al centro y que ya está listo para recibir comandos y actualizaciones de propiedades:

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

Siga ejecutando el ejemplo a medida que complete los pasos siguientes.

Uso de Azure IoT Explorer para validar el código

Una vez iniciado el ejemplo de cliente de dispositivo, compruebe que funciona con la herramienta Azure IoT Explorer.

  1. Abra el explorador Azure IoT.

  2. En la página Centros de IoT, si aún no ha agregado una conexión al centro de IoT, seleccione + Agregar conexión. Escriba la cadena de conexión del centro de IoT que creó previamente y seleccione Guardar.

  3. En la página IoT Plug and Play Settings (Configuración de IoT Plug and Play), seleccione + Agregar > Carpeta local y seleccione la carpeta local models donde guardó los archivos de modelo.

  4. En la página Centros de IoT, haga clic en el nombre del centro con el que desea trabajar. Verá una lista de dispositivos registrados en el centro de IoT.

  5. Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.

  6. En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.

  7. Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.

  8. Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.

  9. Seleccione la página Telemetría y haga clic en Iniciar para ver los datos de telemetría que envía el dispositivo para este componente.

  10. Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.

  11. Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.

  12. Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).

  13. Para ver el nuevo valor, seleccione el botón Actualizar.

  14. Seleccione la página Comandos para ver todos los comandos para este componente.

  15. Seleccione el comando que desea probar para establecer el parámetro, si existe. Seleccione Enviar comando para llamar al comando en el dispositivo. Puede ver que el dispositivo responde al comando en la ventana del símbolo del sistema donde se está ejecutando el código de ejemplo.

Limpieza de recursos

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

Si va a desarrollar para servicios restringidos, puede usar IoT Plug and Play con:

En este artículo se incluyen vínculos y recursos para estos escenarios restringidos.

Requisitos previos

En muchos de los ejemplos siguientes se requiere un dispositivo de hardware específico y los requisitos previos son diferentes en cada ejemplo. Para conocer de forma detallada los requisitos previos, la configuración y la compilación, siga el vínculo al ejemplo correspondiente.

Uso del SDK para C insertado

El SDK para C insertado ofrece una solución ligera para conectar dispositivos restringidos a servicios de Azure IoT, incluido el uso de las convenciones de IoT Plug and Play. Los siguientes vínculos incluyen ejemplos para dispositivos basados en MCU y también con fines educativos y de depuración.

Uso de un dispositivo basado en MCU

Para ver un tutorial completo donde se usa el SDK para C insertado, Device Provisioning Service e IoT Plug and Play en un MCU, consulte Reasignación de la placa de desarrollo PIC-IoT Wx para conectarse a Azure mediante IoT Hub Device Provisioning Service.

Muestras de introducción

El repositorio del SDK para C insertado contiene varias muestras que indican cómo usar IoT Plug and Play:

Nota

Estas muestras se presentan en ejecución en Windows y Linux con fines educativos y de depuración. En un escenario de producción, las muestras solo están pensadas para dispositivos restringidos.

Uso de Eclipse ThreadX

Eclipse ThreadX incluye una capa ligera que agrega conectividad nativa a los servicios en la nube de Azure IoT. Esta capa proporciona un mecanismo sencillo para conectar dispositivos restringidos a Azure IoT y, al mismo tiempo, aprovechar las características avanzadas de Eclipse ThreadX. Para más información, consulte la información general de Eclipse ThreadX.

Cadenas de herramientas

Los ejemplos de Eclipse ThreadX se proporcionan con distintos tipos de combinaciones de IDE y cadena de herramientas, como los siguientes:

Ejemplos

En la tabla siguiente se muestran ejemplos que ilustran cómo empezar a trabajar en distintos dispositivos con Eclipse ThreadX y IoT Plug and Play:

Fabricante Dispositivo Ejemplos
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

Pasos siguientes

En este tutorial ha aprendido a conectar un dispositivo IoT Plug and Play a un centro de IoT. Para más información sobre cómo crear una solución que interactúe con dispositivos IoT Plug and Play, consulte: