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.
Seleccione el icono Cloud Shell en el encabezado de página del Azure Portal.
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.
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.
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.
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 denominaazure-cli-iot-ext
. Solo debe tener instalada una versión a la vez. Puede usar el comandoaz 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
.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.
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:
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}
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.
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.
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}
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
ySampleMethod
para los marcadores de posición{DeviceName}
y{MethodName}
, respectivamente, en el comandoaz iot hub invoke-device-method
de la CLI.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.
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.
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.
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" }'
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
ySampleMethod
para los marcadores de posición{DeviceName}
y{MethodName}
, respectivamente, en el comandoaz iot hub invoke-device-method
de la CLI.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.
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+.