Hace casi un año, comencé a publicar una serie de artículos sobre la arquitectura de las soluciones de IoT. (Enlace al primer artículo
habr.com/en/post/420173 ). Y finalmente, el segundo artículo de la serie va a tu corte.

Los proyectos de IoT se parecen, y es cierto que comparten componentes comunes. Pero al mismo tiempo, los proyectos de IoT tienen diferencias fundamentales, comenzando con la solicitud del mercado y las clases de tareas a resolver.
Obviamente, desarrollar cada solución "desde cero" es extremadamente ineficiente. Muchos componentes pueden reutilizarse de acuerdo con el principio de los patrones de programación.
En este artículo, analizaremos las diversas clases de soluciones de IoT y sus respectivas implementaciones. Como resultado, se darán recomendaciones sobre los pasos para implementar la arquitectura IoT e intentaremos resaltar las tendencias generales de las soluciones IoT.
También trataremos de formular las principales áreas problemáticas, a partir de lo cual, vale la pena comenzar la construcción de arquitecturas para soluciones IoT específicas y posibles áreas problemáticas de arquitecturas.
Aplicaciones de IoT
Hoy existe una división en tres regiones geográficas principales de aplicación de soluciones IoT:
Europa
El mercado de IoT en Europa está considerando proyectos relacionados con la conservación de los recursos naturales. Un ejemplo típico es la iluminación diurna / nocturna, la automatización de la calefacción, la gestión del agua, la alarma contra incendios.
Región del Lejano Oriente
En este mercado, la primera prioridad para las soluciones de IoT es la seguridad. Las aplicaciones típicas son cámaras que detectan situaciones inusuales en la carretera, el transporte y el hogar. La segunda área principal es la seguridad y las soluciones de prevención de desastres, como actividad sísmica, huracanes, tifones, tsunamis.
Mercado norteamericano
Los proyectos de IoT destinados a optimizar los procesos comerciales, como la optimización del transporte, la entrega eficiente de bienes, así como elementos de hogares inteligentes y ciudades, están representados principalmente en este mercado.
Por supuesto, las soluciones de IoT penetran de un mercado a otro y no son prerrogativas exclusivas. En cada región, podemos encontrar todas las clases de soluciones de IoT. Es importante para nosotros clasificar estas clases de productos IoT que existen actualmente en los mercados globales. La siguiente es una lista de tales clases de soluciones de IoT:
- Ciudad inteligente Las tareas principales son la gestión y regulación del tráfico de automóviles, el alumbrado público nocturno / diurno, la advertencia de peligro para los peatones y la determinación de situaciones no estándar y peligrosas en la ciudad.
- Casa inteligente. Las tareas principales son Seguridad, un timbre inteligente, control de TV y cocina, sistemas automáticos de riego e iluminación, incendio, gas, fugas de agua y alarmas de temperatura de la casa.
- Clima y desastres naturales. Información meteorológica, actividad sísmica, control de incendios. Previsión del tiempo.
- Optimización del uso de recursos en el hogar, ciudad, país. Iluminación, electricidad, calefacción, optimización y predicción del uso de, por ejemplo, combustible en centrales eléctricas.
- Optimización del transporte, entrega, almacenamiento y clasificación. Empresas como DHL, FedEx utilizan la solución para construir rutas de transporte óptimas. Terminales de almacenamiento y clasificación en los principales aeropuertos.
- Monitoreo y control de fábrica, gestión de línea de transporte. Control de robots. Clasificación de bienes, materias primas y pruebas de productos terminados.
- Mecanismos sofisticados, dispositivos de alta tecnología, como automóviles modernos, aviones, etc. Sistema de control automatizado, protección antirrobo, control de unidades del sistema. Reconocimiento de la cara y el cuerpo del conductor para evitar el sueño, pérdida de atención. Predicción de mantenimiento y reemplazo de componentes del sistema.
Arquitectura IoT
Topología general de soluciones IoT
La siguiente figura muestra la arquitectura en capas de las soluciones de IoT. La topología de IoT es diferente de un modelo de capa convencional como OSI. Este no es un gráfico de flujo lineal o más complejo. Algunos componentes son opcionales y pueden no estar disponibles en una clase particular de soluciones. Pueden estar presentes dos tipos de lógica: M2M (de automóvil a automóvil) y M2P (de automóvil a hombre), así como casos más específicos como C2C (de automóvil a automóvil, generalmente en una celda de comunicación móvil LTE).
La solución IoT tiene dos ubicaciones físicas: la primera es los dispositivos finales (periféricos) y la segunda está en el centro de datos de back-end en los servidores o en la nube. Al mismo tiempo, esta no es una arquitectura clásica de aplicación cliente-servidor, como veremos más adelante.

