Share via


Introducción a la administración de dispositivos (CLI de Azure)

Las aplicaciones de back-end pueden usar primitivos de Azure IoT Hub, como dispositivos gemelos y métodos directos, para iniciar y supervisar de forma remota las acciones de administración de dispositivos en los dispositivos. En este artículo se muestra cómo la CLI de Azure y un dispositivo pueden trabajar de manera conjunta a fin de invocar un método directo para un dispositivo mediante IoT Hub.

Nota

Las características descritas en este artículo solo están disponibles en el nivel estándar de IoT Hub. Para obtener más información sobre los niveles Básico y Estándar o Gratis de IoT Hub, consulte Elección del nivel adecuado de IoT Hub para la solución.

Use un método directo para iniciar acciones de administración de dispositivos (como las de reinicio, restablecimiento de fábrica y actualización de firmware) desde una sesión de la CLI de Azure. El dispositivo es responsable de:

  • Controlar la solicitud del método enviada desde IoT Hub.

  • Iniciar la acción específica del dispositivo correspondiente en el dispositivo.

  • Proporcionar actualizaciones de estado mediante las propiedades notificadas a IoT Hub.

Puede usar la CLI de Azure a fin ejecutar consultas de dispositivos gemelos para notificar el progreso de las acciones de administración de dispositivos. Para obtener más información sobre el uso de métodos directos, consulta la Guía de comunicación de la nube al dispositivo.

En este artículo se muestra cómo crear dos sesiones de la CLI de Azure:

  • Una sesión que crea un dispositivo simulado. El dispositivo simulado está configurado para devolver un código de estado y una carga JSON cuando se invoca cualquier método directo.

  • Una sesión que invoca un método directo en el dispositivo simulado creado en la otra sesión.

Prerrequisitos

  • CLI de Azure. También puede ejecutar todos los comandos de este artículo mediante Azure Cloud Shell, un shell interactivo de la CLI que se ejecuta en el explorador o en una aplicación como el terminal de Windows. Si usa el Cloud Shell, no necesita instalar nada. Si prefiere usar la CLI en un entorno local, para este artículo se requiere la versión 2.36 o posterior de la CLI de Azure. Ejecute az --version para encontrar la versión. Para instalar localmente o actualizar la CLI de Azure, vea Instalación de la CLI de Azure.

  • Una instancia de IoT Hub. Cree uno con la CLI o el Azure Portal.

  • Asegúrese de que está abierto el puerto 8883 del firewall. En el ejemplo de dispositivo de este artículo 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).

Preparar el Cloud Shell

Si desea usar Azure Cloud Shell, primero debe iniciarlo y configurarlo. Si usa la CLI localmente, vaya a la sección Preparar dos sesiones de la CLI.

  1. Seleccione el icono Cloud Shell en el encabezado de página del Azure Portal.

    Captura de pantalla de los controles globales del encabezado de página del Azure Portal, resaltando el icono de Cloud Shell.

    Nota

    Si es la primera vez que usa el Cloud Shell, le pedirá que cree el almacenamiento, que es necesario para usar el Cloud Shell. Seleccione una suscripción para crear una cuenta de almacenamiento y un recurso compartido de Microsoft Azure Files.

  2. Use el selector de entorno en la barra de herramientas de Cloud Shell para seleccionar el entorno de la CLI preferido. En este artículo se usa el entorno de Bash. También puede usar el entorno de PowerShell.

    Nota:

    Algunos comandos requieren una sintaxis o formato diferentes en los entornos de Bash y PowerShell. Para obtener más información, consulte Sugerencias para usar correctamente la CLI de Azure.

    Captura de pantalla de una ventana de Azure Cloud Shell, resaltando el selector de entorno en la barra de herramientas.

Preparación de dos sesiones de la CLI

A continuación, debe preparar dos sesiones de la CLI de Azure. Si utiliza Cloud Shell, ejecutará estas sesiones en pestañas independientes de Cloud Shell. Si usa un cliente de la CLI local, ejecutará instancias independientes de la CLI. Use las sesiones independientes de la CLI para las siguientes tareas:

  • La primera sesión simula un dispositivo IoT que se comunica con su centro de IoT.
  • La segunda sesión invoca un método directo desde el dispositivo simulado mediante el centro de IoT.

Nota

CLI de Azure requiere que haya iniciado sesión en su cuenta de Azure. Si usa el Cloud Shell, iniciará sesión automáticamente en su cuenta de Azure. Si usa un cliente de la CLI local, debe iniciar sesión en cada sesión de la CLI. Todas las comunicaciones entre la sesión de Shell de CLI de Azure y el centro de IoT se autentican y cifran. Como resultado, este artículo no necesita autenticación adicional que se usaría con un dispositivo real, como una cadena de conexión. Para más información sobre la autenticación con la CLI de Azure, consulte Inicio de sesión con la CLI de Azure.

  1. En la primera sesión de la CLI, ejecute el comando az extension add. El comando agrega la extensión de Microsoft Azure IoT para la CLI de Azure al shell de la CLI. La extensión agrega comandos específicos de IoT Hub, IoT Edge e IoT Device Provisioning Service (DPS) a la CLI de Azure. Después de instalar la extensión de Azure IOT, no es necesario volver a instalarla en ninguna sesión de Cloud Shell.

    az extension add --name azure-iot
    

    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.

  2. Abra la segunda sesión de la CLI. Si usa el Cloud Shell en un explorador, seleccione el icono Abrir nueva sesión en la barra de herramientas de la primera sesión de la CLI. Si usa la CLI localmente, abra una segunda instancia de la CLI.

    Captura de pantalla de una ventana de Azure Cloud Shell, resaltando el icono Abrir nueva sesión en la barra de herramientas.

