Inicio rápido: Control de un dispositivo conectado a IoT Hub

En este inicio rápido, usa un método directo para controlar un dispositivo simulado conectado a IoT Hub. IoT Hub es un servicio de Azure que permite administrar dispositivos IoT desde la nube e ingerir grandes volúmenes de datos de telemetría de dispositivos en la nube para su almacenamiento o procesamiento. Puede usar métodos directos para cambiar el comportamiento de los dispositivos conectados a IoT Hub de forma remota.

El inicio rápido usa dos aplicaciones .NET escritas anteriormente:

  • Una aplicación de dispositivo simulado que responde a métodos directos que se llaman desde una aplicación de servicio. Para recibir las llamadas de método directo, esta aplicación se conecta a un punto de conexión específico del dispositivo en IoT Hub.

  • Una aplicación de servicio que llama a los métodos directos en el dispositivo simulado. Para llamar a un método directo en un dispositivo, esta aplicación se conecta a un punto de conexión de servicio en IoT Hub.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. cree una de forma gratuita.

  • Las dos aplicaciones de ejemplo que se ejecutan en este inicio rápido se escriben con C#. Se necesita el SDK de .NET 6.0, o cualquier versión superior, en la máquina de desarrollo.

    Puede descargar el SDK de .NET Core para varias plataformas desde .NET.

    Puede verificar la versión actual de C# en el equipo de desarrollo con el comando siguiente:

    dotnet --version
    
  • Clone el SDK de Azure IoT C# o descárguelo de GitHub.

  • Asegúrese de que el puerto 8883 está abierto en el firewall. En el dispositivo de ejemplo de este inicio rápido se usa el protocolo MQTT, que se comunica mediante el puerto 8883. Este puerto puede estar bloqueado en algunos entornos de red corporativos y educativos. Para más información y para saber cómo solucionar este problema, consulte el artículo sobre la conexión a IoT Hub (MQTT).

Nota

En este artículo se usa la versión más reciente de la extensión de Azure IoT, denominada azure-iot. La versión heredada se denomina azure-cli-iot-ext. Solo debe tener instalada una versión a la vez. Puede usar el comando az extension list para validar las extensiones instaladas actualmente.

Use az extension remove --name azure-cli-iot-ext para eliminar la versión heredada de la extensión.

Use az extension add --name azure-iot para agregar la nueva versión de la extensión.

Para ver las extensiones que ha instalado, use az extension list.

En esta sección, usará la CLI de Azure para crear un centro de IoT y un grupo de recursos. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Un centro de IoT funciona como centro de mensajes unificado para la comunicación bidireccional entre la aplicación de IoT y los dispositivos.

Si ya tiene un centro de IoT en su suscripción de Azure, puede omitir esta sección.

Para crear un centro de IoT y un grupo de recursos:

  1. Inicie la aplicación de la CLI. Para ejecutar los comandos de la CLI en el resto de este artículo, copie la sintaxis de comando, péguela en la aplicación de la CLI, edite los valores de las variables y presione Enter.

    • Si usa Cloud Shell, seleccione el botón Probar en los comandos de la CLI para iniciar Cloud Shell en una ventana dividida del explorador. O bien, puede abrir Cloud Shell en una pestaña del explorador independiente.
    • Si usa la CLI de Azure localmente, inicie la aplicación de consola de la CLI e inicie sesión en la CLI de Azure.
  2. Ejecute az extension add para instalar o actualizar la extensión azure-iot a la versión actual.

    az extension add --upgrade --name azure-iot
    
  3. En la aplicación de la CLI, ejecute el comando az group create para crear un grupo de recursos. El siguiente comando crea un grupo de recursos denominado MyResourceGroup en la ubicación eastus.

    Nota

    Opcionalmente, puede establecer otra ubicación. Para ver las ubicaciones disponibles, ejecute az account list-locations. En este inicio rápido se usa eastus, como se muestra en el comando de ejemplo.

    az group create --name MyResourceGroup --location eastus
    
  4. Ejecute el comando az iot hub create para crear una instancia de IoT Hub. La creación de una instancia de IoT Hub puede tardar unos minutos.

    YourIotHubName. Reemplace este marcador de posición y las llaves circundantes en el siguiente comando, con el nombre que eligió para el centro de IoT. Un nombre de centro de IoT debe ser único globalmente en Azure. Use el nombre del centro de IoT a lo largo de este inicio rápido cuando vea el marcador de posición.

    az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
    

Recuperación de la cadena de conexión de servicio

También necesita una cadena de conexión de servicio del centro de IoT para permitir que la aplicación de servicio se conecte al centro y recupere los mensajes. La cadena de conexión de servicio es para el centro de IoT en su conjunto y no es la cadena de conexión del dispositivo que recuperó en la sección anterior.

El comando siguiente recupera la cadena de conexión del servicio de su instancia de IoT Hub:

az iot hub connection-string show --policy-name service --hub-name {YourIoTHubName} --output table

Anote la cadena de conexión del servicio, que se parecerá a esta:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

Usará este valor más adelante en este inicio rápido.

Simulación de un dispositivo

La aplicación del dispositivo simulado se conecta a un punto de conexión específico del dispositivo en IoT Hub, envía los datos de telemetría simulados y escucha llamadas de método directo desde el centro. En este inicio rápido, la llamada de método directo desde el centro indica al dispositivo que debe cambiar el intervalo en el que envía los datos de telemetría. El dispositivo simulado envía una confirmación al centro después de que ejecuta el método directo.

  1. En una ventana de terminal local, vaya a la carpeta raíz del proyecto de C# de muestra. A continuación, vaya a la carpeta iothub\device\samples\getting started\SimulatedDeviceWithCommand.

  2. Ejecute los comandos siguientes para instalar los paquetes necesarios para la aplicación de dispositivo simulado:

    dotnet restore
    
  3. Ejecute el comando siguiente para compilar la aplicación de dispositivo simulado y ejecutarla.

    {DeviceConnectionString}: sustituya este marcador de posición por la cadena de conexión del dispositivo que anotó anteriormente.

    dotnet run -- -c "{DeviceConnectionString}"
    

    La siguiente captura de pantalla muestra la salida en la que la aplicación de dispositivo simulado envía datos de telemetría a IoT Hub:

    Ejecutar el dispositivo simulado

Llamar al método directo

La aplicación de servicio se conecta a un punto de conexión de servicio en IoT Hub. La aplicación realiza llamadas de método directo a un dispositivo con IoT Hub y escucha las confirmaciones. Las aplicación de servicio de IoT Hub habitualmente se ejecutan en la nube.

  1. En otra ventana de terminal local, vaya a la carpeta raíz del proyecto de C# de muestra. A continuación, vaya a la carpeta iothub\service\samples\getting started\InvokeDeviceMethod.

  2. En la ventana de terminal local, ejecute los comandos siguientes para instalar las bibliotecas necesarias para la aplicación de servicio:

    dotnet build
    
  3. En la ventana de terminal local, ejecute los comandos siguientes para compilar la aplicación de servicio y ejecutarla.

    {ServiceConnectionString}: reemplace este marcador de posición por la cadena de conexión del servicio IoT Hub que anotó anteriormente.

    {DeviceName}: reemplace este marcador de posición por el nombre del dispositivo que registró.

    dotnet run -- -c "{ServiceConnectionString}" -d {DeviceName}
    

    En la siguiente captura de pantalla se muestra la salida en la que la aplicación realiza una llamada de método directo al dispositivo y recibe una confirmación:

    Ejecutar la aplicación de servicio

    Después de ejecutar la aplicación de servicio, verá un mensaje en la ventana de consola que ejecuta el dispositivo simulado y cambiará la velocidad a la que envía mensajes:

    Cambio en el cliente simulado

En este inicio rápido se usan dos aplicaciones Java:

  • Una aplicación de dispositivo simulado que responde a métodos directos que se llaman desde una aplicación back-end.
  • Una aplicación de servicio que llama al método directo en el dispositivo simulado.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. cree una de forma gratuita.

  • Java SE Development Kit 8. En el artículo Soporte técnico de Java a largo plazo para Azure y Azure Stack, en la sección Soporte técnico a largo plazo, seleccione Java 8.

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

    java -version
    
  • Apache Maven 3.

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

    mvn --version
    
  • Clone los ejemplos de Azure IoT Java o descárguelos de GitHub.

  • Asegúrese de que el puerto 8883 está abierto en el firewall. En el dispositivo de ejemplo de este inicio rápido se usa el protocolo MQTT, que se comunica mediante el puerto 8883. Este puerto puede estar bloqueado en algunos entornos de red corporativos y educativos. Para más información y para saber cómo solucionar este problema, consulte el artículo sobre la conexión a IoT Hub (MQTT).

