Cómo no romper los límites, cómo crear una buena arquitectura y cómo hacer un buen mantenimiento

Desgranando IoT: Azure IoT y Project Online (parte I)

Azure IoT y Project Online

La verdad es que hacía tiempo que tenía ganas de integrar Azure IoT con Project Online. Las posibilidades que se ofrecen son bastante amplias, pero entiendo que su mayor utilidad es la de generar dinámicamente “Issues” en Project Online cuando se sobrepasan ciertos límites registrados por los dispositivos.

Por ejemplo, un exceso de temperatura en alguna máquina (Industria 4.0), un exceso de tensión en un puente, ciertos niveles de viento…Para no partir de cero, voy a continuar aprovechar los ejemplos de la serie sobre IoT de mi compañero Adrián del Rincón.

El ejemplo que vamos a desarrollar sería el siguiente: imaginemos que estamos encargados del mantenimiento de un puente colgante o de un cableado en altura. Si el viento alcanza cierta velocidad, aumenta el riesgo de rotura al aumentar la tensión. Para evitar esto, tenemos varios dispositivos que se encargan de medir la velocidad del viento y que va enviando las medidas a Azure IoT Hub.  Sin embargo, si alcanza cierta velocidad, se envía un mensaje de alerta que genera un elemento en la lista de “Issues” del proyecto de mantenimiento de la infraestructura.

Así pues, partiremos del mismo código que utilizamos como ejemplo en el artículo  Desgranando IoT (II): Azure IoT Hub. Sin embargo, añadiremos sólo una pequeña variación para poder enviar los mensajes de alerta a una cola diferente.

Azure IoT y Project Online (1)

El código resaltado en la imagen añade una propiedad al objeto del mensaje llamada “windSpeedAlert”. El valor de la misma es “true” en caso de que el valor del viento sea superior a 11 y “false” en caso contrario:

message.Properties.Add(«windSpeedAlert», (currentWindSpeed > 11) ? «true»: «false»);

De esta forma, estamos preparados para enrutar los mensajes críticos a una cola dedicada. ¿Qué nos falta?

  • Crear una cola en Azure Service Bus.
  • Conectar esta cola con nuestro IoT Hub.
  • Configurar nuestro IoT Hub para enviar mensajes a esta cola basándose en la propiedad “windSpeedAlert” que hemos añadido a los mensajes.

Crear una nueva cola en Azure Service Bus

No vamos a explicar el proceso de añadir un nuevo servicio de “Service Bus” en Azure. Para máAzure IoT y Project Online (2)s información, se puede revisar este enlace.

En nuestro caso, vamos a crear una cola dedicada dentro de la instancia de “Service Bus” para enviar a la misma los mensajes críticos detectados. Para crear una nueva cola, se debe localizar el enlace “Colas” debajo del apartado “Entidades” de “Service Bus”

A continuación, se debe añadir la nueva cola, en este caso, la llamaremos “windAlerts”. Simplemente hay que pulsar el botón “+Queue” y completar el formulario (en el ejemplo se muestran los valores por defecto).

Azure IoT y Project Online (3)

Conectar la cola con nuestro IoT Hub.

Para que nuestro servicio de IoT Hub envíe las peticiones críticas a la cola creada en el apartado anterior, se debe crear un endpoint en IoT Hub que lo conecte con la cola correspondiente en “Service Bus”.

En “IoT Hub”, dentro del apartado “MESSAGING” se encuentra el enlace a “EndPoints”.

Azure IoT y Project Online (4)

Añadiremos uno nuevo llamado “WindSpeed.EndPoint”, cuyo tipo de conexión sea una cola de “Service Bus”. De esta manera, en el desplegable “Cola del bus de servicio” se mostrarán las colas disponibles dentro del espacio de nombres indicado. En este caso, seleccionaremos “windalerts”.

Azure IoT y Project Online (5)

Muy bien, ya tenemos nuestro “endpoint” enlazado con la cola deseada. Sin embargo, no irá a parar a ella ningún mensaje puesto que, en nuestro ejemplo, los mensajes de los dispositivos llegan al endpoint por defecto, “message/events”. Falta añadir una ruta para que los mensajes que cumplan la propiedad “windspeedAlert = true” vayan a parar donde deseamos.

Para añadir una nueva ruta se debe localizar el enlace “Routes” debajo de “Endpoints».

Azure IoT y Project Online (6)

Al añadir una nueva ruta, se debe especificar el nombre de la misma, el origen de datos (“Mensajes del dispositivo”, que es lo que se está tratando), el punto de conexión y, por último, la cadena de consulta que se va a utilizar. En este caso, se comprueba que el valor de la propiedad “windSpeedAlert” del dispositivo sea igual a “true”.

Azure IoT y Project Online (7)

Si ejecutamos de nuevo el ejemplo y revisamos las métricas de la cola en el “Service Bus”, se puede comprobar que están llegando peticiones a la misma.

Azure IoT y Project Online (8)

 

Por ahora lo dejamos aquí. En la segunda parte de este artículo cerraremos el círculo y veremos «Cómo generar una Issue en Project Online» 😉

 

mm

Sobre José Rafael García Rodrigo

Soy un profesional con 17 años de experiencia en tecnologías Microsoft, iniciando mi carrera como programador de .Net y SharePoint y evolucionando hacia la consultoría y definición de soluciones en los últimos años. Actualmente, acompañamos a las organizaciones en su Transformación Digital aprovechando todos los servicios que ofrece Microsoft en M365 y Power Platform. Ayudamos a las empresas a determinar el grado de madurez tecnológica en el que se encuentran y diseñamos conjuntamente una hoja de ruta para su transformación digital a largo plazo con acciones como: Gobernanza y Adopción de M365, cumplimiento normativo, seguridad de la plataforma, implementación de procesos, inteligencia artificial aplicada para el descubrimiento y clasificación de documentación, diseño e implementación de soluciones Low-Code o mejora de la experiencia del empleado a través de la suite Microsoft Viva.
Esta entrada ha sido publicada en Azure, IoT. Enlace permanente.
ENCAMINA, piensa en colores