Desenvolvimento de um sistema de monitoramento de gabinete de comunicação na AWS

No post anterior , foi proposto um algoritmo para a escolha de um sistema de controle para várias tarefas da "Internet das Coisas". Para soluções de médio porte, o uso de plataformas de IoT em nuvem revelou-se ideal.



Este artigo é sobre como implementamos um sistema de monitoramento e gerenciamento baseado na plataforma Amazon WEB Services (AWS). Um gabinete de comunicação semelhante a uma pequena “Casa Inteligente” é considerado um objeto de controle. Dentro de tal gabinete pode ser instalado equipamento de comunicação celular ou fixo, Wi-Fi urbano, vigilância por vídeo, controle de iluminação ou semelhantes, bem como fonte de alimentação e dispositivos de controle de temperatura. Usando um controlador de casa inteligente gabinete, um conjunto de sensores e um sistema de nível superior, o operador pode monitorar o estado do equipamento, o microclima e segurança e proteção contra incêndio. 





Tarefa



Vamos considerar a criação de um sistema de duas camadas, cujo diagrama estrutural é mostrado abaixo.





No nível inferior, devem ser usados ​​controladores com sensores, atuadores e dispositivos digitais.



Funções do sistema de nível inferior e requisitos do controlador



Funções  Requisitos do controlador
Alimentação elétrica ou fonte de alimentação de backup DC Fonte de alimentação para 220VAC ou 18..72VDC

(para gabinetes com um sistema de energia de backup)
Comunicação com o sistema de nível superior Porta Ethernet e / ou módulo 2G / LTE. Suporta protocolos: MQTT / TLS, WEB, interface de linha de comando (CLI), SNMP v.1-3, Syslog, autorização Radius.
, , RS485, RS232, CAN, USB, Ethernet .
- : , , , , .



,
- DHT , ; 0..20 , NAMUR. ;1-Wire Maxim Integrated.
, , ( ) U = 230, Imax > 5A( )




  • IoT ,
  • ,
  • B2B , B2C « »,
  • ,
  • ;
  • WEB , 
  • ,
  • .




Hoje, mais de 600 plataformas de IoT foram desenvolvidas no mundo e esse número está crescendo constantemente . Ao mesmo tempo , a plataforma Amazon WEB Services (AWS) era a mais popular entre os desenvolvedores em 2019. A posição dominante da AWS determinou nossa escolha desta plataforma como base para nosso sistema ST-Eye. A decisão também foi influenciada pelo pronto suporte técnico e pela disponibilidade de uma grande quantidade de informações de referência. Os caras da AWS compartilharam as melhores práticas e ajudaram a escolher as tecnologias mais eficazes.



Abaixo está a arquitetura e a descrição do sistema ST-Eye.



Arquitetura do sistema ST-Eye IoT na plataforma AWS





Nível de comunicação com controladores



Os controladores de objeto se conectam ao serviço AWS IoT-Core usando TLS. O endereço do servidor usado para a conexão contém um identificador exclusivo para a conta. A autenticação é realizada usando o protocolo x509. Cada dispositivo usa seu próprio certificado exclusivo. Além de seu próprio certificado, o controlador possui um certificado CA para autenticação do servidor. A criação e distribuição de certificados é feita por meio da plataforma AWS. Após a autenticação bem-sucedida, o protocolo MQTT é usado, que se tornou o padrão de fato na IoT... O protocolo MQTT é baseado na interação dos clientes entre si de acordo com o princípio pub / sub. Os clientes publicam mensagens em canais (tópicos) e assinam tópicos existentes de outros clientes. Isso é fornecido por um serviço intermediário - um corretor, que armazena uma lista de tópicos e listas de assinantes para cada um dos tópicos disponíveis. O serviço IoT-Core fornece vários tópicos padrão para assinatura e publicação, você pode criar outros tópicos. Eles estarão disponíveis na região e conta da AWS. Por exemplo, os controladores assinam tópicos de controle direto e o aplicativo WEB publica comandos para eles. Devido aos baixos requisitos de recursos do MQTT, o tempo de resposta do controlador ao comando do operador é mínimo (em nosso sistema - não mais do que 0,5 segundos ao usar uma conexão Ethernet de escritório). IoT-Core é um serviço gerenciado, respectivamente,redundância e escalonamento são executados sem intervenção do usuário.



