Novedades en la gestión de dispositivos y gateways en IoT Hub

Durante el pasado Build anunciamos unas cuantas novedades de IoT Hub en las áreas de gestión de dispositivos y la versión beta del SDK para los gateways de IoT, a la vez que tenemos un interesante artículo sobre seguridad, rendimiento y “trhottling” en IoT Hub.

Novedades en la gestión de dispositivos

IoT Hub incorpora desde el principio un sistema de gestión de dispositivos, que aísla la seguridad de cada dispositivo, nos proporciona comunicación bidireccional y telemetría sobre el estado de los mismos.

Ahora ya podemos ver esos dispositivos en el portal de Azure:

iothubdevices

Pero las novedades no acaban aquí. Para la gestión de dispositivos hemos adoptado diversos estándares que nos permitirán una gestión completa de los dispositivos que tenemos conectados a nuestro IoT Hub, basados en estos tres conceptos:

  • Device Twin: la representación lógica del objeto físico
  • Device Queries: que nos permiten realizar consultas y agregaciones sobre todos los dispositivos que tenemos registrados
  • Device Jobs: para definir las tareas que se deben realizar sobre uno o un grupo de dispositivos

Usando una Device Query podríamos listar todos los dispositivos de un mismo tipo que tengan una versión de firmware en concreto y luego lanzar un Device Job sobre ese grupo para realizar una actualización de ese firmware.

Las tareas que permitimos ahora (añadiremos más en el futuro) son:

  • Actualización de Firmware: actualiza el firmware o el sistema operativo
  • Reboot
  • Factory reset
  • Actualización de la configuración
  • Lectura de propiedades de dispositivo, para actualizar las propiedades del Device Twin desde el dispositivo
  • Escritura de propiedades de dispositivo, escribe en el dispositivo físico

Implementación en los dispositivos

Para poder realizar todas estas tareas usaremos la Azure IoT Hub Device Management Client Library, que cumple con el estándar LWM2M en los clientes de IoT Hub.

Para que todo esto funcione tendremos que proporcionar el código de los “callbacks” que ejecutarán cada operación de lectura o escritura en el dispositivo.

iothubdevicemanagement

 

Azure IoT Gateway SDK beta

Además de los dispositivos físicos conectados directamente a IoT Hub, otras veces necesitaremos utilizar un Gateway que nos haga de puente entre los dispositivos y Azure por diversos motivos:

  • Proporcionar inteligencia en el lado del cliente: análisis de datos, agregaciones, filtrado, compresión, modelos de aprendizaje y otras operaciones que pueden ser necesarias antes de enviar los datos por velocidad y/u optimización de recursos
  • Minimizar la latencia, pues en los casos donde los milisegundos importan se hace necesario realizar algunos cálculos muy cerca del dispositivo
  • Ahorrar ancho de banda, cuando no es necesario enviar todos los datos que generan los dispositivos o podamos tomar decisiones sin necesidad del cloud
  • Mejorar la fiabilidad del sistema ante cortes de red
  • Proporcionar conectividad e incrementar la seguridad mediante aislamiento y cifrado de datos a los dispositivos que no estén capacitados para ello

El SDK está disponible en GitHub y es compatible con los siguientes sistemas operativos:

  • Ubuntu 14.04
  • Ubuntu 15.10
  • Yocto Linux 3.0 on Intel Edison
  • Windows 10

Rendimiento de IoT Hub

En muchas ocasiones recibimos consultas sobre la capacidad y el rendimiento que proporciona IoT Hub, pues es un servicio manejado y compartido, con algunos límites que sólo pueden sobrepasarse realizando una solicitud a Microsoft Support, como por ejemplo conectar más de 500K dispositivos a un mismo IoT Hub, que, aunque parezcan muchos, ya lo hemos hecho para algunos clientes.

En el artículo IoT Hub throttling and you podremos conocer cómo estos límites protegen nuestro IoT Hub de ataques DoS y de cómo realizar los cálculos para evitar que en nuestro servicio ocurran errores de “throttling”.

Ejemplos de IoT Hub

La biblioteca de ejemplos de IoT Hub está creciendo y tenemos guías paso a paso para múltiples sistemas como Intel Edison, embed, Sparkfun, Raspberry Pi 2 y muchos más en

https://azure.microsoft.com/en-us/documentation/samples/?service=iot-hub

 

Artículos de referencia

 

Juan Manuel Servera

Developer eXperience

@jmservera