Desenvolvimento de uma API de Comunicação Coletiva para Dispositivos em Aplicações IoT usando Computação Paralela e Fog Computing
Palavras-chave:
API, IoT, Conexão, SoftwareResumo
O projeto consiste no estudo e na aplicação dos conceitos de Computação Paralela e Fog Computing para criação de uma Application Programming Interface (API) que realize a comunicação entre dispositivos em sistemas Internet of Things (IoT). Desse modo, a ideia inicial foi de simular uma aplicação para automatizar alguns processos, como gerenciar diversos aparelhos em um ambiente a partir de um servidor mestre. Diante disso, uma bateria de testes foi realizada com diferentes métodos de conexão como transmissão via Transmission Control Protocol (TCP) e User Datagram Protocol (UDP), executado em diferentes topologias de rede por exemplo: em anel, linha, estrela e malha, sempre aplicando o paralelismo, a fim de fornecer uma API mais eficiente, além de usar conceitos de computação em nuvem para armazenar o estado da aplicação e fog computing, pois a maioria dos equipamentos gerenciados têm padrões de funcionamento diferentes, como exemplo: projetores, ar-condicionado e computadores, tornando um ambiente heterogêneo. Nesse sentido, os principais objetivos estabelecidos foram os de realizar uma conexão eficaz e assíncrona entre os servidores e microcontroladores, que serão responsáveis por monitorar os aparelhos, para ser resistente a falha de conexão, como perda de sinal, além de estabelecer uma conexão síncrona entre os próprios servidores, para criação de uma rede conectada, possibilitando a troca de informação entre todos os microcontroladores conectados entre si, assim possibilitando o mapeamento de uma grande quantidade de equipamentos em grandes distâncias. Nesse sentido, para alcançar esses objetivos foram utilizadas ferramentas de programação como: Threads para paralelizar e tornar a API capaz de suportar um número grande de conexões ao mesmo tempo e para estabelecer a conexão entre servidor e microcontrolador. O padrão publisher/subscriber foi utilizado com o protocolo Message Queuing Telemetry Transport (MQTT), possibilitando a realização de conexões assíncronas, que se encaixa diretamente com dispositivos IoT, por conseguinte a isso, foi utilizado a tecnologia de Sockets com pacotes TCP, para garantir uma comunicação síncrona, concisa e segura entre os servidores, por final todas as operações realizadas são enviadas para um servidor em nuvem, em que persiste todos os dados transmitidos. O serviço em nuvem estabelece uma comunicação com os servidores por meio da biblioteca em JavaScript chamada Socket.io. Portanto, o resultado obtido foi a criação de uma API para comunicação coletiva, onde um servidor pode se comunicar e gerenciar dispositivos IoT por meio de microcontroladores, comunicar-se com outros servidores, sendo possível trocar informações entre si e até mesmo controlar os dispositivos desse outro, com a comunicação e persistência dos dados sendo armazenadas em nuvem. Além disso, para testes em ambiente simulado, uma interface foi desenvolvida (em Java com JavaFx) para validar o funcionamento da API e da interação com o serviço em nuvem. Com isso, os resultados obtidos contemplam os objetivos apresentados, podendo expandir para outro passo, que seria a realização de testes em cenários reais e a realização de testes de usabilidade para aperfeiçoar a interface com o sistema.