Usando serviços de nuvem para coletar business intelligence

Azure IoT Hub
Este post faz parte da série Aplicação de IoT com Azure IoT Hub e Toradex Colibri VF61. Leia também os outros posts da série:

Esta é a terceira - e também a última - parte da série de três artigos focada no desenvolvimento de uma aplicação de IoT. Ela foca no uso dos serviços de nuvem providos pelo Azure para a apresentação de resultados e obtenção de business intelligence. O sistema embarcado escolhido para este propósito foi uma solução de SBC customizado da Toradex: o CoM Colibri VF61 + Placa Base Iris. A figura 1 apresenta um diagrama de blocos que resume o objetivo do presente projeto, permitindo ao leitor recordar os tópicos dos dois artigos anteriores.

 

Diagrama em blocos da aplicação para obter business intelligence
Figura 1: Diagrama em blocos da aplicação

 

Caso o leitor deseje obter mais detalhes sobre o projeto em si e o envio de dados para a nuvem, é possível obtê-los nos artigos anteriores da série.

 

Azure é a plataforma de serviços de nuvem da Microsoft e ela fornece um grande número de aplicações como bancos de dados, máquinas virtuais, serviços de app, aprendizado de máquina (machine learning), análise de fluxo de dados, serviços de mídia e CDN, soluções de big data, dentre outros. Os serviços do Azure encontram-se principalmente nas camadas IaaS e PaaS - Infraestrutura como serviço e Plataforma como serviço, respectivamente (um artigo muito completo sobre o assunto pode ser encontrado aqui - em inglês). O Hub IoT foi previamente configurado para receber mensagens de dispositivos, portanto seu uso será transparente daqui para a frente. Outros dois serviços da Microsoft foram escolhidos para os propósitos do presente artigo:

  • Stream Analytics é um serviço do Azure que processa dados quase em tempo real e gera saídas para dashboards, alertas, alimenta bancos de dados, compara fluxo de dados com séries históricas, etc. Alguns dos seus benefícios são a facilidade de uso, já que com poucos cliques é possível configurá-lo; o fato de o processamento de dados ser descrito em uma linguagem baseada em SQL; a escalabilidade que permite configurar uma taxa de transferência de 1MB/s até 1GB/s dependendo das necessidades da aplicação; e o baixo custo, já que não existe o custo de implementação do serviço e o sistema de pagamento contabiliza a quantidade de dados processados;
  • Power BI é um serviço de nuvem da Microsoft focado em análise de dados de negócios à parte do Azure, mas que pode se comunicar tanto com ele quanto com outras fontes de dados. Este serviço compila séries de dados em painéis que mostram ao vivo as informações mais relevantes que um gerente precisa para tomar boas decisões ou obter insights. O fato de os painéis serem atualizados o tempo todo permite a solução de problemas e também a apreensão de oportunidades o mais rápido possível.

 

Agora que os serviços de nuvem empregados neste artigo foram apresentados, a próxima seção terá como foco a configuração destes.

 

 

Configurando Stream Analytics e Power BI

 

Agora que o Hub IoT está recebendo dados, ele pode alimentar o Stream Analytics, primeiro serviço que vamos configurar. No portal do Azure, selecione +Novo > Internet das Coisas > Trabalho do Stream Analytics, conforme ilustrado na figura 2. Então um Nome do trabalho deve ser escolhido e o mesmo Grupo de recursos e Localização usados no Hub IoT devem ser selecionados.

 

Criando um Trabalho do Stream Analytics para business intelligence
Figure 2: Criando um Trabalho do Stream Analytics

 

Depois que o trabalho for implementado, ele pode ser acessado pela página inicial do portal do Azure, e o resultado é descrito na figura 3. A seção Topologia do Trabalho apresenta informações e permite a adição de Entradas, descrição da Consulta e a escolha das Saídas - tópicos que serão abordados separadamente mais à frente. O gráfico de Monitoramento é personalizável e apresenta informações como número de eventos de entrada e de saída, erros de conversão de dados, eventos fora de ordem e outras opções. Há também uma seção de Configurações para ajustes adicionais.

 

Painel principal do trabalho do Stream Analytics para business intelligence
Figura 3: Painel principal do trabalho do Stream Analytics

 

Para configurar o Hub IoT como entrada, deve-se selecionar o campo entradas e então adicionar. A aba Nova entrada será aberta, conforme mostra a figura 4. Qualquer Alias de entrada pode ser selecionado; o Tipo da fonte e Fonte podem ser selecionados como fluxo de dados e Hub IoT respectivamente; os campos IoT Hub, Nome da política de acesso compartilhado e Chave de política de acesso compartilhado devem ser preenchidos com as informações do Hub IoT que foi configurado na parte 1 e demais campos podem ficar com os valores padrão.

 

Configurações de entrada do Stream Analytics
Figura 4: Configurações de entrada do Stream Analytics

 

Antes de configurar o Power BI como saída, uma conta precisa ser criada, já que este não é um serviço do Azure. Isto pode ser feito no site do Power BI e a versão básica é grátis. Após o registro, a tela será redirecionada para a interface inicial do Power BI, mas isso pode ser deixado de lado por enquanto, já que é preciso configurar a saída do Stream Analytics.

 

Como a conexão entre os serviços é uma característica recente, a configuração é feita no Portal de Gerenciamento do Azure. Quando o portal abrir, deve-se selecionar o Trabalho de Stream Analytics a partir da lista de Todos os Itens, depois a aba saídas e, no rodapé da página, adicionar uma saída. Selecione Power BI na janela recém aberta, como ilustrado na figura 5.

 

Seleção de saída para o Stream Analytics
Figura 5: Seleção de saída para o Stream Analytics

 

Quando for requisitado que você autorize a conexão, conforme ilustrado na figura 6, clique em Autorizar Agora. Faça o login na sua conta da Microsoft à qual o Power BI está registrado.

 

Azure-IoT-business- intelligence-06
Figura 6: Autorização do Power BI como uma saída do Stream Analytics

 

Escolha um Alias de saída, um nome do conjunto de dados e um nome da tabela, para usar no Stream Analytics, conforme exemplificado na figura 7. Agora a saída está configurada para mandar dados do Stream Analytics para o Power BI.

 

Configuração de saída do Stream Analytics
Figura 7: Configuração de saída do Stream Analytics

 

 

Query do Stream Analytics: filtrando dados para o Power BI

 

Como o comportamento do Stream Analytics é programado por meio de uma linguagem no estilo SQL, ele pode ser visto como um filtro de dados, no qual a informação vai para a saída somente quando alguma condição é satisfeita. Para ilustrar algumas possibilidades, a consulta - também conhecida como query - implementada neste exemplo realiza duas tarefas distintas: ela agrupa os dados da entrada em uma janela de 10 segundos, com o objetivo de reduzir a quantidade de dados na saída, usando a função tumbling window. Por exemplo, se a placa manda dados a cada 1 segundo para o Hub IoT, a cada 10 dados recebidos, só um será enviado para o Power BI. Mas qual dos 10 dados de entrada será escolhido? Enviar mais pontos não é melhor?

 

Respondendo à primeira pergunta, os dados podem ser agregados usando funções estatísticas como soma, média, desvio padrão, valor máximo e valor mínimo, a saída pode ser o número de ocorrências recebidas ou algum tipo de ordenação. Para mais referências, é possível consultar esta página de referência. Quanto à segunda questão, a vantagem de usar uma janela é que, se a aplicação de saída tem um limite de ingestão de dados, este procedimento permite usar a aplicação reduzindo a quantidade de dados, mas sem detrimento da significância destes. No caso deste projeto só existe uma placa enviando dados, portanto não há esta limitação, mas quando há milhares de dispositivos conectados ou mesmo um pequeno número de dispositivos que envia muitas mensagens, aí sim se evidencia esta vantagem.

 

A segunda tarefa principal da query é identificar comportamento de risco do motorista, ou mesmo um acidente, enviando para a saída somente os dados que satisfazem estas condições - quando o motorista está muito perto do carro da frente, em caso de freadas bruscas ou mesmo capotamento. Estas condições podem ser úteis dependendo de quem está monitorando os dados no Power BI: se o gerente quer saber a relação entre temperatura do veículo e distância do carro da frente, por exemplo, o filtro aqui utilizado não será de grande utilidade, o que leva o desenvolvedor de IoT à questão: o que eu quero na saída?

 

A query deste exemplo é mostrada abaixo. Observe-se que na seção SELECT do código, as funções máximo (max), mínimo (min) e média (avg) foram usadas para agrupar as variáveis na janela, assim como também foram renomeadas algumas variáveis para a saída; também foi escolhida uma variável aleatória para contagem do número de acidentes/situações de risco. Na seção INTO seleciona-se a saída por meio do alias previamente escolhido, assim como na seção FROM, com a diferença de que nesta coloca-se a entrada de dados. A seção GROUP BY define o tempo da janela e as variáveis que não serão agrupadas e a seção WHERE é onde as condições de risco são filtradas. Note-se também que este é um modelo simplificado que poderia ser melhorado com a análise de múltiplas variáveis e outros refinamentos matemáticos.

 

 