Creación y simulación de un dispositivo

En esta sección, creará una identidad del dispositivo para el centro de IoT en la primera sesión de la CLI y, después, simulará un dispositivo con esa identidad del dispositivo. El dispositivo simulado responde a los métodos directos que se invocan en la segunda sesión de la CLI.

Para crear e iniciar un dispositivo simulado:

  1. En la primera sesión de la CLI, ejecute el comando az iot hub device-identity create, reemplazando los siguientes marcadores de posición por sus valores correspondientes. Este comando crea la identidad del dispositivo para el dispositivo simulado.

    {DeviceName}. Nombre del dispositivo simulado.

    {HubName}. El nombre del centro de IoT.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. En la primera sesión de la CLI, ejecute el comando az iot device simulate y reemplace los siguientes marcadores de posición por sus valores correspondientes. Este comando simula un dispositivo mediante la identidad del dispositivo que ha creado en el paso anterior. El dispositivo simulado está configurado para devolver un código de estado y una carga cada vez que se invoca un método directo.

    {DeviceName}. Nombre del dispositivo simulado.

    {HubName}. El nombre del centro de IoT.

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --method-response-code 201 \
                           --method-response-payload '{"result":"Direct method successful"}'
    

    Sugerencia

    De forma predeterminada, el comando az iot device simulate envía 100 mensajes del dispositivo a la nube con un intervalo de 3 segundos entre mensajes. La simulación finaliza después de que se hayan enviado todos los mensajes. Si desea que la simulación se ejecute más tiempo, puede usar el parámetro --msg-count para especificar más mensajes o el parámetro --msg-interval para especificar un intervalo más largo entre los mensajes. También puede volver a ejecutar el comando para reiniciar el dispositivo simulado.

Invocación de un método directo

En esta sección, se usa la segunda sesión de la CLI para invocar un método directo en el dispositivo simulado que se ejecuta en la primera sesión de la CLI.

  1. En la primera sesión de la CLI, confirme que el dispositivo simulado está en ejecución. Si no es así, vuelva a ejecutar el comando az iot device simulate desde Crear y simular un dispositivo.

  2. En la segunda sesión de la CLI, ejecute el comando az iot hub invoke-device-method y reemplace los siguientes marcadores de posición por sus valores correspondientes. En este ejemplo, no hay ningún método preexistente para el dispositivo. El comando llama a un nombre de método de ejemplo en el dispositivo simulado. El método proporciona un código de estado y una carga útil en su respuesta.

    {NombreDispositivo}. Nombre del dispositivo simulado.

    {HubName}. El nombre del centro de IoT.

    {NombreMétodo}. Nombre del método directo. El dispositivo simulado no tiene un método preexistente, por lo que puede elegir cualquiera para este comando.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName}
    
  3. En la primera sesión de la CLI, confirme que en la salida se muestra el método de invocación. En la captura de pantalla siguiente, se usan SampleDevice y SampleMethod para los marcadores de posición {DeviceName} y {MethodName}, respectivamente, en el comando az iot hub invoke-device-method de la CLI.

    Captura de pantalla de un dispositivo simulado que muestra la salida después de invocar un método.

  4. En la segunda sesión de la CLI, confirme que la salida muestra el código de estado y la carga recibidos del método invocado.

    Captura de pantalla de una ventana de Azure Cloud Shell en la que se muestran el código de estado y la carga de un método directo invocado.

Invocación de un método directo con una carga

En esta sección, se usa la segunda sesión de la CLI para invocar un método directo y proporcionar una carga al dispositivo simulado que se ejecuta en la primera sesión de la CLI.

  1. En la primera sesión de la CLI, confirme que el dispositivo simulado está en ejecución. Si no es así, vuelva a ejecutar el comando az iot device simulate desde Crear y simular un dispositivo.

  2. En la segunda sesión de la CLI, ejecute el comando az iot hub invoke-device-method y reemplace los siguientes marcadores de posición por sus valores correspondientes. En este ejemplo, no hay ningún método preexistente para el dispositivo. El comando llama a un nombre de método de ejemplo en el dispositivo simulado y proporciona una carga para ese método. El método proporciona un código de estado y una carga útil en su respuesta.

    {NombreDispositivo}. Nombre del dispositivo simulado.

    {HubName}. El nombre del centro de IoT.

    {NombreMétodo}. Nombre del método directo. El dispositivo simulado no tiene un método preexistente, por lo que puede elegir cualquiera para este comando.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName} \
                                    --method-payload '{ "SamplePayload": "PayloadValue" }'
    
  3. En la primera sesión de la CLI, confirme que en la salida se muestra el método de invocación. En la captura de pantalla siguiente, se usan SampleDevice y SampleMethod para los marcadores de posición {DeviceName} y {MethodName}, respectivamente, en el comando az iot hub invoke-device-method de la CLI.

    Captura de pantalla de un dispositivo simulado en el que se muestra la salida después de invocar un método con una carga.

  4. En la segunda sesión de la CLI, confirme que la salida muestra el código de estado y la carga recibidos del método invocado.

    Captura de pantalla de una ventana de Azure Cloud Shell en la que se muestran el código de estado y la carga de un método directo invocado.

Pasos siguientes

Para obtener información sobre cómo usar la CLI de Azure para ampliar la solución IoT y programar llamadas a métodos en varios dispositivos, vea Programación y difusión de trabajos.

Para continuar con la introducción a IoT Hub y los patrones de administración de dispositivos, como la actualización basada en imágenes de un extremo a otro, vea el artículo Actualización de dispositivos para Azure IoT Hub con la imagen de referencia Raspberry Pi 3 B+.