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

Llevo unos catorce años trabajando en el negocio de IT, los últimos doce dedicados a tecnologías Microsoft, especialmente SharePoint y Office 365, BPM (Nintex y K2) y gestión de proyectos (Project Server). Durante todo este tiempo he realizado diferentes funciones (desarrollador, analista, arquitecto, consultor, Team Leader…) hasta llegar a mi puesto actual como Project Manager en ENCAMINA. No tengo muy claro el por qué, pero cuando nació mi hijo mayor nació también en mí la necesidad del emprendimiento. De repente, mi cabeza trataba de solucionar los problemas de negocio que iba advirtiendo tanto en mi vida profesional como personal, buscando oportunidades en los nuevos avances tecnológicos. Aprendí muchísimo durante el camino y creo que todo ese conocimiento me ayudará a hablar en este blog de cómo aprovechar la tecnología para descubrir propuestas disruptivas que ni siquiera nos hubiésemos planteado hace poco tiempo y que cambiarán nuestra organización y la relación con los clientes de manera inimaginable.
Esta entrada ha sido publicada en Azure, IoT. Enlace permanente.
ENCAMINA, piensa en colores