Há quase um ano, comecei a publicar uma série de artigos sobre a arquitetura de soluções de IoT. (Link para o primeiro artigo
habr.com/en/post/420173 ). E, finalmente, o segundo artigo da série vai ao seu tribunal.

Os projetos de IoT são parecidos e é verdade que eles compartilham componentes comuns. Mas, ao mesmo tempo, os projetos de IoT têm diferenças fundamentais, começando com a solicitação de mercado e as classes de tarefas a serem resolvidas.
Obviamente, desenvolver cada solução "do zero" é extremamente ineficiente. Muitos componentes podem ser reutilizados de acordo com o princípio dos padrões de programação.
Neste artigo, analisaremos as várias classes de soluções de IoT e suas respectivas implementações. Como resultado, serão fornecidas recomendações sobre as etapas para implementar a arquitetura de IoT e tentaremos destacar as tendências gerais das soluções de IoT.
Também tentaremos formular as principais áreas problemáticas, a partir das quais, vale a pena iniciar a construção de arquiteturas para soluções específicas de IoT e possíveis áreas problemáticas das arquiteturas.
Aplicativos de IoT
Hoje existe uma divisão em três principais regiões geográficas de aplicação das soluções de IoT:
Europa
O mercado da Internet das coisas na Europa está considerando projetos relacionados à conservação dos recursos naturais. Um exemplo típico é a iluminação diurna / noturna, automação de aquecimento, gerenciamento de água, alarme de incêndio.
Região do Extremo Oriente
Nesse mercado, a primeira prioridade das soluções de IoT é a segurança. Aplicações típicas são câmeras que detectam situações incomuns na estrada, transporte e em casa. A segunda área principal são as soluções de segurança e prevenção de desastres, como atividades sísmicas, furacões, tufões, tsunamis.
Mercado da América do Norte
Os projetos de IoT que visam otimizar processos de negócios, como otimizar transporte, entrega eficiente de mercadorias, bem como elementos de casas e cidades inteligentes, são representados principalmente neste mercado.
Obviamente, as soluções de IoT penetram de um mercado para outro e não são prerrogativas exclusivas. Em cada região, podemos encontrar todas as classes de soluções de IoT. É importante para nós classificar essas classes de produtos de IoT que existem hoje nos mercados globais. A seguir, é apresentada uma lista dessas classes de soluções de IoT:
- Cidade inteligente. As principais tarefas são a gestão e regulamentação do tráfego de automóveis, iluminação noturna / dia, aviso de perigo para pedestres e determinação de situações perigosas e não padronizadas na cidade.
- Casa inteligente. As principais tarefas são segurança, campainha inteligente, controle de TV e cozinha, sistemas automáticos de irrigação e iluminação, incêndio, gás, vazamento de água e alarmes de temperatura da casa.
- Clima e desastres naturais. Informação meteorológica, atividade sísmica, controle de incêndio. Previsão do tempo.
- Otimização do uso de recursos em casa, cidade, país. Iluminação, eletricidade, aquecimento, otimização e previsão do uso, por exemplo, de combustível em usinas de energia.
- Otimização de transporte, entrega, armazenamento e triagem. Empresas como DHL, FedEx usam a solução para criar rotas de transporte ideais. Terminais de armazenamento e classificação nos principais aeroportos.
- Monitoramento e controle de fábrica, gerenciamento de linha de transporte. Robôs de controle. Classificação de mercadorias, matérias-primas e testes de produtos acabados.
- Mecanismos sofisticados, dispositivos de alta tecnologia, como carros modernos, aviões, etc. Sistema de controle automatizado, proteção anti-roubo, controle de unidades do sistema. Reconhecimento do rosto e do corpo do motorista para evitar sono, perda de atenção. Previsão de manutenção e substituição de componentes do sistema.
Arquitetura IoT
Topologia geral de soluções de IoT
A figura abaixo mostra a arquitetura em camadas das soluções de IoT. A topologia da IoT é diferente de um modelo de camada convencional, como o OSI. Este não é um gráfico de fluxo linear ou mais complexo. Alguns componentes são opcionais e podem não estar disponíveis em uma classe específica de soluções. Dois tipos de lógica podem estar presentes - M2M (de carro para carro) e M2P (de carro para homem), além de casos mais especiais, como C2C (de carro para carro, geralmente em uma célula de comunicação móvel LTE).
A solução de IoT possui dois locais físicos - o primeiro são os dispositivos finais (periféricos) e o segundo no datacenter de back-end em servidores ou na nuvem. Ao mesmo tempo, essa não é uma arquitetura clássica de aplicativos cliente-servidor, como veremos mais adiante.

