Las ventajas que te ofrece Microsoft Azure y el mundo.NET

Desgranando IoT (IV): Alertas y SignalR

Continuando con la serie de artículos sobre la temática del Internet de las cosas (Internet of Things o IoT), hablaremos ahora de cómo aprovechar todo lo hablado anteriormente para añadirle la posibilidad de configurar y recibir alertas.

Con esto, cerraremos el círculo completamente (y por ahora también la serie de artículos), viendo todos los elementos y las posibilidades más comunes en una solución de IoT.

SignalR

Uno de los primeros aspectos que debemos tratar es: qué es SignalR, qué funcionalidades nos proporciona, y ya enfocados en nuestra temática, dónde podemos integrarlo y qué nos puede aportar su uso.

SignalR es una biblioteca, desarrollada por Damian Edwards y David Fowler, la cual nos proporciona una capa de abstracción sobre algunos de los transportes requeridos para implementar aplicaciones en tiempo real.

Inicialmente, estas aplicaciones empiezan directamente sobre HTTP, pero si SignalR detecta que existe soporte para Web Sockets, se gestiona automáticamente el cambio para emplear Web Sockets.

Así, SignalR primero comprobará si es soportado Web Sockets. En caso negativo, utilizará “Server Sent Events” y así sucesivamente hasta llegar a “Long Polling” como una última alternativa.

 

Lo novedoso (y realmente positivo) que nos aporta SignalR respecto a tecnologías previas, es que, poniendo el ejemplo de una aplicación web, no necesitamos disponer de una aplicación que desde el lado del cliente esté periódicamente ejecutándose y preguntando al servidor si existen datos nuevos o información.

SignalR nos permite realizar un “push” desde el servidor al cliente para enviarle cualquier tipo de mensajes o datos que se nos pueda ocurrir, ejecutando una especie de “callback” que tengamos configurado en cliente y procese en tiempo casi real dichos datos.

Actualmente SignalR tiene un buen soporte en navegadores modernos, así como una excelente integración en ASP.NET, y su uso es muy útil para aplicaciones en tiempo real como chats y sistemas de monitorización, que es el caso que nos ocupa.

Configuración Azure

Para configurar un sistema de alertas y alarmas asociado a nuestra solución de IoT usando SignalR, deberemos realizar cambios en dos puntos:

  1. Por un lado, deberemos crear y configurar nuestras alertas en Azure.
  2. Y por otro lado, realizar modificaciones en la Web App para integrar la detección de dichas alertas con SignalR y con la notificación de las alarmas que se generen al usuario.

En cuanto a la modificación de la solución de IoT, el primer paso será definir y modelar las diferentes alertas que queramos generar. Para ello, deberemos analizar nuestro modelo de datos, y definir para qué campos de entrada y para qué rango/s de valores consideramos que se debe generar una alerta.

Una vez hecho esto, deberemos modificar nuestro Stream Analytics para configurar las alertas modeladas. Es posible generar varias salidas o una sola con varios condicionales.

Necesitaremos, por simplicidad en el lado de SignalR, que todas éstas salidas de alertas estén conectadas a un Service Bus. No obstante, para llevar un registro o histórico, también podemos duplicar las salidas y guardarlas en SQL o DocumentDB.

Configuración Web App

Por otro lado, en la aplicación web deberemos realizar varias configuraciones. Por un lado, debemos configurar nuestra Web App de monitorización para que haga uso de SignalR: https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc , así como posteriormente conectar SignalR a Service Bus para que detecte los mensajes de alerta que aparezcan, y podamos reaccionar a ello: https://docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-windows-azure-service-bus .

Una vez hecho todo esto, tendremos una clase que implementa el Hub de SignalR.

En dicha clase podremos implementar, tanto un constructor, como diversos métodos que se ejecutarán cuando recibamos mensajes en el Service Bus.

Así, en estos métodos de “Send”, podemos implementar nuestra propia lógica de envío de alarmas, como puede ser notificar a los clientes de SignalR que estén suscritos, enviar un correo a una dirección de email… Todo ello casi en tiempo real.

Además, si hemos duplicado las alertas en Stream Analytics y las tenemos almacenadas en base de datos, podremos mostrar una tabla histórica de alertas.

Conclusión

Como hemos visto, podemos hacer uso de los diferentes elementos que hemos conocido a través de todos los artículos de la serie, y añadiendo a todo ello una cierta lógica y tecnologías o librerías modernas como SignalR, podemos montar una solución completa de IoT, que además de permitirnos operar y monitorizar nuestros dispositivos casi en tiempo real, nos permita configurar una serie de alertas y enterarnos de si se produce alguna alarma también en tiempo real.

Esto sólo acaba de empezar, pero la previsión a corto plazo es clara: habrá un gran crecimiento de la demanda de este tipo de proyectos y soluciones, sobre todo por parte de medianas y grandes empresas, principalmente de aquellas que dispongan de muchos dispositivos monitorizables o grandes fábricas.

mm

Sobre Adrián Del Rincón López

Ingeniero Superior de Telecomunicaciones por la Universidad Politécnica de Valencia. Desde hace varios años trabajo en el departamento de desarrollo de ENCAMINA. Sobre todo, me apasiona estar al tanto de lo último en tecnología, y si es en el mundo/ecosistema Microsoft y .NET, mejor que mejor. Además, también participo de las redes sociales, si quieres encontrarme, búscame con el usuario @adderin
Esta entrada ha sido publicada en IoT. Enlace permanente.
ENCAMINA, piensa en colores