Nota

En este artículo se usa la versión más reciente de la extensión de Azure IoT, denominada azure-iot. La versión heredada se denomina azure-cli-iot-ext. Solo debe tener instalada una versión a la vez. Puede usar el comando az extension list para validar las extensiones instaladas actualmente.

Use az extension remove --name azure-cli-iot-ext para eliminar la versión heredada de la extensión.

Use az extension add --name azure-iot para agregar la nueva versión de la extensión.

Para ver las extensiones que ha instalado, use az extension list.

Crear un centro de IoT

En esta sección, usará la CLI de Azure para crear un centro de IoT y un grupo de recursos. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Un centro de IoT funciona como centro de mensajes unificado para la comunicación bidireccional entre la aplicación de IoT y los dispositivos.

Si ya tiene un centro de IoT en su suscripción de Azure, puede omitir esta sección.

Para crear un centro de IoT y un grupo de recursos:

  1. Inicie la aplicación de la CLI. Para ejecutar los comandos de la CLI en el resto de este artículo, copie la sintaxis de comando, péguela en la aplicación de la CLI, edite los valores de las variables y presione Enter.

    • Si usa Cloud Shell, seleccione el botón Probar en los comandos de la CLI para iniciar Cloud Shell en una ventana dividida del explorador. O bien, puede abrir Cloud Shell en una pestaña del explorador independiente.
    • Si usa la CLI de Azure localmente, inicie la aplicación de consola de la CLI e inicie sesión en la CLI de Azure.
  2. Ejecute az extension add para instalar o actualizar la extensión azure-iot a la versión actual.

    az extension add --upgrade --name azure-iot
    
  3. En la aplicación de la CLI, ejecute el comando az group create para crear un grupo de recursos. El siguiente comando crea un grupo de recursos denominado MyResourceGroup en la ubicación eastus.

    Nota

    Opcionalmente, puede establecer otra ubicación. Para ver las ubicaciones disponibles, ejecute az account list-locations. En este inicio rápido se usa eastus, como se muestra en el comando de ejemplo.

    az group create --name MyResourceGroup --location eastus
    
  4. Ejecute el comando az iot hub create para crear una instancia de IoT Hub. La creación de una instancia de IoT Hub puede tardar unos minutos.

    YourIotHubName. Reemplace este marcador de posición y las llaves circundantes en el siguiente comando, con el nombre que eligió para el centro de IoT. Un nombre de centro de IoT debe ser único globalmente en Azure. Use el nombre del centro de IoT a lo largo de este inicio rápido cuando vea el marcador de posición.

    az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
    

Registrar un dispositivo

Debe registrar un dispositivo con IoT Hub antes de poder conectarlo. En esta sección, se usa la CLI de Azure para crear una identidad del dispositivo.

Si ya tiene un dispositivo registrado en el centro de IoT, puede omitir esta sección.

Para crear una identidad de dispositivo:

  1. Ejecute el comando az iot hub device-identity create en el shell de la CLI. Este comando crea la identidad del dispositivo.

    your_iot_hub_name. reemplace este marcador de posición por el nombre elegido para el centro de IoT.

    myDevice. Puede usar este nombre para el id. de dispositivo en este artículo o proporcionar un nombre de dispositivo diferente.

    az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
    
  2. Ejecute el comando az iot hub device-identity connection-string show.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
    

    La cadena de conexión tiene el formato siguiente:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Guarde la cadena de conexión en una ubicación segura.

Nota

Mantenga abierta la aplicación de la CLI. Lo usará en pasos posteriores.

Recuperación de la cadena de conexión de servicio

También necesita una cadena de conexión de servicio para permitir que la aplicación back-end se conecte a IoT Hub y recupere los mensajes. El comando siguiente recupera la cadena de conexión del servicio de su instancia de IoT Hub:

YourIoTHubName: reemplace este marcador de posición por el nombre elegido para el centro de IoT.

az iot hub connection-string show --policy-name service --hub-name {YourIoTHubName} --output table

Anote la cadena de conexión del servicio, que se parecerá a esta:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

Usará este valor más adelante en este inicio rápido. Esta cadena de conexión del servicio no es la que anotó en el paso anterior.

Simulación de un dispositivo

La aplicación del dispositivo simulado se conecta a un punto de conexión específico del dispositivo en IoT Hub, envía los datos de telemetría simulados y escucha llamadas de método directo desde el centro. En este inicio rápido, la llamada de método directo desde el centro indica al dispositivo que debe cambiar el intervalo en el que envía los datos de telemetría. El dispositivo simulado envía una confirmación al centro después de que ejecuta el método directo.

  1. En una ventana de terminal local, vaya a la carpeta raíz del proyecto de Java de ejemplo. A continuación, vaya a la carpeta iot-hub\Quickstarts\simulated-device-2.

  2. Abra el archivo src/main/java/com/microsoft/docs/iothub/samples/SimulatedDevice.java en el editor de texto de su elección.

    Reemplace el valor de la variable connString por la cadena de conexión del dispositivo que anotó anteriormente. A continuación, guarde los cambios realizados en SimulatedDevice.java.

  3. En la ventana de terminal local, ejecute los comandos siguientes para instalar las bibliotecas necesarias y compile la aplicación de dispositivo simulado:

    mvn clean package
    
  4. En la ventana de terminal local, ejecute los comandos siguientes para ejecutar la aplicación de dispositivo simulado:

    java -jar target/simulated-device-2-1.0.0-with-deps.jar
    

    La siguiente captura de pantalla muestra la salida en la que la aplicación de dispositivo simulado envía datos de telemetría a IoT Hub:

    Salida de los datos de telemetría enviados por el dispositivo al centro de IoT

Llamar al método directo

La aplicación back-end se conecta a un punto de conexión de servicio en IoT Hub. La aplicación realiza llamadas de método directo a un dispositivo con IoT Hub y escucha las confirmaciones. Normalmente, una aplicación back-end de IoT Hub se ejecuta en la nube.

  1. En otra ventana de terminal local, vaya a la carpeta raíz del proyecto de Java de ejemplo. A continuación, vaya a la carpeta iot-hub\Quickstarts\back-end-application.

  2. Abra el archivo src/main/java/com/microsoft/docs/iothub/samples/BackEndApplication.java en el editor de texto que prefiera.

    Reemplace el valor de la variable iotHubConnectionString por la cadena de conexión del servicio que anotó anteriormente. Luego, guarde los cambios en el archivo BackEndApplication.java.

  3. En la ventana de terminal local, ejecute los comandos siguientes para instalar las bibliotecas necesarias y compile la aplicación back-end:

    mvn clean package
    
  4. En la ventana de terminal local, ejecute los comandos siguientes para ejecutar la aplicación back-end:

    java -jar target/back-end-application-1.0.0-with-deps.jar
    

    En la siguiente captura de pantalla se muestra la salida en la que la aplicación realiza una llamada de método directo al dispositivo y recibe una confirmación:

    Salida cuando la aplicación realiza una llamada de método directo mediante IoT Hub

    Después de ejecutar la aplicación back-end, verá un mensaje en la ventana de consola que ejecuta el dispositivo simulado y cambiará la velocidad a la que envía mensajes:

    El mensaje de la consola desde el dispositivo muestra la velocidad a la que cambia

En este inicio rápido se usan dos aplicaciones de Node.js:

  • Una aplicación de dispositivo simulado que responde a métodos directos que se llaman desde una aplicación back-end. Para recibir las llamadas de método directo, esta aplicación se conecta a un punto de conexión específico del dispositivo en IoT Hub.
  • Una aplicación back-end que llama a los métodos directos en el dispositivo simulado. Para llamar a un método directo en un dispositivo, esta aplicación se conecta a un punto de conexión específico del servicio en IoT Hub.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. cree una de forma gratuita.

  • Node.js 12+.

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

    node --version
    
  • Clone los ejemplos de Azure IoT Node.js o descárguelos de GitHub.

  • Asegúrese de que el puerto 8883 está abierto en el firewall. En el dispositivo de ejemplo de este inicio rápido se usa el protocolo MQTT, que se comunica mediante el puerto 8883. Este puerto puede estar bloqueado en algunos entornos de red corporativos y educativos. Para más información y para saber cómo solucionar este problema, consulte el artículo sobre la conexión a IoT Hub (MQTT).

Nota

En este artículo se usa la versión más reciente de la extensión de Azure IoT, denominada azure-iot. La versión heredada se denomina azure-cli-iot-ext. Solo debe tener instalada una versión a la vez. Puede usar el comando az extension list para validar las extensiones instaladas actualmente.

Use az extension remove --name azure-cli-iot-ext para eliminar la versión heredada de la extensión.

Use az extension add --name azure-iot para agregar la nueva versión de la extensión.

Para ver las extensiones que ha instalado, use az extension list.

Crear un centro de IoT

En esta sección, usará la CLI de Azure para crear un centro de IoT y un grupo de recursos. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Un centro de IoT funciona como centro de mensajes unificado para la comunicación bidireccional entre la aplicación de IoT y los dispositivos.

Si ya tiene un centro de IoT en su suscripción de Azure, puede omitir esta sección.

Para crear un centro de IoT y un grupo de recursos:

  1. Inicie la aplicación de la CLI. Para ejecutar los comandos de la CLI en el resto de este artículo, copie la sintaxis de comando, péguela en la aplicación de la CLI, edite los valores de las variables y presione Enter.

    • Si usa Cloud Shell, seleccione el botón Probar en los comandos de la CLI para iniciar Cloud Shell en una ventana dividida del explorador. O bien, puede abrir Cloud Shell en una pestaña del explorador independiente.
    • Si usa la CLI de Azure localmente, inicie la aplicación de consola de la CLI e inicie sesión en la CLI de Azure.
  2. Ejecute az extension add para instalar o actualizar la extensión azure-iot a la versión actual.

    az extension add --upgrade --name azure-iot
    
  3. En la aplicación de la CLI, ejecute el comando az group create para crear un grupo de recursos. El siguiente comando crea un grupo de recursos denominado MyResourceGroup en la ubicación eastus.

    Nota

    Opcionalmente, puede establecer otra ubicación. Para ver las ubicaciones disponibles, ejecute az account list-locations. En este inicio rápido se usa eastus, como se muestra en el comando de ejemplo.

    az group create --name MyResourceGroup --location eastus
    
  4. Ejecute el comando az iot hub create para crear una instancia de IoT Hub. La creación de una instancia de IoT Hub puede tardar unos minutos.

    YourIotHubName. Reemplace este marcador de posición y las llaves circundantes en el siguiente comando, con el nombre que eligió para el centro de IoT. Un nombre de centro de IoT debe ser único globalmente en Azure. Use el nombre del centro de IoT a lo largo de este inicio rápido cuando vea el marcador de posición.

    az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
    

Registrar un dispositivo

Debe registrar un dispositivo con IoT Hub antes de poder conectarlo. En esta sección, se usa la CLI de Azure para crear una identidad del dispositivo.

Si ya tiene un dispositivo registrado en el centro de IoT, puede omitir esta sección.

Para crear una identidad de dispositivo:

  1. Ejecute el comando az iot hub device-identity create en el shell de la CLI. Este comando crea la identidad del dispositivo.

    your_iot_hub_name. reemplace este marcador de posición por el nombre elegido para el centro de IoT.

    myDevice. Puede usar este nombre para el id. de dispositivo en este artículo o proporcionar un nombre de dispositivo diferente.

    az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
    
  2. Ejecute el comando az iot hub device-identity connection-string show.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
    

    La cadena de conexión tiene el formato siguiente:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Guarde la cadena de conexión en una ubicación segura.

Nota

Mantenga abierta la aplicación de la CLI. Lo usará en pasos posteriores.

Recuperación de la cadena de conexión de servicio

También necesita una cadena de conexión de servicio del centro de IoT para permitir que la aplicación back-end se conecte al centro de IoT y recupere los mensajes. El comando siguiente recupera la cadena de conexión del servicio de su instancia de IoT Hub:

YourIoTHubName: reemplace este marcador de posición por el nombre elegido para el centro de IoT.

az iot hub connection-string show \
  --policy-name service --hub-name {YourIoTHubName} --output table

Anote la cadena de conexión del servicio, que se parecerá a esta:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

Usará este valor más adelante en este inicio rápido. Esta cadena de conexión del servicio no es la que anotó en el paso anterior.

Simulación de un dispositivo

La aplicación del dispositivo simulado se conecta a un punto de conexión específico del dispositivo en IoT Hub, envía los datos de telemetría simulados y escucha llamadas de método directo desde el centro. En este inicio rápido, la llamada de método directo desde el centro indica al dispositivo que debe cambiar el intervalo en el que envía los datos de telemetría. El dispositivo simulado envía una confirmación al centro después de que ejecuta el método directo.

  1. En una ventana de terminal local, vaya a la carpeta raíz del proyecto de Node.js de ejemplo. A continuación, vaya a la carpeta iot-hub\Quickstarts\simulated-device-2.

  2. Abra el archivo SimulatedDevice.js en el editor de texto de su elección.

    Reemplace el valor de la variable connectionString por la cadena de conexión del dispositivo que anotó anteriormente. Luego, guarde los cambios realizados en SimulatedDevice.js.

  3. En la ventana de terminal local, ejecute los comandos siguientes para instalar las bibliotecas necesarias y ejecute la aplicación de dispositivo simulado:

    npm install
    node SimulatedDevice.js
    

    La siguiente captura de pantalla muestra la salida en la que la aplicación de dispositivo simulado envía datos de telemetría a IoT Hub:

    Ejecutar el dispositivo simulado

Llamar al método directo

La aplicación back-end se conecta a un punto de conexión de servicio en IoT Hub. La aplicación realiza llamadas de método directo a un dispositivo con IoT Hub y escucha las confirmaciones. Normalmente, una aplicación back-end de IoT Hub se ejecuta en la nube.

  1. En otra ventana de terminal local, vaya a la carpeta raíz del proyecto de Node.js de ejemplo. A continuación, vaya a la carpeta iot-hub\Quickstarts\back-end-application.

  2. Abra el archivo BackEndApplication.js en el editor de texto de su elección.

    Reemplace el valor de la variable connectionString por la cadena de conexión del servicio que anotó anteriormente. Luego, guarde los cambios en el archivo BackEndApplication.js.

  3. En la ventana de terminal local, ejecute los comandos siguientes para instalar las bibliotecas necesarias y ejecute la aplicación back-end:

    npm install
    node BackEndApplication.js
    

    En la siguiente captura de pantalla se muestra la salida en la que la aplicación realiza una llamada de método directo al dispositivo y recibe una confirmación:

    Salida cuando la aplicación realiza una llamada de método directo al dispositivo

    Después de ejecutar la aplicación back-end, verá un mensaje en la ventana de consola que ejecuta el dispositivo simulado y cambiará la velocidad a la que envía mensajes:

    Salida cuando hay un cambio en el cliente simulado

En este inicio rápido se usan dos aplicaciones Python:

  • Una aplicación de dispositivo simulado que responde a métodos directos que se llaman desde una aplicación back-end.
  • Una aplicación back-end que llama a los métodos directos en el dispositivo simulado.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. cree una de forma gratuita.

  • Python 3.7+. Para obtener información acerca de otras versiones de Python compatibles, consulte el tema acerca de las características de los dispositivos IoT de Azure.

  • Clone los ejemplos de Azure IoT Python o descárguelos de GitHub.

  • Asegúrese de que el puerto 8883 está abierto en el firewall. En el dispositivo de ejemplo de este inicio rápido se usa el protocolo MQTT, que se comunica mediante el puerto 8883. Este puerto puede estar bloqueado en algunos entornos de red corporativos y educativos. Para más información y para saber cómo solucionar este problema, consulte el artículo sobre la conexión a IoT Hub (MQTT).

Nota

En este artículo se usa la versión más reciente de la extensión de Azure IoT, denominada azure-iot. La versión heredada se denomina azure-cli-iot-ext. Solo debe tener instalada una versión a la vez. Puede usar el comando az extension list para validar las extensiones instaladas actualmente.

Use az extension remove --name azure-cli-iot-ext para eliminar la versión heredada de la extensión.

Use az extension add --name azure-iot para agregar la nueva versión de la extensión.

Para ver las extensiones que ha instalado, use az extension list.

Crear un centro de IoT

En esta sección, usará la CLI de Azure para crear un centro de IoT y un grupo de recursos. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Un centro de IoT funciona como centro de mensajes unificado para la comunicación bidireccional entre la aplicación de IoT y los dispositivos.

Si ya tiene un centro de IoT en su suscripción de Azure, puede omitir esta sección.

Para crear un centro de IoT y un grupo de recursos:

  1. Inicie la aplicación de la CLI. Para ejecutar los comandos de la CLI en el resto de este artículo, copie la sintaxis de comando, péguela en la aplicación de la CLI, edite los valores de las variables y presione Enter.

    • Si usa Cloud Shell, seleccione el botón Probar en los comandos de la CLI para iniciar Cloud Shell en una ventana dividida del explorador. O bien, puede abrir Cloud Shell en una pestaña del explorador independiente.
    • Si usa la CLI de Azure localmente, inicie la aplicación de consola de la CLI e inicie sesión en la CLI de Azure.
  2. Ejecute az extension add para instalar o actualizar la extensión azure-iot a la versión actual.

    az extension add --upgrade --name azure-iot
    
  3. En la aplicación de la CLI, ejecute el comando az group create para crear un grupo de recursos. El siguiente comando crea un grupo de recursos denominado MyResourceGroup en la ubicación eastus.

    Nota

    Opcionalmente, puede establecer otra ubicación. Para ver las ubicaciones disponibles, ejecute az account list-locations. En este inicio rápido se usa eastus, como se muestra en el comando de ejemplo.

    az group create --name MyResourceGroup --location eastus
    
  4. Ejecute el comando az iot hub create para crear una instancia de IoT Hub. La creación de una instancia de IoT Hub puede tardar unos minutos.

    YourIotHubName. Reemplace este marcador de posición y las llaves circundantes en el siguiente comando, con el nombre que eligió para el centro de IoT. Un nombre de centro de IoT debe ser único globalmente en Azure. Use el nombre del centro de IoT a lo largo de este inicio rápido cuando vea el marcador de posición.

    az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
    

Registrar un dispositivo

Debe registrar un dispositivo con IoT Hub antes de poder conectarlo. En esta sección, se usa la CLI de Azure para crear una identidad del dispositivo.

Si ya tiene un dispositivo registrado en el centro de IoT, puede omitir esta sección.

Para crear una identidad de dispositivo:

  1. Ejecute el comando az iot hub device-identity create en el shell de la CLI. Este comando crea la identidad del dispositivo.

    your_iot_hub_name. reemplace este marcador de posición por el nombre elegido para el centro de IoT.

    myDevice. Puede usar este nombre para el id. de dispositivo en este artículo o proporcionar un nombre de dispositivo diferente.

    az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
    
  2. Ejecute el comando az iot hub device-identity connection-string show.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
    

    La cadena de conexión tiene el formato siguiente:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Guarde la cadena de conexión en una ubicación segura.

Nota

Mantenga abierta la aplicación de la CLI. Lo usará en pasos posteriores.

Recuperación de la cadena de conexión de servicio

También necesita una cadena de conexión de servicio para permitir que la aplicación back-end se conecte a IoT Hub y recupere los mensajes. El comando siguiente recupera la cadena de conexión del servicio de su instancia de IoT Hub:

YourIoTHubName: reemplace este marcador de posición por el nombre elegido para el centro de IoT.

az iot hub connection-string show \
  --policy-name service \
  --hub-name {YourIoTHubName} \
  --output table

Anote la cadena de conexión del servicio, que se parecerá a esta:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

Usará este valor más adelante en este inicio rápido. Esta cadena de conexión del servicio no es la que anotó en el paso anterior.

Simulación de un dispositivo

La aplicación del dispositivo simulado se conecta a un punto de conexión específico del dispositivo en IoT Hub, envía los datos de telemetría simulados y escucha llamadas de método directo desde el centro. En este inicio rápido, la llamada de método directo desde el centro indica al dispositivo que debe cambiar el intervalo en el que envía los datos de telemetría. El dispositivo simulado envía una confirmación al centro después de que ejecuta el método directo.

  1. En una ventana de terminal local, vaya a la carpeta raíz del proyecto de Python de muestra. A continuación, vaya a la carpeta iot-hub\Quickstarts\simulated-device-2.

  2. Abra el archivo SimulatedDeviceSync.py en el editor de texto de su elección.

    Reemplace el valor de la variable CONNECTION_STRING por la cadena de conexión del dispositivo que anotó anteriormente. Luego, guarde los cambios realizados en SimulatedDeviceSync.py.

  3. En la ventana de terminal local, ejecute los comandos siguientes para instalar las bibliotecas necesarias para la aplicación de dispositivo simulado:

    pip install azure-iot-device
    
  4. En la ventana de terminal local, ejecute los comandos siguientes para ejecutar la aplicación de dispositivo simulado:

    python SimulatedDeviceSync.py
    

    La siguiente captura de pantalla muestra la salida en la que la aplicación de dispositivo simulado envía datos de telemetría a IoT Hub:

    Ejecutar el dispositivo simulado

Llamar al método directo

La aplicación back-end se conecta a un punto de conexión de servicio en IoT Hub. La aplicación realiza llamadas de método directo a un dispositivo con IoT Hub y escucha las confirmaciones. Normalmente, una aplicación back-end de IoT Hub se ejecuta en la nube.

  1. En otra ventana de terminal local, vaya a la carpeta raíz del proyecto de Python de muestra. A continuación, vaya a la carpeta iot-hub\Quickstarts\back-end-application.

  2. Abra el archivo BackEndApplication.py en el editor de texto de su elección.

    Reemplace el valor de la variable CONNECTION_STRING por la cadena de conexión del servicio que anotó anteriormente. Luego, guarde los cambios en el archivo BackEndApplication.py.

  3. En la ventana de terminal local, ejecute los comandos siguientes para instalar las bibliotecas necesarias para la aplicación de dispositivo simulado:

    pip install azure-iot-hub
    
  4. En la ventana de terminal local, ejecute los comandos siguientes para ejecutar la aplicación back-end:

    python BackEndApplication.py
    

    En la siguiente captura de pantalla se muestra la salida en la que la aplicación realiza una llamada de método directo al dispositivo y recibe una confirmación:

    Ejecutar la aplicación back-end

    Después de ejecutar la aplicación back-end, verá un mensaje en la ventana de consola que ejecuta el dispositivo simulado y cambiará la velocidad a la que envía mensajes:

    Cambio en el cliente simulado

Limpieza de recursos

Si va a seguir con el siguiente artículo recomendado, puede mantener los recursos que ya ha creado y volverlos a utilizar.

En caso contrario, puede eliminar los recursos de Azure que creó en este artículo para evitar gastos.

Importante

La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos contenidos en él se eliminan permanentemente. Asegúrese de no eliminar por accidente el grupo de recursos o los recursos equivocados. Si ha creado una instancia de IoT Hub en un grupo de recursos ya existente que contiene recursos que desea conservar, puede eliminar solo esa instancia en lugar de eliminar todo el grupo de recursos.

Para eliminar un grupo de recursos por el nombre:

  1. Inicie sesión en Azure Portal y después seleccione Grupos de recursos.

  2. Escriba el nombre del grupo de recursos que contiene la instancia de IoT Hub en el cuadro de texto Filtrar por nombre.

  3. A la derecha del grupo de recursos de la lista de resultados, seleccione ... y, a continuación, Eliminar grupo de recursos.

    Eliminar

  4. Se le pedirá que confirme la eliminación del grupo de recursos. Escriba de nuevo el nombre del grupo de recursos para confirmar y, después, seleccione Eliminar. Transcurridos unos instantes, el grupo de recursos y todos los recursos que contiene se eliminan.

Pasos siguientes

En este inicio rápido ha llamado a un método directo en un dispositivo desde una aplicación de servicio y ha respondido a la llamada de método directo en una aplicación de dispositivo simulado.

Para obtener información sobre cómo redirigir mensajes del dispositivo a la nube a diferentes destinos en la nube, continúe con el siguiente tutorial.