Abaixo, analisaremos cada nível separadamente e compararemos seus recursos com as classes reais de soluções de IoT.
Camada Física - camada física
Este nível representa dois tipos de operações - coleta de informações (sensores) e execução de trabalhos mecânicos (mecanismos executivos).
Os sensores podem ser divididos nas seguintes categorias:
- Sensores:
- Luz: Foto diodos / transistores / resistores, detectores PIR
- Som: Microfones, sensores ultrassônicos
- Os interruptores, em especial os fins de curso, registram os pontos extremos do movimento mecânico. Medição do ângulo de rotação ou velocidade de rotação.
- Sensores eletromagnéticos que medem alterações nas características físicas, como capacitância elétrica, indutância, resistência.
- Sensores complexos ou compostos. Isso inclui sensores especializados, como gás, espectro, etc., além de um tipo separado de dispositivo de coleta de informações que está ganhando crescente aplicação - câmeras de vídeo.
Nas soluções de IoT, os elementos físicos têm certos requisitos comuns:
- O preço mais baixo possível, devido à alta quantidade na solução de IoT.
- Alimentado por bateria, que por sua vez requer baixo consumo de energia. Atualmente, a demanda do mercado é a operação de dispositivos periféricos sem manutenção de 1 a 10 anos.
- Frequentemente localizado em locais inacessíveis e remotos, com custos mínimos de instalação e manutenção.
- No caso de usar câmeras de vídeo, o processamento primário de imagens com tomada de decisão com base em inteligência artificial
Os atuadores das soluções de IoT abrem as fechaduras das portas de entrada, acionam motores, selsyn, acendem / apagam as luzes, aquecimento, água, gás, etc. Não há grandes mudanças na implementação dos atuadores. Portanto, esta parte da solução IoT não será abordada neste artigo.
A seguir, é apresentada uma tabela da camada física em várias classes de soluções de IoT:
Podemos resumir dois problemas para os requisitos da camada física:
- Baixo consumo de energia. É necessário um alto nível de integração com as camadas superiores.
- O uso de câmeras de vídeo. Também requer um alto grau de integração com níveis mais altos e funções internas de AI / ML implementadas no dispositivo periférico.
Camada de Borda - Nível de Computação Periférica
Esse nível geralmente é conectado a um único sensor ou atuador. Ele fornece funcionalidade mínima para converter informações analógicas em digitais e / ou vice-versa. Para conectar sensores, existem os mesmos requisitos de preço e consumo de energia. Muitos fabricantes que produzem esses tipos de dispositivos não possuem um padrão único para modelo, configuração e operação de dados, o que cria problemas de integração individuais.
Para reduzir o consumo de energia, os periféricos geralmente têm quatro modos de operação:
- Modo de suspensão
- Medindo e coletando informações de sensores
- O modo de comunicação, transmissão e recebimento de informações
- Modo de instalação e conexão
A seguir, é apresentado um diagrama de blocos de um dispositivo periférico.

