• Nenhum resultado encontrado

6.3 Arquitetura para Controle Local de Água

6.3.2 Camada de Middleware

Um fator a ser considerado no projeto de redes de sensores é a heterogeneidade, a natureza distinta ou desigual, dos diversos dispositivos interconectados. Isto remete a um desafio de compor redes interoperáveis que integrem os mais variados dispositivos, tecnologias, propósitos e desempenho sob uma mesma estrutura de rede, além de permitir uma dinâmica flexível para o incremento de novos dispositivos à rede. Sob este contexto são desenvolvidas plataformas de gerenciamento de camada intermediária, nomeadas de

middleware, que fazem a mediação da comunicação entre diversos softwares e dispositivos.

De modo geral, visando atender às necessidades de aplicação, Pires et al. (2015) sugere que uma estrutura básica demiddlweare deve apresentar como requisitos: a) intero- perabilidade; b) descoberta e gerenciamento de dispositivos; c) escalabilidade; d) ciência de contexto; e) gerenciamento de grandes volumes de dados; e, f) segurança.

A interoperabilidade é uma propriedade essencial em redes de sensores sem fio, pois estas integram diversos dispositivos das mais variadas tecnologias de construção, transmissão e dados. Neste quesito a camada de middleware desempenha um papel extremamente importante, pois é nela que se concentram os modelos de desenvolvimento e protocolos que permitem a abstração necessária para a construção de estruturas de sensoriamento mais ágeis.

Outra propriedade essencial em redes de sensores sem fio se reflete na flexibilidade da rede que deve ser construída para permitir a inclusão dinâmica de novos dispositivos sem a necessidade de parada de toda a estrutura, a esta propriedade se dá o nome de descoberta e gerenciamento de dispositivos. Esta propriedade está intimamente ligada à escalabilidade que é a capacidade de assimilar dinamicamente o número crescente de novos dispositivos sem prejuízo da funcionalidade da rede.

A ciência de contexto se refere ao metadados que identifiquem, dentre outras, propriedades de estado, conectividade e localização dos dispositivos.

O gerenciamento de grandes volumes de dados permeia toda a solução de uma rede de sensores sem fio, pois ao passo que uma rede escalável incorpora novos disposi- tivos sensores, estes proverão mais dados que deverão ser devidamente: a) transmitidos; b) armazenados; c) recuperados; e, d) processados.

Não menos importante é a segurança dos dados que pode ser obtida a partir de técnicas de mascaramento e prevenção à corrupção de dados, como a criptografia, que deve manter a: a) integridade, os dados deverão trafegar por toda a estrutura sem sofrer modifi- cação em seu conteúdo; b) privacidade, os dados deverão ser transmitidos e armazenados para que não sejam legíveis por meios não autorizados; c) disponibilidade, o acesso ao dado deverá estar disponível sempre que solicitado por quem for devidamente autorizado; e, d) confiabilidade, os dados devem representar exatamente aquilo que inicialmente foi

coletado em sua origem.

A camada demiddleware, de modo particular considerando a arquitetura LWC, é composta por: a) módulo coletor, responsável por receber os dados dos diversos sensores; e enviá-los para um, b) sistema gerenciador de banco de dados (SGBD), responsável por administrar a persistência dos dados da aplicação. A Figura 25 ilustra uma representação para a camada demiddleware da arquitetura LWC proposta neste trabalho.

Figura 25: Camada de middleware da arquitetura LWC

Fonte: Elaborado pelo autor

Esta imagem ilustra a camada de middleware da arquitetura LWC, composta por: a) módulo coletor; b) SGBD.

O protocolo MQTT é um padrão da indústria que sugere um modelo para ge- renciamento do envio de mensagens entre dispositivos. Foi desenvolvido pela IBM com o propósito de gerenciar a transmissão de dados através de redes intermitentes ou com pouca banda de dados. Possui como propriedades principais: a) baixa complexidade de implementação; b) otimizado para aplicação tanto em redes TCP/IP como em redes não-TCP/IP; c) garantia de alta taxa de entrega de pacotes; d) gestão de mensagens através do envio de pacotes de controle; e, e) permite a construção de aplicação com baixo consumo elétrico.

Utilizando o modelo de aplicação para protocolo MQTT, foi introduzido no módulo coletor de dados uma aplicação broker, atuanto como intermediário na captura dos dados transmitidos pelos módulos sensores, que desempenham o papel de publisher, e no armazenamento desses dados em um SGBD. A implementação do protocolo MQTT escolhida para o desenvolvimento deste projeto foi a Mosquitto4.

4 Mosquitto: implementação do protocolo MQTT, de código-fonte aberto, escrita na linguagem C, muito

utilizada em projetos de IoT, desenvolvida e mantida pela Eclipse Foundation. Disponível em: <http://mosquitto.org>. Acesso em: nov. 2015.

No Apêndice A consta o código-fonte para o módulo sensor desenvolvido para este projeto, seguido do código-fonte utilizado para controle do módulo de monitoramento remoto, no Apêndice B. Foi necessária a utilização da bibliotecaPubSubClient para auxiliar na comunicação através do protocolo MQTT. Os códigos-fonte que compõem a biblioteca constam no Anexo A, onde inicialmente se apresenta a licensa de uso, no Algoritmo A.1, seguida do código-fonte do componentePubSubClient.cpp, no Algoritmo A.2, e, por fim, o código-fonte do componente PubSubClient.h, no Algoritmo A.3.

O SGBD escolhido foi o MariaDB, devido sua licença de uso livre e por questões de compatibilidade com o padrão SQL, o MariaDB também apresenta uma baixa exigência dehardware e boa velocidade, se comparado com outros SGBDs padrão do mercado.

Para a persistência de dados foi utilizado um modelo de dados composto por duas entidades, sendo uma responsável por identificar o módulo sensor e a outra responsável por armazenar os dados lidos. A primeira entidade, chamada de sensors, armazena a identificação do sensor e sua relação de herança, já a segunda entidade, chamada de

datastream, armazena o fluxo de dados contendo a identificação do sensor de origem e

uma assinatura de tempo. A Figura 26 ilustra o modelo de dados utilizado na camada de

middleware da arquitetura LWC proposta neste trabalho.

Figura 26: Modelo de dados da camada de middleware da arquitetura LWC

Fonte: Elaborado pelo autor

Esta imagem ilustra o modelo de dados utilizado na camada de middleware da arquitetura LWC.

As entidades foram criadas utilizando as definições padrões de código na linguagem SQL. No Apêndice C consta o código SQL para criação da tabela sensors, e o código SQL para criação da tabela datastream consta no Apêndice D.