IoT: ordenando conceptos

Al comenzar a querer hacer “algo” en IoT, usualmente nos encontramos con cientos de conceptos nuevos para aprender, no sabiendo cuál aplicar, cuándo o por qué. En esta nota intentaré dar una breve introducción al tema contándoles el camino que elegimos para uno de nuestros proyectos.

Eliseo Azpeitia
Flux IT Thoughts

--

Internet de las cosas, más conocido como Internet of Things (IoT) es el término que durante los últimos años está presente en todos lados: desde relojes, lavarropas, y hasta automóviles; es decir, cualquier objeto que se pueda conectar a internet, y con ello crear una infinidad de nuevas aplicaciones, puede darnos muchas facilidades para todo lo que queramos hacer. Es tan grande el abanico, que se estima que, para el año 2020, existirán alrededor de 50 mil millones de objetos conectados a internet intercomunicándose entre ellos.

En Flux IT queremos dar vida a los objetos a través de la conexión a internet y generando aplicaciones para aumentar su utilidad. Es por eso que, para iniciarnos en prácticas de IoT, comenzamos con el primer prototipo de solución, que Nicolás Rodríguez describe también en esta nota, donde comenta reflexiones y aprendizajes con los que nos hemos chocado desde una perspectiva funcional.

Desde el principio nos encontramos con muchos desafíos, decisiones y caminos a elegir: el desarrollo en IoT implica salir de la “tranquilidad” del desarrollo de un servidor web o aplicación mobile en la que tenés muchos lenguajes o frameworks, pero donde tu decisión sobre qué elegir termina ahí. En IoT, además de elegir el lenguaje, es necesario elegir qué tipo de red elegir (WIFI, LTE, LORA, etc.), si las cosas son inteligentes o no (es decir que puedan tomar algún tipo de decisión o sólo recolectan datos), y qué tipo de modelo computacional se adapta mejor a las necesidades del proyecto.

La primera decisión que tomamos es qué tipo de objetos íbamos a utilizar, aquellos denominados inteligentes, que pueden ser usados para efectuar acciones en tiempo real y ser capaces de tomar decisiones simples. Esta condición hace que los mismos tengan capacidad de procesamiento y, a la vez, sean de mayor costo.

Por otro lado, tenemos sensores y actuadores que no tienen capacidad de procesamiento, y todo su trabajo es ordenado de manera remota. Es decir, algún nodo computacional le ordena obtener información o realizar algo.

Para no tener problemas de comunicación (que se pierdan mensajes) o de conectividad, optamos por usar dispositivos inteligentes, que con un conjunto de datos pueden tomar decisiones (aunque en muchos casos se pueden llegar a necesitar cientos o miles de dispositivos, y al ser económicamente más caros, se convertiría en una solución muy costosa).

La segunda decisión que debemos elegir es qué modelo computacional queremos seguir. En este punto, nos encontramos con tres posibles opciones: podíamos tener un modelo computacional Cloud, Edge o Fog. El primero, uno de los más simples, donde los objetos envían o reciben información de la nube, sin tener mucha inteligencia, pasando todas las decisiones por el cloud. El segundo modelo, Edge, donde los distintos objetos son un poco más inteligentes y capaces de tomar decisiones por sí solos. Por último, y el más complejo de los tres, en el modelo Fog los objetos interactúan con una capa intermedia, la cual tiene la capacidad del cálculo computacional, y recién luego se comunica con la nube para tener toda la información centralizada.

Al tener dispositivos inteligentes, elegimos un modelo Edge, en el cual la mayoría de decisiones las toma el mismo dispositivo y cada cierto tiempo se comunica con el Data Center/Cloud para sincronizar información, dándole mayor poder e independencia a los objetos. Para esto tenemos que tomar más decisiones: desde qué tipo de red usar (LTE, LORA, WIFI, etc) o el tipo de comunicación (Canal de control, p2p, bidireccional, etc.).

Independientemente del tipo de comunicación utilizado o el tipo de red, para comunicarnos vamos a utilizar MQTT (protocolo de mensajería basada en publicación-suscripción) en el cual se envían pequeños mensajes y, dependiendo de la tecnología, algunos de ellos tienen distintos niveles de persistencia y seguridad, para garantizarnos que efectivamente llegan. Luego optamos por tener un canal bidireccional donde los datos puedan viajar en ambos sentidos a través de WIFI (como primera opción si el dispositivo tienen alguna red cercana), LORA (si las distancias son mayores, debido a su bajo costo y alta velocidad), y por último LTE (aunque esta tecnología es muy rápida, los costos pueden ser altos).

Hablemos de seguridad

Un concepto no nombrado hasta ahora es la seguridad, al cual hay que prestarle mucha atención. Imaginemos tener miles de objetos inteligentes circulando por el mundo y que éstos sufren un ataque cibernético. Para prevenir esto, mínimamente utilizaremos canales seguros (https, con validación de certificado) y buscaremos tener un mecanismo de autenticación y autorización para realizar las diferentes acciones. Pero además, en el caso de que necesitáramos realizar alguna actualización o resolver algún bug, es necesario tener definido un mecanismo de aprovisionamiento. Para ello utilizaremos contenedores, de forma que cada objeto, al detectar que existe una nueva versión del mismo, se actualizará.

Por último, en este mismo escenario es muy difícil controlar que todos los objetos estén funcionando. Es por eso que cada uno de ellos, cada cierto tiempo, deberá enviar una señal informando su estado. Este concepto se llama heartbeat.

Visualicemos la información

Hoy en día, en la industria, el uso de IoT está muy enfocado en la recolección de información, generando cientos de miles de datos sin saber para qué utilizarlos o cómo leerlos. En Flux IT no sólo consideramos importante la toma de datos, sino que también tomamos acciones con toda esa información y la visualizamos de una manera más amigable. Para esto siempre tenemos un centro de control el cual está formado por tres elementos:

  • Dashboard: donde podremos visualizar de la mejor manera la información recolectada.
  • Backoffice: herramienta administrativa donde se podrán crear reglas, configuraciones y otras acciones, para que los distintos dispositivos se actualicen y puedan funcionar de la manera esperada.
  • Backend: el punto de acceso donde los dispositivos se sincronizan, enviando la información recolectada o solicitando nueva configuración/reglas.

Este fue un pantallazo de algunas de las múltiples opciones que tenemos a la hora de aplicar IoT en un proyecto concreto. En nuestro caso, elegimos un camino que es simple, por el hecho de usar opciones conocidas, y a la vez completo, porque nos da múltiples ventajas (por ejemplo los dispositivos podrían seguir funcionando sin tener conexión a internet, uno de los requisitos en nuestro proyecto).

En la próxima nota les hablaré sobre los beneficios y diferencias entre utilizar un modelo computacional Edge (el que elegimo nosotros) y uno Cloud, que es también excelente para muchas soluciones.

Conocé más sobre Flux IT: Website · Instagram · LinkedIn · Twitter · Dribbble

--

--