Ordenación de eventos de conexión de dispositivos de Azure IoT Hub mediante Azure Cosmos DB
Azure Event Grid le ayuda a compilar aplicaciones basadas en eventos y a integrar fácilmente eventos de IoT en sus soluciones empresariales. Este artículo le guiará a través de una configuración con Cosmos DB, Logic App, eventos de IoT Hub y un equipo Raspberry Pi simulado para recopilar y almacenar eventos de conexión y desconexión de un dispositivo.
Desde el momento en que se ejecuta el dispositivo, se activa un orden de operaciones:
Se inicia el dispositivo Pi, mediante la clave de dispositivo de IoT Hub y, a continuación, se detiene.
Un evento de IoT Hub captura la actividad del dispositivo y, a continuación, envía una solicitud HTTP a la aplicación lógica.
La aplicación lógica procesa la solicitud HTTP en función de una condición establecida.
La aplicación lógica registra los eventos de conexión o desconexión en un nuevo documento de Cosmos DB.
Requisitos previos
Cuenta activa de Azure Cosmos DB for NoSQL. Si aún no la ha creado, consulte Creación de una cuenta de base de datos para ver un tutorial.
Una colección en la base de datos. Consulte Incorporación de una colección para ver un tutorial. Cuando cree la colección, use
/id
para la clave de partición.Suscripción a Azure. Si no tiene una suscripción de Azure, cree una gratuita antes de comenzar.
Una instancia de IoT Hub en la suscripción de Azure. Si aún no tiene un centro, puede seguir los pasos descritos en Creación de un centro de IoT.
Creación de una aplicación lógica
En primer lugar, cree una aplicación lógica y agregue un desencadenador de Event Grid que supervise el grupo de recursos de la máquina virtual.
Creación de un recurso de aplicación lógica
En Azure Portal, seleccione +Crear un recurso, Integración y, luego, Aplicación lógica.
Complete el formulario para crear una nueva aplicación lógica que incluya:
Su suscripción
Su grupo de recursos (o cree uno nuevo)
Un nombre de aplicación lógica que sea único en la suscripción
La región del centro de IoT
No para habilitar Log Analytics
El tipo de plan Consumo
Nota
El tipo de plan de Consumo es la opción que habilita el Diseñador de aplicación lógica en la interfaz de usuario. Si elige Estándar (el valor predeterminado), debe crear un nuevo flujo de trabajo para que el Diseñador de aplicación lógica esté disponible.
Seleccione Revisar y crear para revisar la configuración y, a continuación, seleccione Crear para crear la aplicación lógica.
Ahora ha creado un recurso de Azure para la aplicación lógica. Una vez que Azure implemente la aplicación lógica, seleccione Ir al recurso. En el Diseñador de aplicación lógica se muestran las plantillas de patrones comunes para que pueda empezar con mayor rapidez.
En el Diseñador de aplicación lógica, desplácese hasta que vea la sección Plantillas y, después, elija Aplicación lógica en blanco para que pueda compilar la aplicación lógica desde cero.
Selección de un desencadenador
Un desencadenador es un evento específico que inicia la aplicación lógica. Para este tutorial, el desencadenador que activa el flujo de trabajo recibe una solicitud a través de HTTP.
En la barra de búsqueda de conectores y desencadenadores, escriba HTTP y pulse ENTRAR.
Seleccione la solicitud Cuando se recibe una solicitud HTTP como desencadenador.
Seleccione Usar una carga de ejemplo para generar el esquema.
Pegue el siguiente código JSON de ejemplo en el cuadro de texto y después seleccione Listo.
Este JSON solo se usa como plantilla, por lo que los valores exactos no son importantes.
[{ "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd", "topic": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB", "subject": "devices/Demo-Device-1", "eventType": "Microsoft.Devices.DeviceConnected", "eventTime": "2018-07-03T23:20:11.6921933+00:00", "data": { "deviceConnectionStateEventInfo": { "sequenceNumber": "000000000000000001D4132452F67CE200000002000000000000000000000001" }, "hubName": "MYIOTHUB", "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e", "moduleId": "" }, "dataVersion": "1", "metadataVersion": "1" }]
Creación de una condición
Las condiciones ayudan a ejecutar acciones concretas cuando se produce una condición específica. En este artículo, la condición es comprobar si eventType es Dispositivo conectado o Dispositivo desconectado. La acción que se ejecuta cuando eventType es true es la creación de un documento en Azure Cosmos DB. Esta condición se crea en el Diseñador de aplicación lógica.
Seleccione + Nuevo paso, luego la pestaña Integrado y, a continuación, busque y seleccione el control denominado Condición.
En su condición, cambie And por Or, ya que queremos capturar los eventos de conexión o los eventos de desconexión en un único análisis.
Haga clic dentro del cuadro Elegir un valor y aparecerá una ventana emergente que muestra el Contenido dinámico, es decir, los campos que se pueden seleccionar.
Elija eventType. La ventana emergente se cierra y verá que Cuerpo se coloca en Seleccionar una salida de los pasos anteriores automáticamente. Seleccione Condición para volver a abrir la instrucción condicional.
Conserve el valor es igual a.
Escriba Microsoft.Devices.DeviceConnected como el último valor de esa fila.
Seleccione + Agregar para agregar otra fila.
Esta segunda fila es similar a la primera fila, salvo que buscamos eventos de desconexión.
Use eventType, es igual a y Microsoft.Devices.DeviceDisconnected para los valores de fila.
En el cuadro de diálogo if true, haga clic en Agregar una acción.
Busque Cosmos DB y seleccione Azure Cosmos DB: Crear o actualizar documento (V3)
Verá el panel Crear o actualizar documento (V3). Especifique estos valores para los campos:
Nombre de la cuenta de Azure Cosmos DB: {Agregar el nombre de la cuenta}
Id. de base de datos: ToDoList
Id. de colección: Elementos
Documento: elija
Current item
en la lista de parámetros de contenido dinámicoGuarde la aplicación lógica.
Copia de la dirección URL HTTP
Antes de cerrar el Diseñador de aplicaciones lógicas, copie la dirección URL en la que se realizan las escuchas de un desencadenador de aplicación lógica. Use esta dirección URL para configurar Event Grid.
Seleccione el cuadro de configuración del desencadenador Cuando se recibe una solicitud HTTP para expandirlo.
Seleccione el botón de copia que se encuentra junto al valor Dirección URL de HTTP POST para copiarlo.
Guarde esta dirección URL para poder usarla en la siguiente sección.
Configurar la suscripción de eventos de IoT Hub
En esta sección, va a configurar IoT Hube para publicar eventos cuando se produzcan.
En Azure Portal, vaya hasta el centro de IoT.
Seleccione Eventos.
Seleccione + Suscripción de eventos.
Rellene Detalles de suscripciones de eventos: proporcione un Nombre descriptivo y seleccione Esquema de Event Grid como Esquema de eventos.
Cree un Nombre del tema del sistema para el recurso de IoT Hub.
Rellene los campos Tipos de evento. En la lista desplegable, seleccione solo Dispositivo conectado y Dispositivo desconectado en el menú. Haga clic en cualquier otro lugar de la pantalla para cerrar la lista y guardar sus selecciones.
Detalles de punto de conexión: en Tipo de punto de conexión, seleccione Webhook, haga clic en Seleccionar punto de conexión y pegue la dirección URL que copió de la aplicación lógica y confirme la selección.
El formulario debería ser ahora similar al del siguiente ejemplo:
Seleccione Crear para guardar la suscripción de eventos.
Importante
Espere unos minutos para que el evento se procese antes de ejecutar el dispositivo. Cada vez que se crean o cambian los servicios de Azure, iniciar el siguiente paso en la canalización demasiado pronto podría provocar errores innecesarios. Por ejemplo, si el centro de IoT no está en un estado activo, no estará listo para recibir eventos. Compruebe la página Información general del centro de IoT para ver si está en un estado activo o no. Si no es así, verá una advertencia en la parte superior de la página.
Ejecución del dispositivo y observación de eventos
Ahora que la suscripción de eventos se ha configurado, vamos a probar a conectar un dispositivo.
Registro de un dispositivo en IoT Hub
En el centro de IoT, seleccione Dispositivos.
Seleccione + Agregar dispositivo en la parte superior del panel.
En Id. de dispositivo, escriba
Demo-Device-1
.Seleccione Guardar.
Haga clic en el dispositivo nuevo. Ahora ya estarán rellenas las cadenas de conexión y las claves. Copie y guarde la Cadena de conexión primaria para usarla más adelante.
Inicio del simulador de Raspberry Pi
Vamos a usar el simulador web de Raspberry Pi para simular la conexión del dispositivo.
Iniciar simulador de Raspberry Pi
Ejecución de una aplicación de ejemplo en el simulador web de Raspberry Pi
Esta aplicación de ejemplo desencadenará un evento de dispositivo conectado.
En el área de codificación, reemplace el marcador de posición de la línea 15 con la cadena de conexión del dispositivo de Azure IoT Hub que guardó al final de la sección anterior.
Para ejecutar la aplicación seleccione Ejecutar.
Debería ver algo parecido a la siguiente salida, que muestra los datos del sensor y los mensajes que se envían a IoT Hub.
Puede comprobar en la página Información general de la aplicación lógica si se está desencadenando la lógica. Indicará Correcto o Con errores. Esta comprobación le permite conocer el estado de la aplicación lógica si es necesario solucionar problemas. Espere un retraso de entre 15 y 30 segundos cuando se ejecute el desencadenador. Si necesita solucionar problemas de la aplicación lógica, consulte este artículo de Solución de errores.
Seleccione Detener para detener el simulador, lo que desencadena un evento de Dispositivo desconectado. Este evento iniciará sesión en la página Información general de la aplicación lógica, al igual que el evento de conexión registrado allí.
Ha ejecutado una aplicación de ejemplo para recopilar eventos de conexión y desconexión del dispositivo, que van al centro de IoT.
Observación de eventos en Azure Cosmos DB
Puede ver los resultados de la aplicación lógica ejecutada en el documento de Cosmos DB. El documento aparece en la colección Elementos al actualizar la página. Cada evento de estado de conexión genera un nuevo documento asignado a un único id
. En la imagen siguiente se muestra el documento creado cuando se inició (conectó) el dispositivo. El tipo de evento conectado aparece en la salida JSON.
Uso de la CLI de Azure
En lugar de usar Azure Portal, puede llevar a cabo los pasos de IoT Hub mediante la CLI de Azure. Para más información, consulte las páginas de la CLI de Azure para crear una suscripción de eventos y crear un dispositivo IoT.
Limpieza de recursos
En este tutorial se usaron recursos que generan gastos en su suscripción de Azure. Cuando haya terminado de probar el tutorial y los resultados de las pruebas, deshabilite o elimine los recursos que no desea conservar.
Aplicación lógica
Si no desea perder el trabajo realizado en la aplicación lógica, deshabilítela en lugar de eliminarla.
Vaya a la aplicación lógica.
En la hoja Información general, seleccione Eliminar o Deshabilitar.
Cada suscripción solo puede tener una instancia de IoT Hub gratuita. Si creó una instancia de IoT Hub gratis para este tutorial, no es necesario eliminarla para evitar cargos.
IoT Hub o Event Grid
Vaya a su instancia de IoT Hub.
En la página Información general, seleccione Eliminar.
Aunque conserve la instancia de IoT Hub, puede que desee eliminar la suscripción de eventos que creó. En la instancia de IoT Hub, seleccione Event Grid.
Seleccione la suscripción de eventos que quiere eliminar y seleccione Eliminar.
Cosmos DB
Para quitar una cuenta de Azure Cosmos DB de Azure Portal, vaya al recurso y seleccione Eliminar cuenta en la barra de menús superior. Consulte las instrucciones detalladas para eliminar una cuenta de Azure Cosmos DB.
Pasos siguientes
Obtenga más información sobre reacción a eventos de IoT Hub mediante Event Grid para desencadenar acciones.
Obtenga información sobre qué más puede hacer con Event Grid.
Obtenga información sobre cómo usar Event Grid y Azure Monitor para supervisar, diagnosticar y solucionar problemas de conectividad de dispositivos con IoT Hub