A continuación analizaremos cada nivel por separado y compararemos sus características con las clases reales de soluciones de IoT.
Capa física - capa física
Este nivel representa dos tipos de operaciones: recopilar información (sensores) y realizar trabajos mecánicos (mecanismos ejecutivos).
Los sensores se pueden dividir en las siguientes categorías:
- Sensores:
- Luz: fotodiodos / transistores / resistencias, detectores PIR
- Sonido: micrófonos, sensores ultrasónicos
- Interruptores, en particular interruptores de límite, que registran los puntos extremos del movimiento mecánico. Medición del ángulo de rotación o velocidad de rotación.
- Sensores electromagnéticos que miden cambios en las características físicas, tales como capacitancia eléctrica, inductancia, resistencia.
- Sensores complejos o compuestos. Estos incluyen sensores especializados, como gas, espectro, etc., así como un tipo separado de dispositivo de recopilación de información que está ganando cada vez más aplicación: cámaras de video.
En las soluciones de IoT, los elementos físicos tienen ciertos requisitos comunes:
- Un precio lo más bajo posible debido a la gran cantidad en la solución IoT.
- Alimentado por batería, que a su vez requiere un bajo consumo de energía. La demanda actual del mercado es la operación de dispositivos periféricos sin mantenimiento de 1 a 10 años.
- A menudo ubicado en lugares inaccesibles y remotos con costos mínimos de instalación y mantenimiento.
- En el caso de usar cámaras de video, el procesamiento primario de imágenes con toma de decisiones basada en inteligencia artificial
Los actuadores de las soluciones IoT abren las cerraduras de las puertas de entrada, accionan motores, selsyn, encienden / apagan las luces, calefacción, agua, gas, etc. No hay cambios importantes en la implementación de los actuadores. Por lo tanto, esta parte de la solución IoT no se cubrirá en este artículo.
La siguiente es una tabla de la capa física en varias clases de soluciones de IoT:
Podemos resumir dos problemas para los requisitos de la capa física:
- Bajo consumo de energía. Se requiere un alto nivel de integración con las capas superiores.
- El uso de cámaras de video. También requiere un alto grado de integración con niveles más altos y funciones integradas de AI / ML implementadas en el dispositivo periférico.
Capa de borde: nivel de computación periférica
Este nivel generalmente está conectado a un solo sensor o actuador. Proporciona una funcionalidad mínima para convertir información analógica a digital y / o viceversa. Para conectar sensores, existen los mismos requisitos de precio y consumo de energía. Muchos fabricantes que producen este tipo de dispositivos no tienen un solo estándar para el modelo de datos, la configuración y la operación, lo que crea problemas de integración individuales.
Para reducir el consumo de energía, los periféricos suelen tener cuatro modos de funcionamiento:
- Modo de reposo
- Medición y recopilación de información de sensores
- El modo de comunicación, transmisión y recepción de información.
- Instalación y modo de conexión
El siguiente es un diagrama de bloques de un dispositivo periférico.