Para iniciar, basta acessar o Trabalho do Stream Analytics a partir do portal do Azure e clicar em iniciar. Isto pode demorar alguns segundos.

 

 

Criando um dashboard no Power BI

 

Para criar um painel, ou dashboard, no Power BI é necessário em primeiro lugar certificar-se de que o Stream Analytics, o Hub IoT e o sistema embarcado Toradex estão ligados e funcionando. Depois, ao acessar o Power BI pelo seu navegador, na aba à esquerda da tela haverá um menu chamado Conjuntos de dados, no qual a saída do Stream Analytics aparecerá na forma de um conjunto de dados. Ao selecionar este conjunto, a presente tela será conforme indicado na figura 8.

 

Criando um relatório do Power BI
Figura 8: Criando um relatório do Power BI

 

Agora é possível escolher um tipo de visualização de dados, como, por exemplo, um gráfico de linha ou uma tabela. Neste artigo serão utilizados gráficos de colunas (como há somente um carro, não fará diferença se é emparelhado ou clusterizado) para visualizar as condições de risco/acidente e um medidor para indicar quantas destas situações ocorreram. Além das visualizações padrão, é possível criar modelos customizados ou mesmo fazer download de modelos disponibilizados pela comunidade.

 

Como exemplo, é criado um gráfico de colunas empilhadas e adicionados os valores mytimestamp ao eixo, caridentifier à legenda e distance ao valor, conforme indicado na figura 9.a; também são modificados legenda e título do gráfico, além de feita a adição de uma linha de referência com valor 0,5 para facilitar a visualização de quando o risco é a distância do carro da frente e não capotamento, por exemplo. A adição da linha é exemplificada na figura 9.b e na figura 10 é mostrada a tela com os 3 gráficos de barras e o medidor. Uma vez que depois de fazer o primeiro gráfico os outros são análogos, o procedimento de criá-los será omitido. É preciso salvar o relatório antes de prosseguir.

 

Criando gráfico e adicionando valores

(a)

Criando gráfico e adicionando visuais

(b)

Figura 9: Criando gráfico e adicionando a) valores e b) visuais

 

Relatório do Power BI
Figura 10: Relatório do Power BI

 

Para observar a atualização dos gráficos em tempo real, é preciso adicionar um a um ao painel. Infelizmente ao adicionar o relatório completo é preciso atualizar a página manualmente para que os gráficos sejam atualizados (pelo menos até a elaboração deste artigo). Primeiramente cria-se um novo painel no menu à esquerda da tela, que pode ser visto na figura 8. Depois, deve-se acessar o relatório e, no canto superior direito de cada gráfico, há a opção de Fixar visual cujo item é um alfinete - ao clicar nele é possível adicionar o gráfico ao painel desejado.

 

A figura 11 apresenta um resultado real porém com algumas considerações: no intuito de obter dados de aceleração e gps de um carro real, o IoT Car foi levado para um passeio. Para satisfazer as condições de filtro do Stream Analytics, foi usada a aceleração lateral como aceleração da gravidade, já que ela assume valores negativos periodicamente; a aceleração do carro é a real e a distância quase sempre será menor do que 0,5m dado o posicionamento do carrinho de controle remoto dentro do carro. Uma vez que o sistema não possui conexão 3G ou similar com a internet, um aparelho celular com conexão à internet por 3G foi utilizado como roteador Wi-Fi. O vídeo a seguir mostra os dados sendo atualizados em tempo real, assim como a criação do gráfico de temperatura para propósito de ilustração e geração de um arquivo PDF com um screenshot do dashboard.

 

Dashboard final do Power BI
Figura 11: Dashboard final do Power BI

 

 

E assim acaba a série de artigos sobre como criar uma aplicação de internet das coisas de ponta a ponta. É certo que esta série é somente um ponto de partida para aqueles que desejam se aventurar nesta área, ou um guia introdutório aos que desejam ter uma noção de como funciona, já que há inúmeras possibilidades não exploradas no Azure. Assim como há inúmeros cenários de IoT aos quais o sistema embarcado Toradex pode ser aplicado, além é claro de outras ferramentas preparadas para o desenvolvimento de soluções similares. Aproveito também para agradecer à equipe do Grupo Viceri pela exímia competência no que diz respeito ao Azure e business intelligence e, portanto, pela ajuda nestes quesitos, assim como pela parceria no desenvolvimento do projeto descrito nesta série de artigos. Espero que este artigo tenha sido útil e até o próximo!

Outros artigos da série

<< Interface com sensores e o IoT Car
Este post faz da série Aplicação de IoT com Azure IoT Hub e Toradex Colibri VF61. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Deixe um comentário

avatar
 
  Notificações  
Notificar