SmartComm - Automação Inteligente

Participantes:

Giovanni Rotta
Lenoir Zamboni

Resumo do projeto:

Middleware de comunicação entre dispositivos em um ambiente IoT. O projeto proposto permite a integração de dispositivos IoT e fornece API aos diferentes serviços do sistema. Podendo ser facilmente embutido em sistemas de automação.

Descrição do projeto:

O aumento do número de dispositivos adotando o conceito de Internet of Things, ou IoT, está em pleno crescimento. O tema é tido como revolucionário, assim como foi a internet, com a expectativa de trazer inúmeras oportunidades. O crescimento da IoT pode trazer grandes benefícios a algumas áreas correlacionadas, como vanets, smart cities, smart buildings, indústria 4.0 e agroindústria. Este fato nos permite dizer que já existem diversos dispositivos cooperando para a criação de serviços e facilidades para os usuários, seja dentro de carros, casas, fábricas e cidades.

Se, por um lado, esta grande quantidade de dispositivos traz diversos benefícios para os usuários, por outro, essa heterogeneidade de dispositivos acarreta em um grande problema de interoperabilidade. Além disso, existem muitos outros problemas relacionados aos métodos de comunicação entre os dispositivos, segurança no acesso à informação, armazenamento e em como utilizar o dado coletado. Existem muitas pesquisas que visam a resolução de diversos desses problemas, a questão de como os dispositivos de diferentes fabricantes trocam informações, porém, ainda é pouco explorada. Este documento propõe uma solução para esta questão através do middleware Smart Comm que oferece um meio pelo qual os diferentes dispositivos de um ambiente IoT (smart buildings, indústria 4.0 e agroindústria tech) poderão trocar informações, armazená-las e processá-las da maneira que lhe for conveniente.

O objetivo deste projeto é desenvolver um protótipo do Smart Comm utilizando a placa de desenvolvimento Dragonboard 410C. Este middleware será responsável por enviar e receber comandos dos objetos IoT. Os protocolos de comunicação podem variar entre os diferentes objetos IoT utilizados no cenário da aplicação. A comunicação ocorre utilizando o paradigma de microsserviços, o que facilita a inserção de novos dispositivos e novos serviços dentro da rede, sempre que necessário, sem afetar os dispositivos e serviços previamente existentes. Como cada dispositivo possui seu próprio micro serviço ou um conjunto deles, não existe uma restrição de modelo ou tipo para interagir com o gateway.

A arquitetura do sistema proposto foi planejada para atuar com 4 (quatro) diferentes grupos de componentes: Gateway Principal, Gateway secundários, Objetos IoT e dispositivo de controle. Cada qual, explicado com detalhe neste capítulo.

Gateway principalSua principal função é rotear as requisições externas (internet) e internas para os gateways adequados, assim como, também coletar as informações destes e enviá-las para nuvem. As requisições geralmente são compostas por um comando responsável por realizar alguma função dentro do ambiente IoT, como acender uma lâmpada, irrigar uma plantação ou parar uma esteira industrial. A comunicação do servidor com os gateways será feita através de requisições HTTP, no modelo cliente/servidor. O gateway central pode ou não fazer o papel de um gateway secundário, porém, por ser um dispositivo muito requisitado na rede, é recomendável que sua principal atividade seja as funções de um servidor central.

Gateway secundário São os atores principais dessa rede. A proposta é possuir uma quantidade de gateways que atendam a todos os objetos e sensores do ambiente e não se sobrecarregue. Um layout sugerido seria uma placa de desenvolvimento (Single Board Computer) por cômodo, onde cada placa é responsável por possuir uma tabela de dispositivos IoT conectados a sua rede mesh de internet das coisas, utilizando protocolos específicos para esta rede de baixo consumo energético. Esses dispositivos, assim como os sensores acoplados na placa (a fim de obter informações físicas do ambiente em que a placa está inserida para o conceito de context-aware), serão comandados (ativados/desativados ou informação recolhida) através de micro serviços hospedados na placa. Os serviços enviam mensagens para os objetos (via protocolo IoT) ou simplesmente recolhem informações dos sensores através do GPIO (General Purpose Input/Output – portas programáveis de entrada e saída de dados) da placa ou em sensores remotos e enviam a informação para o gateway principal. Os gateways podem possuir diversas funcionalidades, sendo alguns exemplos, media center, comandos de voz e fornecimento de conectividade Wi-Fi a dispositivos do ambiente.

Dispositivos de controle O dispositivo de controle é responsável por mostrar ao usuários do sistema as opções de controle do sistema, assim como interagir com as mesmas. As opções de controle são determinadas pelos objetos inteligentes dentro do ambiente e  também pelo conjunto de sensores por cômodo. Os dispositivos irão se comunicar com o ambiente através da internet em um modelo cliente/servidor com o gateway principal, ou então diretamente na rede local com as placas de desenvolvimento. Esta segunda comunicação será feita através do protocolo UDP, criando um canal de comunicação com o intuito de aumentar a percepção de tempo real ao usuário, intensificando a velocidade de transmissão entre o dispositivo de controle e o objeto a ser controlado.

Objetos IoTPodem ser tratados como atuadores e sensores em um sistema de controle. Eles possuem uma peculiaridade que é a moderada capacidade computacional e necessitam de baixo consumo energético.

Figura 1. Composição do sistema.

Umas das mais importantes funcionalidades da proposta é a comunicação entre dispositivos. O caminho no qual um comando percorre, do momento em que é chamado pelo usuário até chegar em um objeto IoT pode ser um dos três detalhados a seguir:

  1. Comando a um gateway local para uma ação de um dispositivo de borda conectado ao mesmo gateway. Neste caso o gateway recebe do dispositivo de controle um comando para realizar uma ação em um objeto IoT, o gateway então, retransmite o comando de forma direta.
  2. Comando a um gateway local para uma ação de um dispositivo de borda conectado a outro gateway. Neste caso o gateway recebe do dispositivo de controle um comando para realizar uma ação em um objeto IoT que não consta em sua rede IoT. Desta forma, o gateway envia o comando ao servidor central, mapeia qual é o gateway correspondente, retransmite o comando ao gateway apropriado que, por sua vez, passa o comando ao objeto IoT.
  3. Comando externo para uma ação de um dispositivo de borda. Neste caso o comando vem de uma entidade externa (nuvem). O servidor central recebe a requisição e mapeia o gateway correspondente, retransmitindo o comando a este, que por sua vez, passa o comando ao objeto IoT.

Figura 2. Comunicação entre dispositivos.

Para demonstrar o funcionamento da proposta será desenvolvido um protótipo cuja função é automatizar os cuidados de uma plantação.

Para isso, reproduziremos o ambiente inteligente conforme segue:

  1. A plantação será representada por uma planta em um vaso;
  2. O gateway principal será representado por um computador pessoal Linux;
  3. O gateway secundário por uma Dragonboard 410C;
  4. O dispositivo IoT será uma placa Arduíno;
  5. A comunicação será através de um módulo RF transmissor; e
  6. O dispositivo de controle será representado por um celular Android.

O dispositivo IoT estará munido de um sensor de umidade de solo, de luminosidade e de temperatura. As informações serão transmitidas ao middleware através de uma comunicação RF entre a placa Arduíno e a Dragonboard. Microsserviços em JavaScript estarão encarregados pela lógica da comunicação.

Os dados serão armazenados em um banco de dados no próprio gateway e posteriormente no gateway principal.

O usuário poderá visualizar as informações coletadas pelo sensor em tempo real, através do dispositivo Android. A aplicação Android contará com uma tela de login, onde o usuário realizará a autenticação utilizando nome de usuário e senha.

Histórico do desenvolvimento:

1ª Semana | 15/08/2018 – 21/08/2018

  1. Criação do cronograma do projeto.
    O cronograma criado conta com 60 dias de desenvolvimento, separados por semanas. Utilizou-se um gráfico Gantt para ajudar na visualização e separação de tarefas.
    As tarefas foram separadas de acordo com as etapas e afinidades tecnológicas dos membros do projeto, o tempo estipulado para cada foi determinado em uma reunião inicial do projeto.
  2. Criação de tarefas no trello.
    Aproveitando as tarefas enumeradas no cronograma, foram criadas atividades para os membros no trello (gerenciador de atividades), facilitando no gerenciamento do projeto.
    A estrutura escolhida foi utilizando a metodologia Kanban, com algumas modificações, como a criação colunas de milestone para incentivar o cumprimento do prazo.
  3. Criação dos respositórios.
    Foram criados repositórios de acordo com cada módulo do projeto, facilitando o trabalho em conjunto.
    Diferentes repositórios foram criados para cada modulo do projeto. Os respositórios se encontram no Gitlab.
  4. Início do desenvolvimento.
    Módulo de dados do gateway.
    Tela de Login e POJOS Android.

2ª Semana | 22/08/2018 – 29/08/2018

O projeto segue a todo vapor, sendo o foco inicial no desenvolvimento do software para o middleware, deixando as questões de hardware para um segundo momento. O desenvolvimento do Gateway e do Dispositivo de controle foram os escolhidos o início do planejamento, tanto pela importância quanto pela disponibilidade de se trabalhar em paralelo. Apesar de ainda não terminados, ambos os dispositivos já apresentam bastante conteúdo completos.

  1. Gateway
    O principal dispositivo no sistema, é ele o responsável por transmitir e gerenciar grande parte da comunicação. Existem 4 diferentes módulos dentro dele, módulo de dados, API, socket e microserviços. Destes falta apenas o módulo de socket, que fará a comunicação entre os microserviços e o modulo de dados.
    Já foram criados endereços da API, para que o dispositivo de controle possa utilizar os dados do sistema. Para acessar é necessário fazer login no sistema e utilizar o token recebido para realizar requisições no serviço. Os dados não são verdadeiros e nem gerados em tempo real, ou seja, criados apenas para a realização de testes. As figuras abaixo representam duas requisições diferentes.
  2. Dispositivo de Controle
    Responsável pela interação humano-computador. Mostra informações dos dispositivos do ambiente IoT, como valores capturados pelos sensores. Também emitirá comandos para os objetos, podendo por exemplo acender uma lâmpada. No protótipo, o dispositivo de controle será um aplicativo android comunicando-se diretamente com o sistema. Ele possui 3 telas, login, listagem de gateways e listagem de serviços de um determinado gateway. Abaixo, um vídeo de navegação pelo aplicativo.

Vídeo do dispositivo de controle


Hardware:

Software/Firmware:

Referências: