Este artículo trata sobre cómo implementamos un sistema de monitoreo y administración basado en la plataforma Amazon WEB Services (AWS). Un gabinete de comunicación que se asemeja a una pequeña "casa inteligente" se considera un objeto de control. Dentro de un gabinete de este tipo se pueden instalar equipos de comunicación celulares o fijos, WiFi de la ciudad, videovigilancia, control de iluminación, etc., así como dispositivos de suministro de energía y control del clima. Usando un controlador de
Tarea
Consideremos la creación de un sistema de dos niveles, cuyo diagrama estructural se muestra a continuación.
En el nivel inferior, deben usarse controladores con sensores, actuadores y dispositivos digitales.
Funciones del sistema de nivel inferior y requisitos del controlador
Funciones | Requisitos del controlador |
Fuente de alimentación de respaldo de CC o de red | Fuente de alimentación para 220VAC, o 18..72VDC
(para gabinetes con sistema de energía de respaldo) |
Comunicación con el sistema de nivel superior | Puerto Ethernet y / o módulo 2G / LTE. Soporta protocolos: MQTT / TLS, WEB, interfaz de línea de comando (CLI), SNMP v.1-3, Syslog, Autorización Radius. |
, , | RS485, RS232, CAN, USB, Ethernet . |
- : , , , , .
, |
- DHT , ; 0..20 , NAMUR. ;1-Wire Maxim Integrated. |
, , ( ) | U = 230, Imax > 5A( ) |
- IoT ,
- ,
- B2B , B2C « »,
- ,
- ;
- WEB ,
- ,
- .
En la actualidad, se han desarrollado más de 600 plataformas de IoT en el mundo y este número crece constantemente . Al mismo tiempo , la plataforma Amazon WEB Services (AWS) fue la más popular entre los desarrolladores en 2019. La posición dominante de AWS ha determinado nuestra elección de esta plataforma como base para nuestro sistema ST-Eye. La decisión también estuvo influenciada por el rápido soporte técnico y la disponibilidad de una gran cantidad de información de referencia. Los chicos de AWS compartieron las mejores prácticas y ayudaron a elegir las tecnologías más efectivas.
A continuación se muestra la arquitectura y descripción del sistema ST-Eye.
Arquitectura del sistema ST-Eye IoT en la plataforma AWS
Nivel de comunicación con controladores
Los controladores de objetos se conectan al servicio AWS IoT-Core mediante TLS. La dirección del servidor utilizada para la conexión contiene un identificador único para la cuenta. La autenticación se realiza mediante el protocolo x509. Cada dispositivo utiliza su propio certificado único. Además de su propio certificado, el controlador tiene un certificado CA para la autenticación del servidor. La creación y distribución de certificados se realiza a través de la plataforma AWS. Después de una autenticación exitosa, se utiliza el protocolo MQTT, que se ha convertido en el estándar de facto en IoT.... El protocolo MQTT se basa en la interacción de los clientes entre sí sobre una base pub / sub. Los clientes publican mensajes en canales (temas) y se suscriben a temas existentes de otros clientes. Esto lo proporciona un servicio intermedio, un corredor, que almacena una lista de temas y listas de suscriptores para cada uno de los temas disponibles. El servicio IoT-Core proporciona varios temas estándar para suscribirse y publicar; puede crear otros temas. Estarán disponibles dentro de la región y la cuenta de AWS. Por ejemplo, los controladores se suscriben a temas de control directo y la aplicación WEB les publica comandos. Debido a los bajos requisitos de recursos de MQTT, el tiempo de respuesta del controlador al comando del operador es mínimo (en nuestro sistema, no más de 0,5 segundos cuando se usa una conexión Ethernet de oficina). IoT-Core es un servicio administrado, respectivamente,la redundancia y el escalado se realizan sin la intervención del usuario.
Una de las funciones clave del servicio IoT-Core es la imagen virtual de sombra del dispositivo. Le permite obtener el último estado conocido del dispositivo y mostrarlo incluso cuando el dispositivo no está disponible en la red. Esta característica es indispensable para trabajar con dispositivos GSM o dispositivos que funcionan con baterías, ya que pueden estar fuera de contacto durante mucho tiempo. Shadow es un objeto JSON que contiene dos campos principales: informado y deseado. Cada campo contiene pares clave-valor correspondientes a los parámetros de salida y / o dispositivo. Cuando se cambian los parámetros deseados del dispositivo, se genera el campo delta que contiene la diferencia entre los campos deseados y reportados. El dispositivo se suscribe al tema $ aws / things / thingName / shadow / update / deltay actualiza su estado interno si hay parámetros en el campo delta. Shadow contiene la fecha y hora de la última actualización. Por lo tanto, la aplicación de nivel superior recibe información sobre cuánto tiempo hace que el controlador se contactó por última vez.
El servicio IoT-Core también proporciona un sistema flexible de reglas para interactuar con otros servicios. En nuestra aplicación, las reglas de IoT-Core se utilizan, por ejemplo, para enviar notificaciones y activar dispositivos. Las notificaciones se configuran en la estación de trabajo del administrador. Notificaciones por SMS, correo electrónico, push disponibles.
Existen requisitos estrictos para el proceso de actualización de software en dispositivos IoT. La fuente de actualización y el contenedor con el nuevo firmware deben verificarse para verificar su autenticidad y compatibilidad con el controlador. De lo contrario, el controlador puede convertirse en un "ladrillo" después de la actualización. El mecanismo de trabajo se utiliza para realizar la configuración del dispositivo o del firmware por aire (FOTA). El controlador recibe un conjunto de comandos y datos adicionales a través de un tema especial, luego ejecuta secuencialmente los comandos. Por ejemplo, descarga el firmware del almacenamiento en la nube de AWS S3 mediante un enlace y verifica su firma.
Capa de procesamiento de datos
Para procesar los datos provenientes del servicio IoT-Core a AWS, se utiliza el subsistema IoT-Analytics. El bloque de canal , usando reglas similares a SQL, le permite seleccionar una fuente de datos, por ejemplo, campos de mensajes individuales de dispositivos. Los datos brutos que llegan a través del canal se pueden almacenar en el almacenamiento interno del servicio o en S3. El componente de canalización le permite preprocesar, filtrar datos o complementarlos. Por ejemplo, en función de algunos datos, puede realizar una solicitud a una base de datos (DB) o un servicio externo y agregar información de la respuesta. Los datos preprocesados se guardan en la base de datos del almacén de datos . Esta base de datos es del tipo de base de datos de series temporales ( TSDB) y está diseñado para trabajar con datos provenientes de sensores con referencia de tiempo. Con estos datos, es posible rastrear el cambio en cada parámetro del sistema durante todo el período de observación. A diferencia de otros tipos de bases de datos, TSDB proporciona herramientas como políticas de retención / eliminación de datos, programador de consultas y funciones de agregación flexibles.
Las muestras de datos se aplican posteriormente a los registros del almacén de datos ( conjuntos de datos). Pueden implementarse en forma de consultas SQL y ejecutarse por el programador dentro del subsistema de IoT-Analytics y, si se requiere una lógica más compleja, en el contenedor Docker. Los resultados del posprocesamiento se almacenan en el almacenamiento del servicio y están disponibles durante 90 días desde la aplicación WEB y el servicio de visualización de datos (Quicksight). Después de la fecha de vencimiento, los datos se transfieren al almacenamiento en frío en S3 mediante una función Lambda.
Nivel de visualización (aplicación WEB)
En el nivel superior del sistema, se implementa un portal WEB, representado por varias estaciones de trabajo automatizadas (AWS), en particular, un administrador, analista / gerente y despachador.
Considere la estación de trabajo del despachador. Su ventana principal parece una tabla, que resume datos sobre grupos de objetos.
Cada objeto puede estar en uno de cinco estados: normal, problema / alarma, violación, modo de servicio y sin comunicación. Cada celda de la tabla le permite navegar a una lista de objetos relevantes con información más detallada:
Al hacer clic en el dispositivo correspondiente en la lista, puede abrir la página para su seguimiento y control.
La aplicación WEB utiliza el protocolo TLS como transporte para conectarse a AWS. La autenticación funciona en el algoritmo Signature V4 y utiliza el microservicio Cognito. El código de la aplicación está alojado en la tienda S3. El portal utiliza el mecanismo de Integración Continua. Las nuevas versiones se prueban automáticamente y, si tienen éxito, se aplican a la plataforma. El servicio Beanstalk se utiliza para el control de versiones y la implementación automática.
Substitución de importaciones
La legislación rusa para aplicaciones gubernamentales (B2G) tiene restricciones sobre el uso de servidores fuera de Rusia, por ejemplo, 187-FZ. El servicio en la nube ruso más avanzado es Yandex.Cloud, del que forma parte la plataforma IoT. Al comienzo del trabajo en nuestro sistema, algunos de los componentes disponibles en AWS aún no estaban disponibles en Yandex. En particular, para crear una solución completa, necesitaba su propio backend para interactuar con la aplicación WEB y el broker MQTT. Por otro lado, Yandex ya ha ofrecido herramientas de base de datos y análisis completos, herramientas de implementación de aplicaciones y almacenamiento en la nube (almacenamiento de objetos). El servicio Datalens para visualización de datos (análogo a AWS Quicksight) ya está disponible, así como la base de datos ClickHouse, que es perfecta para almacenar datos de series temporales.
Yandex hace una gran contribución al desarrollo de Open Source en el mundo y también intenta hacer que sus productos sean compatibles con las soluciones existentes. Entonces, por ejemplo, puede trabajar con Object Storage Yandex usando la utilidad aws-cli usando comandos para AWS S3.
Seleccionar controladores de objetos
El mercado de controladores de objetos es bastante grande. El número de opciones y fabricantes entre los que elegir asciende a decenas y de modelos a cientos. Como regla general, al crear sistemas de control, se utilizan controladores con los que ya saben cómo trabajar o que recomienda el proveedor del sistema de nivel superior. Esta situación es la única posible cuando se utilizan sistemas de alto nivel desarrollados para ciertos equipos ( plataformas de software específicas de hardware ) y se trabaja con controladores que utilizan protocolos de intercambio cerrados.
Cuando se utilizan sistemas de alto nivel que operan en protocolos abiertos (las plataformas de IoT en la nube son solo tales), puede ahorrar dinero eligiendo el equipo óptimo para los requisitos del proyecto. Un ejemplo de tales requisitos se da en el párrafo “Funciones del sistema de bajo nivel y requisitos del controlador” anterior.
Para las soluciones B2G de acuerdo con PP-878, es mejor centrarse en los controladores rusos. Para algunas áreas, es cada vez más importante utilizar equipos basados en elementos rusos.
No todo el mundo conoce la opción de diseñar controladores personalizados. Puede resultar rentable mediante el uso de una base de elementos económica y la implementación del número necesario de bloques funcionales para un proyecto específico. Además, el complejo de equipos de la instalación constará de un número mínimo de dispositivos (a veces solo uno), lo que significa que habrá menos trabajos de montaje, instalación y puesta en marcha.
El desarrollo personalizado del controlador puede resultar rentable debido al menor costo del equipo, menos trabajo de instalación y puesta en marcha.
Para la tarea descrita, usamos el controlador GiC(Controlador genérico de Internet) patentado. Está equipado con la cantidad requerida de interfaces de red, puertos de entrada y salida, fuente de alimentación incorporada, admite protocolos MQTT, WEB, SNMP, ModBUS y puede interrogar a varios dispositivos digitales: dispositivos de medición, sistemas de suministro de energía, acondicionadores de aire (la lista se expande constantemente).
Conclusión
Arriba, describimos cómo se crea nuestro sistema de administración en AWS. Las tecnologías en la nube facilitan este tipo de desarrollo, pero aún no se puede decir que sea cuestión de un par de clics. Si su tarea es similar a la nuestra, contáctenos.
En las plataformas IoT, vale la pena esperar la aparición de plantillas preconfiguradas para sistemas Smart Home, AMR, NMS, ACS, etc. Esto simplificará aún más la creación de soluciones completas, reducirá el umbral para ingresar a este negocio y atraerá una audiencia adicional a las tecnologías en la nube.
Las plataformas de IoT utilizan protocolos de intercambio abiertos con controladores. Esto brinda a los usuarios la libertad de elegir el equipo de su sitio. Existe la posibilidad de desarrollo personalizado de controladores (nuestra especialización ). El uso de controladores personalizados puede reducir el presupuesto del proyecto.
Para proyectos gubernamentales y proyectos relacionados con la infraestructura de información crítica, es mejor centrarse en los sistemas y equipos de instalaciones rusos, ya que el mercado para tales sistemas ya se ha formado y se está desarrollando.