Uma das principais funções do serviço IoT-Core é a imagem virtual sombra do dispositivo. Ele permite que você obtenha o último estado conhecido do dispositivo e exiba-o mesmo quando o dispositivo não está disponível na rede. Esse recurso é indispensável para trabalhar com dispositivos GSM ou dispositivos alimentados por bateria, uma vez que podem ficar sem contato por muito tempo. Shadow é um objeto JSON que contém dois campos principais: relatado e desejado. Cada campo contém pares de valores-chave correspondentes aos parâmetros de saída e / ou dispositivo. Quando os parâmetros desejados do dispositivo são alterados, o campo delta é gerado contendo a diferença entre os campos desejados e informados. O dispositivo assina o tópico $ aws / things / thingName / shadow / update / deltae atualiza seu estado interno se houver parâmetros no campo delta. Shadow contém a data e hora da última atualização. Assim, o aplicativo de nível superior recebe informações sobre há quanto tempo o controlador contatou pela última vez.



O serviço IoT-Core também fornece um sistema flexível de regras para interagir com outros serviços. Em nosso aplicativo, as regras do IoT-Core são usadas, por exemplo, para enviar notificações e ativar dispositivos. As notificações são configuradas na estação de trabalho do administrador. Notificações de SMS disponíveis, e-mail, push.



O processo de atualização de software em dispositivos IoT tem requisitos rígidos. A fonte de atualização e o contêiner com o novo firmware devem ser verificados quanto à autenticidade e compatibilidade com o controlador. Caso contrário, o controlador pode se transformar em um "tijolo" após a atualização. O mecanismo de trabalho é usado para executar Firmware over the air (FOTA) ou configuração de dispositivo. O controlador recebe um conjunto de comandos e dados adicionais por meio de um tópico especial e, em seguida, executa os comandos sequencialmente. Por exemplo, ele baixa o firmware do armazenamento em nuvem AWS S3 usando o link e verifica sua assinatura.



Camada de processamento de dados



Para processar dados provenientes do serviço IoT-Core para AWS, o subsistema IoT-Analytics é usado. O bloco de canal , usando regras semelhantes a sql, permite que você selecione uma fonte de dados, por exemplo, campos de mensagens individuais de dispositivos. Os dados brutos que chegam pelo canal podem ser armazenados no armazenamento interno do serviço ou no S3. O componente pipeline permite pré-processar, filtrar ou complementar os dados. Por exemplo, com base em alguns dados, você pode fazer uma solicitação a um banco de dados (DB) ou um serviço externo e adicionar informações da resposta. Os dados pré-processados ​​são salvos no banco de dados do armazenamento de dados . Este banco de dados é do tipo de banco de dados de série temporal ( TSDB) e é projetado para trabalhar com dados provenientes de sensores com referência de tempo. Com esses dados, é possível acompanhar a mudança em cada parâmetro do sistema durante todo o período de observação. Ao contrário de outros tipos de bancos de dados, o TSDB oferece ferramentas como políticas de retenção / exclusão de dados, agendador de consultas e funções de agregação flexíveis.



Amostras de dados são posteriormente aplicadas a registros no armazenamento de dados ( conjuntos de dados) Eles podem ser implementados na forma de consultas SQL e executados pelo agendador dentro do subsistema IoT-Analytics e, se uma lógica mais complexa for necessária, no contêiner Docker. Os resultados do pós-processamento ficam armazenados no armazenamento do serviço e ficam disponíveis por 90 dias a partir do aplicativo WEB e do serviço de visualização de dados (Quicksight). Após a data de expiração, os dados são transferidos para um armazenamento refrigerado no S3 usando uma função Lambda.



Nível de visualização (aplicativo WEB)



No nível superior do sistema, é implementado um portal WEB, representado por várias estações de trabalho automatizadas (AWS), em particular, um administrador, analista / gerente e despachante.



Considere a estação de trabalho do despachante. Sua janela principal se parece com uma tabela, que resume os dados sobre grupos de objetos.





Cada objeto pode estar em um de cinco estados: normal, problema / alarme, violação, modo de serviço e sem comunicação. Cada célula da tabela permite que você navegue até uma lista de objetos relevantes com informações mais detalhadas: 





Ao clicar no dispositivo correspondente da lista, você pode abrir a página para seu monitoramento e controle.



O aplicativo WEB usa o protocolo TLS como um transporte para se conectar ao AWS. A autenticação funciona no algoritmo Signature V4 e usa o microsserviço Cognito. O código do aplicativo é hospedado no armazenamento S3. O portal usa o mecanismo de Integração Contínua. Novas versões são testadas automaticamente e, se bem-sucedidas, são aplicadas à plataforma. O serviço Beanstalk é usado para controle de versão e implantação automática.



Substituição de importação



A legislação russa para aplicativos governamentais (B2G) tem restrições ao uso de servidores fora da Rússia, por exemplo, 187-. O serviço de nuvem russo mais avançado é o Yandex.Cloud, do qual a plataforma IoT faz parte. No início do trabalho em nosso sistema, alguns dos componentes disponíveis no AWS ainda não estavam disponíveis no Yandex. Em particular, para criar uma solução completa, você precisava de seu próprio backend para interagir com o aplicativo WEB e o broker MQTT. Por outro lado, Yandex já ofereceu ferramentas analíticas e de banco de dados ricas, ferramentas de implantação de aplicativos e armazenamento em nuvem (Armazenamento de Objetos). O serviço Datalens para visualização de dados (semelhante ao AWS Quicksight) já está disponível, bem como o banco de dados ClickHouse, que é perfeito para armazenar dados de série temporal.



A Yandex dá uma grande contribuição para o desenvolvimento do Código Aberto no mundo, além de tentar compatibilizar seus produtos com as soluções existentes. Portanto, por exemplo, você pode trabalhar com Object Storage Yandex usando o utilitário aws-cli usando comandos para AWS S3.



Selecionando controladores de objetos



O mercado de controladores de objetos é muito grande. O número de opções e fabricantes para escolher chega a dezenas e os modelos a centenas. Via de regra, ao criar sistemas de controle, são utilizados controladores que já sabem trabalhar ou que o fornecedor do sistema de nível superior recomenda. Este estado de coisas é o único possível ao usar sistemas de alto nível desenvolvidos para determinados equipamentos ( plataformas de software específicas de hardware ) e trabalhar com controladores usando protocolos de intercâmbio fechado.



Ao usar sistemas de nível superior operando em protocolos abertos (plataformas IoT em nuvem são exatamente isso), você pode economizar dinheiro escolhendo o equipamento ideal para os requisitos do projeto. Um exemplo de tais requisitos é dado no parágrafo “Funções do sistema de baixo nível e requisitos do controlador” acima.



Para soluções B2G de acordo com PP-878, é melhor focar nos controladores russos. Para algumas áreas, está se tornando cada vez mais importante usar equipamentos baseados em elementos de base russa.



Nem todo mundo está familiarizado com a opção de projetar controladores personalizados. Pode ser recompensado com o uso de uma base de elemento de baixo custo e a implementação do número necessário de blocos funcionais para um projeto específico. Além disso, o complexo de equipamentos da instalação será composto por um número mínimo de dispositivos (às vezes apenas um), o que significa que haverá menos trabalho de montagem, instalação e comissionamento.



O desenvolvimento personalizado do controlador pode compensar devido ao menor custo do equipamento, menos instalação e trabalho de comissionamento.



Para a tarefa descrita, usamos o controlador GiC(Controlador de Internet genérico) proprietário. É equipado com o número necessário de interfaces de rede, portas de entrada e saída, fonte de alimentação embutida, suporta protocolos MQTT, WEB, SNMP, ModBUS e pode interrogar vários dispositivos digitais: dispositivos de medição, sistemas de fonte de alimentação, condicionadores de ar (a lista está em constante expansão)



Conclusão



Acima, descrevemos como nosso sistema de gerenciamento é feito na AWS. As tecnologias da nuvem facilitam este tipo de desenvolvimento, mas ainda não se pode dizer que se trata de alguns cliques. Se a sua tarefa for semelhante à nossa, entre em contato conosco.



Em plataformas IoT, vale a pena aguardar o aparecimento de modelos pré-configurados para sistemas Smart Home, ASKUE, NMS, ACS, etc. Isso simplificará ainda mais a criação de soluções completas, reduzirá o limite para entrar neste negócio e atrairá um público adicional para as tecnologias de nuvem.



As plataformas IoT usam protocolos de troca abertos com controladores. Isso dá aos usuários a liberdade de escolher seu equipamento. Existe a possibilidade de desenvolvimento personalizado de controladores (nossa especialização ). O uso de controladores personalizados pode reduzir o orçamento do projeto.



Para projetos governamentais e projetos relacionados à infraestrutura de informação crítica, é melhor focar nos sistemas russos e equipamentos de instalação, uma vez que o mercado para tais sistemas já foi formado e está em desenvolvimento.



All Articles