Um dispositivo periférico geralmente combina três níveis: físico, computação periférica e comunicação. A principal funcionalidade do nível de computação periférica é o ETL local (Extração, Transformação e Carga) - recebendo, convertendo e salvando informações dos sensores. Esse nível é responsável não apenas pela coleta de informações do sensor, mas também por trazê-las para um formulário padrão, interferência de filtragem, análise preliminar e armazenamento local.
A tabela abaixo mostra o nível da computação periférica em diferentes classes de soluções de IoT:
Portanto, os principais requisitos do nível de computação periférica:
Baixo consumo de energia. Isso pode ser alcançado com hardware de baixa potência e algoritmos Sleep / WakeUp. Muitas vezes, a presença de um elemento local de inteligência artificial.
Camada de rede local - camada de comunicação periférica
A transferência de dados é a parte que consome mais energia de um dispositivo periférico, pois a maioria dos dispositivos periféricos não está conectada à rede elétrica e às comunicações com fio. Além disso, os dispositivos periféricos podem estar localizados bem longe do Gateway (a poucos quilômetros). Por outro lado, a quantidade de informação transmitida é geralmente bastante pequena. Os seguintes protocolos são usados no nível de comunicação periférica:
- ZigBee / Zwave
- Ble
- Lora
- Banda baixa proprietária
Atualmente, Ad Hoc e Mesh são amplamente utilizados neste nível para aumentar a distância e a confiabilidade.
Para fins de configuração, o protocolo NFC também pode ser usado. Durante a primeira instalação e / ou manutenção, um engenheiro de serviço com um aplicativo móvel pode se conectar a um dispositivo periférico através de uma camada de comunicação periférica. Às vezes, um código Q impresso em um dispositivo periférico também é usado para autenticação.
A tabela abaixo mostra o nível de comunicação periférica em várias classes de soluções de IoT:
Camada de gateway - nível de gateway
Há vários motivos para ter uma camada de gateway em uma solução de IoT:
- Se o Backend receber informações brutas, aumentará sua potência e os custos serão muito altos.
- O back-end não pode garantir resposta em tempo real para um grande número de periféricos.
- Devido a restrições de segurança, algumas informações não podem ser enviadas ao Backend e não podem ser monitoradas continuamente por seres humanos. Essas informações incluem dados de câmeras de vigilância nas ruas, informações médicas etc.
O gateway deve fornecer a seguinte funcionalidade básica:
- Implemente um segundo nível de ETL de seus periféricos.
- Corrija uma situação crítica e dê uma reação local, mesmo sem comunicação com o BackEnd. Isso pode ser comparado com os sinais do batimento cardíaco ou da respiração pulmonar de uma pessoa sem a participação do cérebro.
- Comunique-se com o Backnd. Envia informações processadas de dispositivos periféricos para o servidor e recebe dados de configuração para dispositivos periféricos.
- Salve informações sobre o status dos dispositivos periféricos e os dados coletados por eles.
Em alguns casos, a funcionalidade AI / ML (inteligência artificial / aprendizado de máquina) deve estar presente no nível do gateway. O dispositivo de gateway é alimentado principalmente pela rede elétrica ou possui uma grande bateria interna, mas algumas soluções também exigem baixo consumo de energia. Nessa situação, surge um problema adicional - o protocolo de sincronização para comunicação com o dispositivo periférico. Um deles (gateway ou dispositivo periférico) deve transmitir a mensagem “Pronto para comunicação” com mais frequência do que o outro dispositivo está pronto para se comunicar. A escolha dependerá do consumo total de energia de cada dispositivo e do tempo necessário sem manutenção.
Hoje, estamos aumentando o número de aplicativos com uma fonte de informação na forma de uma câmera de vídeo. Nessas soluções específicas, Gateway e Edge podem ser integrados juntos. A funcionalidade AI / ML nesses aplicativos está se tornando muito popular. Com os novos aceleradores de inteligência de máquina para sistemas embarcados, essa solução se tornou realidade.
Separadamente, deve-se dizer sobre os gateways para soluções domésticas inteligentes. Um gateway nessa classe de soluções geralmente é combinado com dispositivos STB - adaptadores de televisão ou com uma unidade de controle de segurança doméstica. Já existe uma plataforma RDK-V aberta para a primeira integração. Em um futuro próximo, devemos esperar uma maior integração dos três componentes - o gateway + STB + segurança em um dispositivo. Provavelmente, também contará com serviços NAS (armazenamento local de arquivos) e AI / ML para reconhecimento de vídeo / áudio da máquina. Dispositivos de reconhecimento de áudio, como o Alexa, são baseados na infraestrutura da nuvem, mas o reconhecimento primário provavelmente será levado para o nível periférico.
A tabela abaixo mostra o nível do gateway em várias classes de soluções de IoT:
Camada de rede ampla - camada de link externo
Essa camada separa as partes periférica e BackEnd da solução geral. O gateway está conectado principalmente ao BackEnd usando dispositivos móveis sem fio, como 4G / 5G, mas às vezes é usado acesso à Internet com fio. A camada lógica da comunicação externa possui um protocolo padronizado para soluções de IoT chamado LvM2M. O protocolo LvM2M foi projetado para acessar cada dispositivo periférico, mas como muitos fornecedores de periféricos não suportam interfaces LvM2M, o dispositivo de gateway pode resolver esse problema e criar um invólucro para a comunicação com dispositivos periféricos.
A camada de comunicação externa também contém serviços de comunicação e modelos ISO em si. Ele inclui serviços de localização e balanceamento baseados em DNS, o protocolo de transporte COAP, criptografia DTLS e muitos outros componentes que estão além do escopo deste artigo.
Um comentário importante que temos que fazer aqui. O protocolo LvM2M usa o protocolo de criptografia DTLS. O protocolo DTLS é um protocolo com chaves de segurança e uma sessão de handshake. Funciona ponto a ponto. Para descriptografar pacotes DTLS, devemos usar a mesma instância de Back-End que tivemos durante a sessão de conexão. Isso representa um problema para o Load Balancer, que faz parte da camada de segurança em nosso circuito. O balanceador de carga, por sua vez, é necessário para o dimensionamento automático com alta carga do sistema. Para evitar essa limitação, o DNS é usado como um balanceador de carga. Cada consulta N DNS recebe um novo endereço IP para a instância do nível de segurança.
Abaixo está uma tabela do nível de comunicação externa em várias classes de soluções de IoT:
Security Layer —
Essa camada fornece funções AAA (Autenticação, Autorização e Contabilidade) e criptografia / descriptografia, juntamente com outros serviços relacionados à Internet. Todas as nuvens têm suas próprias implementações de segurança, mas funcionalmente todas elas são criadas com base no princípio de funções e permissões. Conforme observado no parágrafo acima, essa camada também serve como o terminador da conexão criptografada DTLS.O Endend Connectivity to Backend também possui um componente da camada de segurança.A tabela abaixo mostra o nível de segurança em várias classes de soluções de IoT:Middleware Layer —
Essa camada fornece funcionalidade interna da nuvem com balanceamento de carga, enfileiramento de mensagens e streaming. Os componentes dessa camada devem ser duplicados e redimensionados automaticamente. O nível é implementado principalmente com base em microsserviços ou PaaS de provedores de nuvem. Esse requisito deriva do paradigma de saltos e quedas no volume de dados. O dimensionamento automático reduz o custo da implementação de back-end. A implementação real do serviço pode ser diferente, mas o princípio geral permanece um - fornecer transferência de mensagens assíncronas com buffer e balanceamento de carga. Dessa forma, os vários componentes de back-end podem fazer seu trabalho de forma independente e escalar horizontalmente, dependendo da carga.
A figura mostra um diagrama de blocos esquemático dos padrões de comunicação intra-servidor. O Load Balancer foi projetado para distribuir a carga entre diferentes serviços. Fila - as filas fornecem buffer intermediário para serviços seriais assíncronos. Assinantes - os destinatários se inscrevem nas filas correspondentes à sua lógica para receber mensagens sequencialmente após o processamento das mensagens anteriores.A tabela abaixo mostra o nível de comunicação entre servidores em várias classes de soluções de IoT:Camada Etl - nível de coleta, processamento e armazenamento de dados
O nível interno de ETL (extração, conversão e carregamento) é a terceira operação de ETL. O primeiro estava no dispositivo periférico, o segundo no gateway. O Back-end ETL coleta dados de todos os dispositivos periféricos e gateways e é responsável pelas seguintes operações:- Coleta de informações
- Trazendo informações para a visualização padrão
O esquema geral para implementar essa camada é mostrado na figura. A operação de coleta de dados (Extrair) envolve a leitura de informações de filas relevantes. A operação de transformação pode ser realizada por serviços especializados em nuvem, como Lambda, ou por meios de computação dentro de contêineres e apenas máquinas virtuais. Cada um dos métodos acima tem suas propriedades positivas e negativas. Por exemplo, o serviço Lambda é conveniente para automação quase completa, mas possui um tempo de criação significativo e, portanto, não é aplicável se for necessária uma reação rápida aos eventos que surgirem. O Lambda também é pouco adequado para processamento contínuo, uma vez que é cobrado pelo tempo de uso. O serviço mais usado é a computação em contêiner. Eles são convenientemente escaláveis e facilmente transportados para vários BackEnds.O principal objetivo desta operação é levar os dados a um formulário conveniente para armazenamento, classificação e pesquisa. Para fazer isso, os dados são frequentemente combinados de diferentes mensagens e até filas.As operações de armazenamento (carga) destinam-se ao armazenamento, classificação e recuperação subsequente de informações. Dependendo do tipo de informação e opções para seu uso, várias ferramentas são usadas. Se os dados não tiverem um esquema estrito (colunas da tabela), eles serão armazenados nos bancos de dados NoSQL. No entanto, se os dados puderem ser sistematizados por um esquema fixo, os tipos de banco de dados SQL serão usados. Este último, por sua vez, possui 2 tipos - OLTP (Processamento Transacional Online) e OLAP (Processamento Analítico Online). Como o nome indica, o primeiro tipo é mais adequado para o próprio processo ETL - escrevendo novos valores no banco de dados, enquanto o segundo é mais conveniente para pesquisar e analisar dados. Portanto, geralmente após o download no banco de dados OLTP, em segundo plano, os dados são copiados para o OLAP. Existem situações em que os dados não são convenientes ou impossíveis de armazenar em bancos de dados,Por exemplo, como um registro, esses dados são registrados em um balde e os metadados dos registros são armazenados em bancos de dados. Para reduzir os custos de armazenamento, dados obsoletos são arquivados ou excluídos. E o último componente desse nível é a notificação interna da disponibilidade de novos dados armazenados para apresentação aos clientes e serviços de análise.Abaixo está uma tabela do nível de coleta, processamento e armazenamento em várias classes de soluções de IoT:Big Data e camada analítica - camada de análise
Depende do aplicativo IoT específico. O big data e o nível analítico extraem informações situacionais de todo o conjunto de dispositivos periféricos. Esta parte é menos padronizada, porque é muito diferente de um aplicativo para outro devido à resolução de problemas diferentes. Os algoritmos AI / ML também são amplamente utilizados nessa camada.Uma categoria separada é a previsão de eventos futuros, como peças necessárias em um armazém, consumo de recursos futuros, clima etc.A tabela abaixo mostra o nível de análise em várias classes de soluções de IoT:Notification layer —
Pode haver vários componentes nesse nível, mas todos eles têm um algoritmo de notificação de assinatura. O aplicativo cliente assina os eventos necessários e, quando isso acontece, recebe um sinal de informações - uma notificação. São principalmente aplicativos de email e clientes móveis, menos chamadas telefônicas (usadas para alertas de emergência). O aplicativo móvel é forçado a entrar no modo de suspensão para consumo de energia, mas o iOS e o Android têm um mecanismo de notificação indicando a chegada de novos dados.A tabela abaixo mostra o nível de notificação em várias classes de soluções de IoT:Presentation Layer —
Um aplicativo de IoT pode ter dois fluxos: M2M (de máquina para máquina) e M2P (de máquina para pessoa). A camada de apresentação associada ao fluxo M2M, onde o Back-end processa informações e as fornece a um cliente ou engenheiro de suporte. Hoje não há representação padronizada de UI / UX para este nível, mas espero que apareça em um futuro próximo.A camada de apresentação também é responsável por manter, configurar e alterar o estado do sistema, incluindo periféricos e gateways. Também inclui comandos para controlar atuadores de dispositivos periféricos.A tabela abaixo mostra o nível de apresentação em várias classes de soluções de IoT:Camada de configuração - nível de configuração
Esse nível se aplica aos dois fluxos - M2M e M2P e funciona como um armazenamento para três tipos de status de dispositivos periféricos:- O status atual do dispositivo periférico
- , .
- — . .
Um dispositivo periférico e até mesmo um gateway podem ter um tempo de conexão curto com o back-end. Nós discutimos isso antes. Qualquer alteração no status de um cliente ou sistema é armazenada nesse nível e enviada ao gateway ou dispositivo periférico durante o tempo de comunicação.Para que essa lógica funcione, o seguinte processo de comunicação é geralmente implementado:
Se o gateway estiver presente no esquema de transferência de informações, a maioria das informações dos dispositivos periféricos é enviada para a parte do servidor na forma de pacotes de dados coletados de vários dispositivos periféricos.A tabela abaixo mostra o nível de configuração para as várias classes de soluções de IoT:Resultados e como construir uma arquitetura de soluções de IoT.
Para resumir o acima. As seguintes tendências de desenvolvimento são observadas nas soluções de IoT:- Os sensores são divididos em 2 grupos:
- Simples, barato e com o menor consumo de energia possível. Transferência de informações de baixa velocidade e alta faixa. Na verdade, esses são dispositivos únicos que não podem ser reparados.
- Baseado na câmera de vídeo. O dispositivo está integrado com um computador periférico. Possui mecanismos internos para reconhecimento de padrões e tomada de decisão básica.
- ETL — , backend. , , — .
- , . . — LvM2M.
- Backend Cloud. AWS.
- , WEB . . .
Por onde começar a criar uma solução arquitetônica de IoT? Não existe uma abordagem única para a resposta a esta pergunta. E aqui vou dar a minha opinião pessoal:- Defina o modelo de dados que podemos obter do gateway, ou seja, transferido para o back-end.
- Verifique quais dispositivos periféricos podem coletar dados e como eles devem ser processados para levar ao modelo transmitido pelo gateway.
- Verifique os requisitos de periféricos - distâncias, quantidade de informações, consumo de energia, etc.
- Selecione o dispositivo de computação periférica apropriado, sua localização em relação aos sensores, o protocolo de seu trabalho.
- Resolva a arquitetura da parte Cloud, incluindo:
- Segurança
- Compartilhamento de carga
- Transferência de dados assíncrona na nuvem
- Armazenamento de elementos, formulário e ciclo de vida dos dados
- Crie um gráfico de transferência de informações do sistema
- Construir modelos analíticos, componente AI / ML
- Desenvolver tipos e conteúdo de notificações
- Configurar redundância e escalabilidade automática de serviços
- Estimar o custo e otimizar
- Design de UI / UX para clientes móveis
- Crie feedback de dados periféricos
Espero que este artigo seja útil, pelo menos para a primeira introdução aos projetos de IoT. No futuro, tentarei fornecer implementações específicas de soluções de IoT.