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.
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:
- Visual Studio (Community, Professional o Enterprise): asegúrese de incluir la carga de trabajo Desarrollo para el escritorio con C++ cuando instale Visual Studio.
- Git.
- CMake.
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
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.
Cuando Visual Studio esté listo, en el Explorador de soluciones, desplácese hasta el ejemplo iothub_client/samples/pnp/pnp_simple_thermostat/.
Haga clic con el botón derecho en el archivo pnp_simple_thermostat.c y seleccione Agregar configuración de depuración. Seleccione Predeterminado.
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>" } } ] }
Haga clic con el botón derecho en el archivo pnp_simple_thermostat.c y seleccione Establecer como elemento de inicio.
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.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:
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
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.
Abra el explorador Azure IoT.
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.
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.
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.
Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.
En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.
Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.
Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.
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.
Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.
Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.
Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).
Para ver el nuevo valor, seleccione el botón Actualizar.
Seleccione la página Comandos para ver todos los comandos para este componente.
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.
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 "\
".
- El SDK de .NET más reciente para su plataforma.
- Git.
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.
Abra el explorador Azure IoT.
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.
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.
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.
Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.
En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.
Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.
Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.
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.
Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.
Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.
Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).
Para ver el nuevo valor, seleccione el botón Actualizar.
Seleccione la página Comandos para ver todos los comandos para este componente.
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.
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.
Abra el explorador Azure IoT.
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.
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.
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.
Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.
En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.
Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.
Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.
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.
Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.
Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.
Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).
Para ver el nuevo valor, seleccione el botón Actualizar.
Seleccione la página Comandos para ver todos los comandos para este componente.
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.
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.
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:
- Importar las interfaces necesarias.
- Escribir un controlador de actualización de propiedades y un controlador de comandos.
- Controlar las revisiones de propiedades deseadas y enviar telemetría.
- 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:
- Cree el dispositivo a partir de la cadena de conexión o aprovisiónelo con DPS.
- Use la opción modelID para especificar el modelo de dispositivo IoT Plug and Play.
- Habilite el controlador de comandos.
- Envíe telemetría desde el dispositivo al centro.
- Obtenga los dispositivos gemelos y actualice las propiedades proporcionadas.
- 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.
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.
Abra el explorador Azure IoT.
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.
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.
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.
Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.
En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.
Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.
Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.
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.
Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.
Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.
Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).
Para ver el nuevo valor, seleccione el botón Actualizar.
Seleccione la página Comandos para ver todos los comandos para este componente.
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.
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:
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.
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.
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.
Define una función de escucha de teclado de entrada que le permite salir de la aplicación.
Tiene una función main. La función main:
Usa el SDK de dispositivo para crear un cliente de dispositivo y conectarse a su centro de IoT.
Actualiza las propiedades. El modelo de Thermostat define
targetTemperature
ymaxTempSinceLastReboot
como las dos propiedades del termostato. Las propiedades se actualizan mediante el métodopatch_twin_reported_properties
definido endevice_client
.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
ycreate_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.
- La función
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.
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.
Abra el explorador Azure IoT.
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.
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.
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.
Haga clic en el Id. de dispositivo del dispositivo que creó anteriormente.
En el menú de la izquierda se muestran los diferentes tipos de información disponibles para el dispositivo.
Seleccione IoT Plug and Play components (Componentes de IoT Plug and Play) para ver la información del modelo del dispositivo.
Puede ver los distintos componentes del dispositivo. El componente predeterminado y los adicionales. Seleccione un componente con el que trabajar.
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.
Seleccione la página Propiedades (solo lectura) para ver las propiedades de solo lectura que se muestran para este componente.
Seleccione la página Properties (writable) (Propiedades [grabables]) para ver las propiedades grabables que puede actualizar para este componente.
Seleccione una propiedad por su nombre, escriba un nuevo valor para ella y seleccione Update desired value (Actualizar el valor deseado).
Para ver el nuevo valor, seleccione el botón Actualizar.
Seleccione la página Comandos para ver todos los comandos para este componente.
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:
- IAR: IDE de Workbench insertado de IAR
- GCC/CMake: se basa en el sistema de compilación CMake de código abierto y en la cadena de herramientas insertada de Arm de GNU.
- MCUExpresso: IDE de MCUXpresso de NXP
- STM32Cube: IDE de STM32Cube de STMicroelectronic
- MPLAB: IDE de MPLAB X de Microchip
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/CMake • IAR • MPLAB |
MXCHIP | AZ3166 | GCC/CMake |
NXP | MIMXRT1060-EVK | GCC/CMake • IAR • MCUXpresso |
STMicroelectronics | 32F746GDISCOVERY | IAR • STM32Cube |
STMicroelectronics | B-L475E-IOT01 | GCC/CMake • IAR • STM32Cube |
STMicroelectronics | B-L4S5I-IOT01 | GCC/CMake • IAR • STM32Cube |
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: