Visão geral técnica da Internet das Coisas

A Internet das coisas (IoT, na sigla em inglês) é um conjunto extenso de tecnologias e casos de uso sem uma definição precisa. De um ponto de vista prático, a IoT é o uso de dispositivos conectados em rede, incorporados ao ambiente físico, para melhorar alguns processos existentes ou ativar um novo cenário que antes não era possível.

Esses dispositivos, ou coisas, conectam-se à rede para fornecer informações que coletam do ambiente por sensores ou para permitir que outros sistemas contatem e influenciem o mundo por meio de atuadores. Podem ser versões conectadas de objetos comuns que você já conheça ou dispositivos novos e específicos para funções ainda não concretizadas. Eles podem ser dispositivos que você tem pessoalmente e carrega com você ou mantém na sua casa, ou podem ser incorporados em equipamentos de fábrica ou parte da construção da cidade em que você mora. Cada um deles é capaz de converter informações valiosas do mundo real em dados digitais que proporcionam maior visibilidade sobre como os usuários interagem com produtos, serviços ou aplicativos.

Os casos de uso e oportunidades específicos em diferentes setores são numerosos e, em muitos aspectos, o mundo da IoT está apenas começando. O que emergiu desses cenários é um conjunto de desafios e padrões comuns. Os projetos de IoT têm dimensões adicionais cuja complexidade aumenta em comparação com outros aplicativos de tecnologia centrada na nuvem, incluindo:

  • hardware diferente;
  • sistemas operacionais e software diferentes nos dispositivos;
  • requisitos de gateway de rede diferentes.

Neste guia, explicamos os elementos que você pode combinar com o Google Cloud para criar uma solução de IoT robusta, sustentável e completa no Google Cloud.

Visão geral dos componentes de nível superior

Aqui, dividimos o sistema em três componentes básicos: dispositivo, gateway e nuvem.

Três componentes: dispositivo, gateway e nuvem.

Um dispositivo inclui hardware e software que interagem diretamente com o mundo. Os dispositivos se conectam a uma rede para se comunicarem entre si ou com aplicativos centralizados. Os dispositivos estão direta ou indiretamente conectados à internet.

Com um gateway, os dispositivos não diretamente conectados à Internet podem alcançar os serviços de nuvem. O termo gateway tem uma função específica na rede, mas ele também é usado para descrever uma classe de dispositivo que processa dados em nome de um grupo ou cluster de dispositivos. Os dados de cada dispositivo são enviados para o Google Cloud, onde são processados e combinados com dados de outros dispositivos e, eventualmente, com outros dados comerciais.

Tipos de informações

Cada dispositivo pode fornecer ou consumir vários tipos de informações. Cada forma de informação pode ter um tratamento melhor em um sistema de back-end diferente, e cada sistema deve ser especializado em relação a taxa de dados, volume e API preferencial. Nesta seção, listamos e descrevemos categorias comuns de informações encontradas nos cenários de IoT.

Metadados do dispositivo

Metadados contêm informações sobre um dispositivo. A maioria dos metadados é imutável ou raramente muda. Exemplos de campos de metadados incluem:

  • identificador (código), que identifica um dispositivo de maneira exclusiva. O código do dispositivo não pode mudar durante a vida útil de um dispositivo implantado;
  • classe ou tipo;
  • modelo;
  • revisão;
  • data de fabricação;
  • número de série do hardware.

Informações de estado

As informações de estado descrevem o status atual do dispositivo, e não do ambiente. Essas informações podem ser de leitura/gravação. Elas são atualizadas, mas geralmente não com frequência.

Telemetria

Os dados coletados pelo dispositivo são chamados de telemetria. São dados referentes a visão e audição que os dispositivos de IoT oferecem aos aplicativos. Telemetria trata de dados somente leitura sobre o ambiente, geralmente coletados por sensores.

Cada origem de telemetria resulta em um canal. Os dados de telemetria podem ser mantidos como uma variável de estado no dispositivo ou na nuvem.

Cada dispositivo pode enviar apenas um ponto de dados por minuto, mas quando você multiplica esses dados por um grande número de dispositivos, precisa aplicar rapidamente estratégias e padrões de Big Data.

Comandos

Comandos são ações realizadas por um dispositivo. Os comandos geralmente têm características que restringem as opções disponíveis na implementação. Essas características incluem as seguintes:

  • Os comandos não são facilmente representados como dados de estado.

  • Os comandos geralmente não são idempotentes, ou seja, cada mensagem duplicada normalmente gera um resultado diferente. A implementação de uma função de comando, assim como nos sistemas de mensagens, determina a semântica de entrega, como "pelo menos uma vez" ou "exatamente uma vez". O mecanismo do comando pode incluir um valor de retorno ou confiar na confirmação feita por meio de uma mensagem de retorno separada ou refletir a alteração esperada nos dados de estado.

  • Como os comandos têm uma relevância temporal limitada, eles incluem um valor "time to live" (TTL) ou outro valor de expiração.

Exemplos de comandos:

  • girar 360 graus à direita
  • executar ciclo de autolimpeza
  • aumentar a taxa em 10%

Informações operacionais

Informações operacionais são dados mais relevantes para a operação do dispositivo, e não para o aplicativo de negócios. Esses dados podem incluir coisas como temperatura de operação da CPU e estado da bateria. Esse tipo de dados pode não ter um valor analítico de longo prazo, mas tem valor de curto prazo para ajudar a manter o estado operacional, como responder a quebras e corrigir a degradação do desempenho do software após atualizações.

As informações operacionais podem ser transmitidas como dados de estado ou telemetria.

Dispositivos

Nem sempre é claro o que constitui um dispositivo. Muitas coisas físicas são modulares, o que significa que pode ser difícil decidir se a máquina inteira é o dispositivo ou se cada módulo é um dispositivo separado. Não há uma única resposta certa para essa questão. Ao desenvolver o projeto de IoT, você precisará pensar nos vários níveis de abstração do design e tomar decisões sobre como representar as coisas físicas e as relações entre elas. Os requisitos específicos do aplicativo ajudarão você a entender se algo que gera informações deve ser tratado como um dispositivo e, portanto, receber código próprio, ou se é apenas um canal ou detalhe de estado de outro dispositivo.

Por exemplo, considere um projeto que tenha como meta monitorar a temperatura dos quartos de um hotel. Cada quarto pode ter três sensores: um no chão perto da porta, um no teto e um ao lado da cama. Você pode modelar essa configuração representando cada sensor como um dispositivo:

{deviceID: "dh28dslkja", "location": "floor", "room": 128, "temp": 22 }
{deviceID: "8d3kiuhs8a", "location": "ceiling", "room": 128, "temp": 24 }
{deviceID: "kd8s8hh3o", "location": "bedside", "room": 128, "temp": 23 }

Você também pode modelar todo o quarto como um dispositivo. Normalmente você não consideraria um quarto como sendo um dispositivo, porém, na IoT, a abstração de dispositivo trata do que você realmente administra e grava como uma unidade. Isso nem sempre se limita a um único aparelho que se tenha em mãos. Vendo dessa maneira, você poderia modelar o quarto do hotel como um dispositivo que contém três sensores:

{deviceID: "dh28dslkja", "room": 128, "temp_floor": 22, "temp_ceiling": 24, "temp_bedside": 23, "average_temp":  23 }

Dependendo das metas, uma dessas duas representações de dados pode ser mais correta que a outra. Observe o campo de temperatura média no segundo exemplo. Isso pode ser o que o hotel procura. Os metadados de cada sensor têm mais valor individualmente ou os fragmentos separados de metadados fazem mais sentido se aplicados em conjunto ao quarto? E se o quarto fosse uma suíte e os três locais fossem banheiro, sala e quarto? Esses são os tipos de perguntas que você precisa se fazer ao decidir como modelar os dados. O modelo de domínio do aplicativo conectado define o limite exato do que constitui o dispositivo.

Hardware do dispositivo

Considerações gerais ao escolher o hardware

Ao escolher o hardware, considere os seguintes fatores, que dependem de como o hardware é implantado:

  • Custo. De acordo com o valor dos dados fornecidos, pense no custo viável de cada dispositivo.
  • Papéis de E/S. O dispositivo pode ser essencialmente um sensor, um atuador ou uma combinação dos dois papéis.
  • Orçamento de energia. O dispositivo pode ter acesso à eletricidade ou a alimentação pode ser insuficiente. Avalie se o dispositivo exigirá bateria ou energia solar.
  • Ambiente de rede. Verifique se o dispositivo pode ser conectado à Internet diretamente como TCP/IP roteável. Alguns tipos de conexões, como celular, podem ser caras com tráfego intenso. Avalie a confiabilidade da rede e o impacto dessa confiabilidade na latência e na capacidade. No caso de conexão sem fio, considere o alcance que a potência de transmissão alcança e os custos extras de energia.

Entradas e saídas funcionais

Os dispositivos usados para interagir com o mundo físico contêm componentes ou estão conectados a periféricos que permitem a entrada do sensor ou a saída do atuador. O hardware específico que você escolhe para esses componentes de E/S de hardware deve ser baseado nos requisitos funcionais. Se a meta for detecção de gases, como monóxido de carbono, o tipo de gás que o sensor pode detectar com precisão será relevante. Por exemplo, a sensibilidade ou complexidade do movimento que é preciso detectar determinará a escolha do tipo de acelerômetro, ou se é preciso um giroscópio. Ao usar um dispositivo para produzir saída, você precisa considerar requisitos como a intensidade de um sinal sonoro, a rapidez de giro do motor necessária ou quantos ampères um relé precisa transportar.

Além dos requisitos determinados pelo desempenho ambiental, a escolha desses componentes ou periféricos de E/S também pode estar relacionada ao tipo de informações associadas a eles. Por exemplo, um motor de passo pode ser definido para uma direção específica, que pode ser representada nos dados de estado do dispositivo, enquanto um microfone pode ficar constantemente fazendo amostragem de dados em termos de frequências, o que é melhor transmitido na forma de telemetria. Esses componentes são conectados aos sistemas lógicos do dispositivo por uma interface de hardware.

Plataformas de dispositivo

Há uma diversidade incrível do hardware específico disponível para criar aplicativos de IoT. Essa diversidade começa com as opções de plataformas de hardware. Entre os exemplos comuns de plataformas, estão os computadores de placa única, como o Beaglebone e o Raspberry Pi, além das plataformas de microcontroladores, como a série Arduino, as placas da Particle e a Adafruit Feather.

Cada uma dessas plataformas permite conectar vários tipos de módulos de sensor e atuador por uma interface de hardware.

Essas plataformas interagem com os módulos usando uma abordagem em camadas semelhante às usadas na computação de uso geral. Observando o mouse comum de computador, considere as camadas de periférico, interface, driver e aplicativo, conforme ilustrado no diagrama a seguir.

Gráfico colorido que compara os componentes de computador e IoT.

Em um sistema operacional típico, como Linux ou Windows, a entrada de hardware é interpretada por um driver, que, por sua vez, depende de serviços do SO e pode ser parte do kernel. Para simplificar, o diagrama a seguir omite o sistema operacional.

Interfaces de hardware

A maioria das interfaces de hardware são interfaces seriais. As interfaces seriais geralmente usam vários fios para controlar o fluxo e a temporização das informações binárias ao longo do fio de dados principal. Cada tipo de interface de hardware define um método de comunicação entre um periférico e o processador central.

As plataformas de hardware de IoT usam várias interfaces comuns. Os módulos de sensor e atuador podem aceitar uma ou mais dessas interfaces:

  • USB. O Universal Serial Bus tem sido comumente usado em uma ampla gama de dispositivos habilitados para plug-and-play.
  • GPIO. Os pinos do tipo General-purpose input/output são conectados diretamente ao processador. Eles são fornecidos pelo fabricante para ativar cenários de uso personalizados não previstos no design do fabricante. Os pinos GPIO podem servir para transportar sinais digitais ou analógicos, e os pinos digitais têm apenas dois estados: ALTO ou BAIXO.

    O GPIO digital aceita modulação por largura de pulso (PWM, na sigla em inglês). A PWM permite ligar e desligar uma fonte de alimentação muito rapidamente, sendo que cada fase "ligar" é um pulso de duração específica, ou largura. O efeito no dispositivo pode ser um nível de potência mais baixo ou mais alto. Por exemplo, é possível usar a PWM para alterar o brilho de um LED: quanto mais amplos os pulsos "ligar", mais intenso o brilho do LED.

    Os pinos analógicos podem ter acesso a um circuito integrado de conversão analógico-digital (ADC, na sigla em inglês). Um ADC faz amostras periodicamente de uma forma de onda analógica e contínua, como um sinal de áudio analógico, concedendo a cada amostra um valor digital entre zero e um, em relação à tensão do sistema.

    Quando você lê o valor de um pino digital de E/S no código, ele precisa ser ALTO ou BAIXO, sendo que um pino de entrada analógico pode ser de qualquer valor em um intervalo, em qualquer momento. O intervalo depende da resolução do ADC. Por exemplo, um ADC de 8 bits pode produzir valores digitais de 0 a 255, e um de 10 pode alcançar um intervalo maior, de 0 a 1024. Mais valores significa maior resolução e, portanto, uma representação digital mais fiel de qualquer sinal analógico.

    A taxa de amostragem do ADC determina o intervalo de frequência que um ADC pode reproduzir. Uma taxa de amostragem maior resulta em maior frequência máxima nos dados digitais. Por exemplo, um sinal de áudio de amostragem a 44.100 Hz produz um arquivo de áudio digital com uma resposta de frequência de até 22.050 Hz, ignorando-se a filtragem típica e outros processamentos. A precisão de bit determina a resolução da amplitude do sinal.

  • I2C. O barramento serial Inter-Integrated Circuit usa um protocolo que permite atribuir um endereço separado no barramento a vários módulos. I2C às vezes é pronunciado como "I dois C", "I-I-C" ou "I ao quadrado C".

  • SPI. Os dispositivos com barramento Serial Peripheral Interface empregam uma arquitetura mestre-escravo, com um único mestre e comunicação full-duplex. O SPI especifica quatro sinais lógicos:

    • SCLK: relógio serial, proveniente do mestre
    • MOSI: Master Output Slave Input, isto é, saída do mestre
    • MISO: Master Input Slave Output, isto é, saída de um escravo
    • SS: Slave Select, isto é, uma saída de sinal ativo baixo do mestre
  • UART. Os dispositivos com padrão Universal Asynchronous Receiver/Transmitter (UART, na sigla em inglês) convertem dados seriais em paralelos e vice-versa no ponto em que os dados são usados pelo processador. O UART é necessário quando é preciso dispor os dados seriais na memória de maneira paralela.

Abstração de hardware no software

Um sistema operacional abstrai recursos de computação comuns, como E/S de arquivos e memória. O SO também oferece compatibilidade de nível muito baixo com as diferentes interfaces de hardware. Geralmente, essas abstrações não são fáceis de usar diretamente e, muitas vezes, o SO não fornece abstrações para a ampla gama de módulos de sensores e atuadores que você pode encontrar quando cria soluções de IoT.

Você pode aproveitar as bibliotecas que abstraem interfaces de hardware das plataformas. Essas bibliotecas permitem que você trabalhe com um dispositivo, como um detector de movimento, de modo mais direto. O uso de uma biblioteca permite concentrar-se na coleta das informações que o módulo fornece ao aplicativo, em vez dos detalhes de nível baixo do trabalho direto com o hardware.

Algumas bibliotecas fornecem abstrações que representam periféricos na forma de drivers leves sobre as interfaces de hardware. Entre os exemplos dessas bibliotecas estão o framework de JavaScript Johnny-Five, o MRAA, que é compatível com várias linguagens, a biblioteca EMBD do Go, o Firmata e o Arduino-wiring.

Ambiente de computação

O ambiente de computação da plataforma executa o software. As capacidades do processador variam conforme as restrições de hardware e custo. Alguns ambientes de computação consistem em um System On a Chip (SOC) completo, que aceita um sistema operacional Linux incorporado. Os dispositivos baseados em microcontroladores podem ser mais restritos e o código do aplicativo pode ser executado diretamente no processador sem o suporte de um sistema operacional.

Esses ambientes de computação são a ponte entre a lógica do código do aplicativo e o hardware físico da plataforma. O software que eles executam pode ser totalmente carregado durante a inicialização a partir da memória somente leitura (ROM, na sigla em inglês). Alternativamente, o ambiente pode resultar de um processo de inicialização preparado. Esse processo carrega um pequeno programa denominado carregador de inicialização da ROM que, por sua vez, carrega um sistema operacional completo a partir do flash integrado ou de um cartão SD conectado.

Processamento no dispositivo

Depois que os dados são coletados de um sensor, o dispositivo pode fornecer funcionalidades de processamento de dados antes de enviar os dados para a nuvem. Vários dispositivos podem processar os dados antes que cheguem à nuvem, e cada um deles pode executar parte do processamento.

No diagrama a seguir, ilustramos as tarefas de processamento.

Fluxo de trabalho de processamento de dados: conversão, empacotamento, validação, classificação, aprimoramento, resumo e combinação de dados.

O processamento inclui:

  • conversão de dados em outro formato;
  • empacotamento de dados de maneira segura e que combine os dados em um lote prático;
  • validação de dados para garantir que atendam a um conjunto de regras;
  • classificação de dados para criar uma sequência preferencial;
  • aprimoramento de dados para decorar o valor central com informações adicionais relacionadas;
  • resumo de dados para reduzir o volume e eliminar detalhes desnecessários ou indesejados;
  • combinação de dados em valores agregados.

A análise no dispositivo pode combinar várias tarefas de processamento para fornecer uma interpretação intermediária e sucinta que permite a transmissão de mais informações em uma pegada de dados menor.

Gerenciamento de dispositivos

O gerenciamento de dispositivos é semelhante a outro gerenciamento de recursos de TI: as principais preocupações são aprovisionamento, operação e atualização dos dispositivos. Essas preocupações se aplicam a todos os dispositivos, incluindo gateways.

Provisionamento

Provisionamento é o processo de configurar um novo dispositivo e deixá-lo pronto para uso. O provisionamento inclui:

  • Bootstrap com informações básicas do dispositivo. No mínimo, um dispositivo precisa de um código e metadados básicos.
  • Credenciais e autenticação obrigatórias para comunicações seguras. Por exemplo, o dispositivo é fornecido com um token ou chave usados para comunicações contínuas. Essas credenciais têm um tempo de expiração.
  • Autorização do dispositivo. A autorização estabelece as permissões do dispositivo para interagir com o aplicativo ou outros serviços, dependendo das credenciais de autenticação acima. Autorização é a permissão específica do código do dispositivo e da respectiva credencial para uso de um recurso específico.
  • Configuração da conexão de rede. Um dispositivo precisa de uma conexão de rede para poder se comunicar com outros serviços e transmitir dados.
  • Registro do dispositivo. Os aplicativos precisam saber quais dispositivos estão disponíveis. Um registro de dispositivo monitora os que estão em uso, gerencia a autenticação da nuvem e associa dispositivos a dados e recursos específicos, como tópicos de telemetria e armazenamento de estados.

Operações

A operação diária de um sistema de IoT exige que você colete as informações certas sobre o que está acontecendo. De modo semelhante a qualquer implantação de hardware de TI, o registro de vários eventos e o monitoramento de métricas de status de chave por meio de painéis e mecanismos de alerta podem ajudar você a manter as coisas funcionando sem nenhum problema. O Google Cloud oferece recursos que você pode usar para suas operações diárias:

  • O Cloud Logging coleta e armazena registros. Os principais eventos do ciclo de vida do dispositivo são registrados para auditoria. Um subconjunto de eventos de telemetria pode ser redirecionado para o Logging para análise e geração de relatórios. O uso do Logging economiza muito tempo e esforço em comparação com a criação de uma solução personalizada de geração de registros.

Atualizações Over the Air (OTA)

A escala completa de uma implantação típica de IoT significa que a atualização de dispositivos individuais no local não é prática. Como os dispositivos já têm algum tipo de conexão de rede por design, a atualização dos dispositivos pode ser simplificada, enviando atualizações por push a toda a rede. No linguajar de telefonia celular, trata-se de uma atualização Over the Air (OTA), a mesma ideia da IoT. Veja algumas opções:

Gateway

Um gateway gerencia o tráfego entre redes que usam protocolos diferentes. Um gateway é responsável pela tradução de protocolos e outras tarefas de interoperabilidade. Um dispositivo de gateway IoT às vezes é empregado para fornecer a conexão e a tradução entre os dispositivos e a nuvem. Como alguns dispositivos não contêm a pilha de rede necessária para a conectividade com a Internet, um dispositivo de gateway funciona como um proxy, recebendo dados de dispositivos e empacotando-os para transmissão por TCP/IP.

Um dispositivo de gateway dedicado pode ser um requisito quando os dispositivos na implantação:

  • não têm conectividade roteável com a Internet (por exemplo, dispositivos Bluetooth);
  • não têm a capacidade de processamento necessária para Transport Layer Security (TLS) e, como tal, não pode se comunicar com as APIs do Google;
  • não têm energia elétrica para executar a transmissão de rede necessária.

É possível usar um dispositivo de gateway mesmo quando os dispositivos participantes prescindem dele para se comunicar. Nesse cenário, o gateway agrega valor porque fornece o processamento dos dados em vários dispositivos antes de os enviar para a nuvem. Nesse caso, as entradas diretas seriam outros dispositivos, e não sensores individuais. Algumas tarefas provavelmente seriam relegadas a um dispositivo de gateway, como:

  • condensação de dados para maximizar a quantidade que pode ser enviada para a nuvem por um único link;
  • armazenamento de dados em um banco de dados local, seguido de reencaminhamento dos mesmos quando a conexão à nuvem é intermitente;
  • disponibilização de um relógio em tempo real, com uma bateria de reserva, usado para fornecer um carimbo de data/hora consistente para dispositivos que não conseguem gerenciar bem esses carimbos ou mantê-los bem sincronizados;
  • realização da tradução de IPV6 para IPV4;
  • ingestão e upload de outros dados baseados em arquivos planos da rede local relevantes e associados aos dados de IoT;
  • funcionamento como um cache local para atualizações de firmware.

Google Cloud

Quando o projeto de IoT estiver funcionando, muitos dispositivos estarão produzindo diversos dados. Você precisa de uma maneira eficiente, escalável e acessível para gerenciar esses dispositivos e lidar com todas essas informações para que elas funcionem a seu favor. Quando se trata de armazenar, processar e analisar dados, principalmente Big Data, é difícil superar a nuvem.

O diagrama a seguir mostra os vários estágios do gerenciamento de dados de IoT no Google Cloud.

Construir e treinar modelos de ML na nuvem.

Gerenciamento de dispositivos

Gerenciador de dispositivos do IoT Core

O IoT Core é um serviço totalmente gerenciado para administrar dispositivos. Isso inclui registro, autenticação e autorização dentro da hierarquia de recursos do Google Cloud, além de metadados de dispositivos armazenados na nuvem. Ele inclui ainda a capacidade de enviar a configuração do dispositivo do serviço para os dispositivos.

Processamento

Processamento é o processo de importação de informações de dispositivos para os serviços do Google Cloud. O Google Cloud fornece diferentes serviços de processamento, dependendo se os dados são informações de telemetria ou operacionais sobre os dispositivos e a infraestrutura de IoT.

MQTT do IoT Core

No IoT Core, há um agente de Transporte telemétrico de mensagens em fila (MQTT, na sigla em inglês) seguro para dispositivos gerenciados pelo IoT Core. Esse padrão eficiente do setor binário permite aos dispositivos restritos enviar telemetria em tempo real e receber imediatamente mensagens enviadas da nuvem ao dispositivo por meio do recurso de gerenciamento de configuração. O agente MQTT do IoT Core se conecta diretamente ao Pub/Sub.

Pub/Sub

O Pub/Sub fornece um serviço de ingestão de mensagens durável em todo o mundo. Ao criar tópicos para streams ou canais, é possível ativar diferentes componentes do aplicativo para se inscrever em streams de dados específicos sem a necessidade de construir canais específicos de assinantes em cada dispositivo. O Pub/Sub também se conecta de modo nativo a outros serviços do Google Cloud, ajudando a conectar processamento, pipelines de dados e sistemas de armazenamento.

Ele pode funcionar como um amortecedor de impacto e nivelador de taxa para streams de entrada de dados e para alterações na arquitetura do aplicativo. Muitos dispositivos têm capacidade limitada para armazenar e repetir o envio de dados de telemetria. O Pub/Sub é escalonado para lidar com picos de dados que podem ocorrer quando muitos dispositivos respondem a eventos no mundo físico. Além disso, ele armazena esses picos em buffer para isolá-los dos aplicativos que monitoram os dados.

Cloud Monitoring e Cloud Logging

Conforme mencionado na seção Operações, o Cloud Monitoring e o Cloud Logging podem oferecer vantagens operacionais. As informações operacionais são ingeridas por esses serviços por meio das interfaces correspondentes disponíveis.

Tarefas de processamento de canal

Os pipelines gerenciam os dados depois que eles chegam ao Google Cloud, de modo semelhante ao gerenciamento de peças em uma linha de produção. Veja algumas das tarefas inclusas:

  • Transformação de dados. É possível converter os dados em outro formato, por exemplo, convertendo a tensão de sinal capturada de um dispositivo em uma unidade de medida de temperatura calibrada.
  • Agregação de dados e computação. Ao combinar dados, você pode adicionar verificações, como a média de dados em vários dispositivos, para evitar atuar em relação a um único dispositivo ilegítimo. Você pode assegurar-se de ter dados úteis quando um único dispositivo fica off-line. Ao adicionar computação ao canal, você pode aplicar a análise de streaming aos dados enquanto ainda estão no canal de processamento.
  • Enriquecimento de dados. É possível combinar as informações geradas pelo dispositivo com outros metadados sobre o dispositivo ou com outros conjuntos de dados, como dados meteorológicos ou de tráfego, para uso em análises posteriores.
  • Transferência de dados. É possível armazenar os dados processados em um ou mais locais de armazenamento finais.

Dataflow

O Dataflow fornece o modelo de programação aberto do Apache Beam como um serviço gerenciado para processar dados de várias maneiras, incluindo operações em lote, padrões de extração-transformação-carregamento (ETL) e computação de streaming. Ele pode ser particularmente útil para gerenciar os pipelines com alto volume de processamento de dados exigidos em cenários de IoT. Além disso, é projetado para se integrar perfeitamente aos outros serviços do Google Cloud escolhidos para seu pipeline.

Armazenamento de dados

Os dados do mundo físico têm várias formas e tamanhos. O Google Cloud oferece uma variedade de soluções de armazenamento, de blobs de dados não estruturados, como streams de vídeo ou imagens, armazenamento de entidade estruturada de dispositivos ou transações, além de bancos de dados de chave-valor de alto desempenho para eventos e dados de telemetria.

Estado de armazenamento no IoT Core

Alguns estados do dispositivo estão diretamente conectados ao hardware. Por exemplo, quando você verifica o estado de um pino GPIO digital, ele consta como ALTO ou BAIXO, com base na leitura física da tensão no pino.

Outro estado do dispositivo pode existir na camada do aplicativo. Por exemplo, recording-audio pode ter uma condição de estado true ou false, em relação ao fato da amostragem do aplicativo vir de um microfone ou de uma gravação em disco. No nível de hardware, o próprio microfone pode ficar ligado.

Do ponto de vista do software, o código do aplicativo em execução no dispositivo mantém a fonte da verdade. Muitas vezes é relevante e até mesmo exigido que outro software leia o último estado conhecido do dispositivo. Como os dispositivos de IoT passam algum tempo no modo de suspensão de baixa potência e existem em redes particularmente não confiáveis, muitas vezes é útil armazenar algum estado do dispositivo na nuvem. Dessa forma, os dados do estado podem ser disponibilizados mesmo quando os dispositivos estão temporariamente off-line.

O último estado conhecido do dispositivo é relatado e armazenado no IoT Core para ser recuperado pelos aplicativos. As informações de estado enviadas para o MQTT ou HTTP são persistentes no IoT Core e estão disponíveis na nuvem, mesmo que o dispositivo tenha sido desconectado ou desligado.

Como armazenar dados do aplicativo no Datastore e no Firebase

Quando é necessário disponibilizar dados de estado ou de telemetria a aplicativos de dispositivos móveis ou da Web, é possível armazenar os dados processados ou brutos em bancos de dados estruturados, mas sem esquema, como o Datastore e o Firebase Realtime Database, em que você pode representar dados de dispositivos de IoT, como objetos em nível de domínio ou de aplicativo.

Processamento de regras e análise de streaming no Cloud Functions e no Dataflow

Os eventos e dados de IoT podem ser enviados para a nuvem a uma taxa alta e precisam ser processados rapidamente. Para muitos aplicativos de IoT, a decisão de colocar o dispositivo no ambiente físico é tomada para fornecer acesso mais rápido aos dados. Por exemplo, o produto exposto a altas temperaturas durante o transporte pode ser sinalizado e descartado imediatamente.

Ser capaz de processar e agir em relação a essa informação rapidamente é essencial. O Cloud Functions permite que você grave uma lógica personalizada que possa ser aplicada a cada evento assim que ele é recebido. Isso pode ser usado para acionar alertas, filtrar dados inválidos ou invocar outras APIs. O Cloud Functions pode operar em cada evento publicado individualmente.

Se for preciso processar dados e eventos com análise mais avançada, incluindo técnicas de gestão de janelas de tempo ou convergência de dados de vários streams, o Dataflow fornece uma ferramenta de análise de alta capacidade que pode ser aplicada a dados de streaming e em lote.

Analytics

A realização de análises em dados obtidos por meio de fontes do IoT é muitas vezes o propósito de instrumentar o mundo físico. Após a análise dos dados de streaming em um canal de processamento, eles começarão a se acumular. Com o tempo, esses dados fornecem uma rica fonte de informações para a observação de tendências e podem ser combinados com outros dados, incluindo os de origens externas aos dispositivos de IoT.

BigQuery e Datalab

O BigQuery fornece um armazenamento de dados totalmente gerenciado com uma interface SQL familiar, para que você possa armazenar seus dados de IoT junto com qualquer outra análise e registros corporativos. O desempenho e o custo do BigQuery significam a manutenção de dados valiosos por mais tempo, em vez de excluí-los apenas para economizar espaço em disco.

O Datalab é uma ferramenta interativa de exploração, análise e visualização de dados em grande escala. Os dados de IoT podem acabar sendo úteis para vários casos de uso, dependendo dos outros dados com que são combinados. O Datalab permite explorar, transformar, analisar e visualizar interativamente os dados usando um ambiente de workbench de dados on-line, hospedado no projeto Jupyter, de código aberto.

Machine learning

Os dados do IoT em geral são, por natureza, multidimensionais e ruidosos. Esses atributos dificultam a extração de informações usando técnicas analíticas convencionais. No entanto, muitas vezes, é nessa nuance e complexidade que a rede neural profunda se destaca. O TensorFlow é um framework líder em machine learning de código aberto que, no Google Cloud, pode ser aplicado a um serviço de treinamento distribuído e gerenciado por meio do AI Platform.

Painéis de série temporal com o Cloud Bigtable

Certos tipos de dados precisam ser rapidamente divisíveis de acordo com índices e dimensões conhecidos para atualizar visualizações básicas e interfaces de usuário. O Cloud Bigtable fornece um banco de dados de baixa latência e alta capacidade para dados NoSQL. O Cloud Bigtable oferece um lugar adequado para onde direcionar visualizações e consultas muito usadas, em que as perguntas já são bem compreendidas e você precisa absorver ou veicular em volumes elevados.

Em comparação com o BigQuery, o Cloud Bigtable funciona melhor para consultas que atuam em linhas ou grupos de linhas consecutivas, porque o Cloud Bigtable armazena dados usando um formato baseado em linha. Comparado ao Cloud Bigtable, o BigQuery é uma escolha melhor para consultas que exijam agregação de dados.

Archival Storage no Cloud Storage Nearline

O acúmulo de dados do mundo nunca para e os dados nem sempre podem ser estruturados. O Cloud Storage inclui uma API única para armazenamento de objetos de uso atual e arquivamento de dados pouco utilizados. Quando o dispositivo de IoT captura dados de mídia, o Cloud Storage armazena quantidades praticamente ilimitadas de maneira durável e econômica.

Conclusão e próximas etapas

A criação de soluções da Internet das Coisas envolve a resolução de desafios em muitos domínios. O Google Cloud oferece gerenciamento de dispositivos, escalonamento de infraestrutura, rede e uma variedade de produtos de armazenamento e análise que você pode usar para aproveitar ao máximo os dados gerados pelo dispositivo.