Un dispositivo periférico generalmente combina tres niveles: físico, computación periférica y comunicación. La funcionalidad principal del nivel de cómputo periférico es el ETL local (Extracto, Transformación y Carga): recibir, convertir y guardar información de los sensores. Este nivel es responsable no solo de recopilar información del sensor, sino también de llevarlo a un formato estándar, filtrar interferencias, análisis preliminares y almacenamiento local.
La siguiente tabla muestra el nivel de computación periférica en diferentes clases de soluciones de IoT:
Entonces, los principales requisitos del nivel de computación periférica:
Bajo consumo de energía. Esto se puede lograr con hardware de baja potencia y algoritmos Sleep / WakeUp. A menudo, la presencia de un elemento local de inteligencia artificial.
Capa de red local: capa de comunicación periférica
La transferencia de datos es la parte más intensiva en energía de un dispositivo periférico, como La mayoría de los dispositivos periféricos no están conectados a la red eléctrica ni a las comunicaciones por cable. Además, los dispositivos periféricos pueden ubicarse bastante lejos de la puerta de enlace (a pocos kilómetros). Por otro lado, la cantidad de información transmitida suele ser bastante pequeña. Los siguientes protocolos se utilizan en el nivel de comunicación periférica:
- ZigBee / Zwave
- Ble
- Lora
- Banda baja patentada
Ad Hoc y Mesh se usan ampliamente hoy en este nivel para aumentar la distancia y la confiabilidad.
Para fines de configuración, también se puede usar el protocolo NFC. Durante la primera instalación y / o mantenimiento, un ingeniero de servicio con una aplicación móvil puede conectarse a un dispositivo periférico a través de una capa de comunicación periférica. A veces, un código Q impreso en un dispositivo periférico también se utiliza para la autenticación.
La siguiente tabla muestra el nivel de comunicación periférica en varias clases de soluciones de IoT:
Gateway Layer - Gateway Level
Existen varias razones para tener una capa de puerta de enlace en una solución de IoT:
- Si Backend recibe información en bruto, aumentará su poder y los costos serán muy altos.
- El backend no puede garantizar una respuesta en tiempo real para una gran cantidad de periféricos.
- Debido a restricciones de seguridad, parte de la información no se puede enviar a Backend y los humanos no pueden monitorearla continuamente. Dicha información incluye datos de cámaras de vigilancia de calles, información médica, etc.
La puerta de enlace debe proporcionar la siguiente funcionalidad básica:
- Implemente un segundo nivel de ETL desde sus periféricos.
- Arregle una situación crítica y dé una reacción local, incluso sin comunicación con BackEnd. Esto se puede comparar con las señales del latido cardíaco o la respiración pulmonar de una persona sin la participación del cerebro.
- Comunicarse con Backnd. Envía información procesada desde dispositivos periféricos al servidor y recibe datos de configuración para dispositivos periféricos.
- Guarde información sobre el estado de los dispositivos periféricos y los datos recopilados por ellos.
En algunos casos, la funcionalidad AI / ML (inteligencia artificial / aprendizaje automático) debe estar presente en el nivel de puerta de enlace. El dispositivo de puerta de enlace funciona principalmente con la red eléctrica o tiene una gran batería incorporada, pero algunas soluciones también requieren un bajo consumo de energía. En esta situación, surge un problema adicional: el protocolo de sincronización para la comunicación con el dispositivo periférico. Uno de ellos (puerta de enlace o dispositivo periférico) debe transmitir el mensaje "Listo para la comunicación" con más frecuencia que el otro dispositivo está listo para comunicarse. La elección dependerá del consumo de energía total de cada dispositivo y del tiempo requerido sin mantenimiento.
Hoy, estamos aumentando la cantidad de aplicaciones con una fuente de información en forma de cámara de video. En estas soluciones específicas, Gateway y Edge pueden integrarse juntas. La funcionalidad AI / ML en tales aplicaciones se está volviendo muy popular. Con los nuevos aceleradores de inteligencia artificial para sistemas integrados, esta solución se ha convertido en una realidad.
Por separado, debe decirse sobre las puertas de enlace para soluciones de hogar inteligente. Una puerta de enlace en esta clase de soluciones a menudo se combina con dispositivos STB: adaptadores de televisión o con una unidad de control de seguridad doméstica. Ya existe una plataforma abierta RDK-V para la primera integración. En el futuro cercano deberíamos esperar una mayor integración de los tres componentes: la puerta de enlace + STB + seguridad en un solo dispositivo. Probablemente también contará con NAS (almacenamiento local de archivos) y servicios AI / ML para el reconocimiento de video / audio de la máquina. Los dispositivos de reconocimiento de audio, como Alexa, se basan en la infraestructura de la nube, pero el reconocimiento primario probablemente se llevará al nivel periférico.
La siguiente tabla muestra el nivel de puerta de enlace en varias clases de soluciones de IoT:
Capa de red amplia: capa de enlace externo
Esta capa separa las partes periférica y BackEnd de la solución general. La puerta de enlace está conectada principalmente a BackEnd mediante una conexión inalámbrica móvil, como 4G / 5G, pero a veces se utiliza el acceso a Internet por cable. La capa lógica de comunicación externa tiene un protocolo estandarizado para soluciones de IoT llamado LvM2M. El protocolo LvM2M fue diseñado para acceder a cada dispositivo periférico, pero dado que muchos proveedores de periféricos no son compatibles con las interfaces LvM2M, el dispositivo de puerta de enlace puede resolver este problema y crear un contenedor para comunicarse con los dispositivos periféricos.
La capa de comunicación externa también contiene servicios de comunicación y modelos ISO dentro de sí misma. Incluye servicios de ubicación y equilibrio basados en DNS, el protocolo de transporte COAP, el cifrado DTLS y muchos otros componentes que están más allá del alcance de este artículo.
Un comentario importante que tenemos que hacer aquí. El protocolo LvM2M usa el protocolo de cifrado DTLS. El protocolo DTLS es un protocolo con claves de seguridad y una sesión de protocolo de enlace. Funciona punto a punto. Para descifrar los paquetes DTLS, debemos usar la misma instancia de Back End que tuvimos durante la sesión de conexión. Esto plantea un problema para Load Balancer, que forma parte de la capa de seguridad de nuestro circuito. El equilibrador de carga, a su vez, es necesario para el escalado automático a una carga alta del sistema. Para evitar esta limitación, DNS se utiliza como equilibrador de carga. Cada consulta N DNS recibe una nueva dirección IP para la instancia de nivel de seguridad.
A continuación se muestra una tabla del nivel de comunicación externa en varias clases de soluciones de IoT:
Security Layer —
Esta capa proporciona AAA (Autenticación, Autorización y Contabilidad) y funciones de cifrado / descifrado junto con otros servicios relacionados con Internet. Todos los Cloud tienen sus propias implementaciones de seguridad, pero funcionalmente todos están construidos sobre el principio de roles y permisos. Como se señaló en el párrafo anterior, esta capa también sirve como el terminador de la conexión cifrada DTLS.Endend Connectivity to Backend también tiene un componente de capa de seguridad.La siguiente tabla muestra el nivel de seguridad en varias clases de soluciones de IoT:Middleware Layer —
Esta capa proporciona funcionalidad interna de la nube con equilibrio de carga, colas de mensajes y transmisión. Los componentes de esta capa se deben duplicar y escalar automáticamente. El nivel se implementa principalmente en base a microservicios o PaaS de proveedores de la nube. Este requisito se deriva del paradigma de saltos y caídas en el volumen de datos. El escalado automático reduce el costo de la implementación del backend. La implementación real del servicio puede ser diferente, pero el principio general sigue siendo uno: proporcionar una transferencia de mensajes asíncrona con almacenamiento en búfer y equilibrio de carga. De esta manera, los diversos componentes del backend pueden hacer su trabajo de forma independiente y escalar horizontalmente según la carga.
La figura muestra un diagrama de bloques esquemático de patrones de comunicación dentro del servidor. Load Balancer está diseñado para distribuir la carga entre diferentes servicios. Cola: las colas proporcionan almacenamiento intermedio intermedio para servicios seriales asíncronos. Suscriptores: los destinatarios se suscriben a las colas correspondientes a su lógica para recibir mensajes secuencialmente después de procesar los mensajes anteriores.La siguiente tabla muestra el nivel de comunicación dentro del servidor en varias clases de soluciones de IoT:Capa Etl: nivel de recopilación, procesamiento y almacenamiento de datos.
El nivel interno de ETL (extracción, conversión y carga) es la tercera operación de ETL. El primero estaba en el dispositivo periférico, el segundo en la puerta de enlace. Back End ETL recopila datos de todos los dispositivos periféricos y puertas de enlace y es responsable de las siguientes operaciones:- Recopilación de información
- Trayendo información a la vista estándar
El esquema general para implementar esta capa se muestra en la figura. La operación de recopilación de datos (Extracto) implica leer información de colas relevantes. La operación de transformación puede ser realizada por servicios especializados en la nube, como Lambda, o por medios informáticos dentro de contenedores y solo máquinas virtuales. Cada uno de los métodos anteriores tiene sus propiedades positivas y negativas. Por ejemplo, el servicio Lambda es conveniente para una automatización casi completa, pero tiene un tiempo de creación significativo y, por lo tanto, no es aplicable si se requiere una reacción rápida a los eventos que surgen. Lambda también es poco adecuado para el procesamiento continuo, ya que se cobra por el tiempo de uso. El servicio más utilizado es la informática en contenedores. Son convenientemente escalables y fácilmente transportados a varios BackEnds.El objetivo principal de esta operación es llevar los datos a una forma conveniente para almacenar, ordenar y buscar. Para hacer esto, los datos a menudo se combinan de diferentes mensajes e incluso colas.Las operaciones de almacenamiento (Carga) están destinadas al almacenamiento, clasificación y posterior recuperación de información. Dependiendo del tipo de información y las opciones para su uso, se utilizan varias herramientas. Si los datos no tienen un esquema estricto (columnas de tabla), se almacenan en bases de datos NoSQL. Sin embargo, si los datos se pueden sistematizar mediante un esquema fijo, se utilizan los tipos de bases de datos SQL. Estos últimos, a su vez, tienen 2 tipos: OLTP (procesamiento transaccional en línea) y OLAP (procesamiento analítico en línea). Como su nombre lo indica, el primer tipo es más adecuado para el proceso ETL en sí mismo: escribir nuevos valores en la base de datos, mientras que el segundo es más conveniente para buscar y analizar datos. Por lo tanto, a menudo después de descargar a la base de datos OLTP, en segundo plano, los datos se copian a OLAP. Hay situaciones en las que los datos no son convenientes o imposibles de almacenar en bases de datos,Por ejemplo, como registro, estos datos se registran en un Bucket y los metadatos de los registros se almacenan en bases de datos. Para reducir los costos de almacenamiento, los datos obsoletos se archivan o eliminan. Y el último componente de este nivel es la notificación interna de la disponibilidad de nuevos datos almacenados para su presentación a los clientes y para los servicios de análisis.A continuación se muestra una tabla del nivel de recopilación, procesamiento y almacenamiento en varias clases de soluciones de IoT:Big Data y capa analítica: capa analítica
Depende de la aplicación específica de IoT. Big data y el nivel analítico extraerán información situacional de todo el conjunto de dispositivos periféricos. Esta parte está menos estandarizada, porque es muy diferente de una aplicación a otra debido a la resolución de problemas diferente. Los algoritmos AI / ML también se usan ampliamente en esta capa.Una categoría separada es la predicción de eventos futuros, como las piezas necesarias en un almacén, el consumo de recursos futuros, el clima, etc.La tabla a continuación muestra el nivel de análisis en varias clases de soluciones de IoT:Notification layer —
Puede haber varios componentes en este nivel, pero todos tienen un algoritmo de notificación de suscripción. La aplicación cliente se suscribe a los eventos necesarios y, cuando esto sucede, recibe una señal de información, una notificación. Estas son principalmente aplicaciones de correo electrónico y clientes móviles, menos llamadas telefónicas (utilizadas para alertas de emergencia). La aplicación móvil se ve obligada a ingresar al modo de suspensión para el consumo de energía, pero iOS y Android tienen un mecanismo de notificación que indica la llegada de nuevos datos.La siguiente tabla muestra el nivel de notificación en varias clases de soluciones de IoT:Presentation Layer —
Una aplicación de IoT puede tener dos flujos: M2M (de máquina a máquina) y M2P (de máquina a persona). La capa de presentación asociada con la secuencia M2M, donde el Back End procesa la información y la proporciona a un cliente o ingeniero de soporte. Hoy en día no existe una representación UI / UX estandarizada para este nivel, pero espero que aparezca en el futuro cercano.La capa de presentación también es responsable de mantener, configurar y cambiar el estado del sistema, incluidos los periféricos y las puertas de enlace. También incluye comandos para controlar actuadores de dispositivos periféricos.La siguiente tabla muestra el nivel de presentación en varias clases de soluciones de IoT:Capa de configuración - nivel de configuración
Este nivel se aplica a ambas transmisiones: M2M y M2P y funciona como almacenamiento para tres tipos de estados de dispositivos periféricos:- El estado actual del dispositivo periférico.
- , .
- — . .
Un dispositivo periférico e incluso una puerta de enlace solo pueden tener un corto tiempo de conexión al Backend. Discutimos esto antes. Cualquier cambio en el estado de un cliente o sistema se almacena en este nivel y se envía a la puerta de enlace o dispositivo periférico durante el tiempo de comunicación.Para que esta lógica funcione, generalmente se implementa el siguiente proceso de comunicación:
si la puerta de enlace está presente en el esquema de transferencia de información, la mayor parte de la información de los dispositivos periféricos se envía a la parte del servidor en forma de paquetes de datos recopilados de varios dispositivos periféricos.La siguiente tabla muestra el nivel de configuración para las diversas clases de soluciones de IoT:Resultados y cómo construir una arquitectura de soluciones IoT.
Para resumir lo anterior. Las siguientes tendencias de desarrollo se observan en las soluciones de IoT:- Los sensores se dividen en 2 grupos:
- Simple, barato, con el menor consumo de energía posible. Transferencia de información de baja velocidad y alto rango. Estos son en realidad dispositivos únicos que no son reparables.
- Basado en videocámara. El dispositivo está integrado con una computadora periférica. Tiene mecanismos incorporados para el reconocimiento de patrones y la toma de decisiones básicas.
- ETL — , backend. , , — .
- , . . — LvM2M.
- Backend Cloud. AWS.
- , WEB . . .
¿Dónde comenzar a construir una solución arquitectónica de IoT? No existe un enfoque único para la respuesta a esta pregunta. Y aquí daré mi opinión personal:- Definir el modelo de datos que podemos obtener de la puerta de enlace, es decir transferido a backend.
- Compruebe qué dispositivos periféricos pueden recopilar datos y cómo se deben procesar para llevarlos al modelo transmitido por la puerta de enlace.
- Verifique los requisitos para periféricos: distancias, cantidad de información, consumo de energía, etc.
- Seleccione el dispositivo informático periférico apropiado, su ubicación en relación con los sensores, el protocolo de su trabajo.
- Resuelva la arquitectura de la parte de la nube, que incluye:
- Seguridad
- Compartir la carga
- Transferencia de datos asincrónica en la nube
- Almacenamiento de elementos, forma y ciclo de vida de datos
- Construya un gráfico de transferencia de información del sistema
- Construir modelos analíticos, componente AI / ML
- Desarrollar tipos y contenido de notificaciones.
- Configurar redundancia y escalabilidad automática de servicios
- Estima el costo y optimiza
- Diseño de UI / UX para clientes móviles
- Crear retroalimentación de datos periféricos
Espero que este artículo sea útil, al menos para la primera introducción a los proyectos de IoT. En el futuro, intentaré dar implementaciones específicas de soluciones IoT.