• Nenhum resultado encontrado

A interface gráfica do usuário também é um programa computacional, desenvolvido em Java, mas é executada externamente ao servidor de aplicação. Sua conexão com o servidor se estabelece por meio da Internet e, dessa forma, permite ao usuário monitorar e controlar sua residência remotamente. Esse desacoplamento é importante não só pela comodidade do geren- ciamento remoto, mas porque permite que vários modelos sejam desenvolvidos, com diferentes níveis de detalhamento, de acordo com hardware (computador, celular, smart phone, etc.) e com o perfil do usuário que irá utilizá-la.

As Figuras 15 e 16 ilustram a interface em funcionamento. Inicialmente, o usuário executa o programa e insere o endereço da Internet do servidor de aplicação. O servidor estabelece a comunicação e começa a enviar continuamente as informações sobre o estado de sensores e atuadores. Cada cômodo da casa automatizada é apresentado na interface por meio da sua vista superior. Essa visão permite identificar de imediato o comportamento de cada transdutor e se há algum equipamento requisitando a atenção do usuário. Vale notar que além dos sensores, os atuadores também acusam sua mudança de estado, abrindo e fechando no caso das portas, janelas, cortinas e portão da garagem e alterando de cor, no caso das lâmpadas.

Figura 16: Interface gráfica sendo utilizada em uma tela de toque

A interface disponibiliza um menu para o envio de comandos aos sistemas de controle. Basta tocar no menu sobre o cômodo desejado e o sistema procura no banco de dados qual nó de controle está associado a ele e envia o comando para alterar o estado do atuador.

A interface com o usuário é composta por seis módulos:

Ȃ Módulo Central: responsável pela execução da interface e por gerenciar as atividades dos outros;

Ȃ Módulo de Rede: responsável pela comunicação da interface com o servidor por meio do protocolo TCP/IP;

Ȃ O módulo de sistemas de controle é uma representação dos sistemas do servidor para a geração de eventos;

Ȃ Módulo Gráfico: controla a aparência e o comportamento das entidades gráficas na tela; Ȃ Módulo de Registro: responsável por gerar e armazenar informações sobre o funciona-

mento dos outros módulos;

A interface gráfica foi criada totalmente separada dos módulos gerenciadores, no que diz respeito à dependência de linguagem de programação e sistema operacional. Essa prática reduz a dependência entre esses módulos, uma vez que não há a transmissão de objetos ou qualquer outro tipo de estrutura dependente de linguagem computacional. Isso permite que novas interfa- ces sejam criadas utilizando-se outros dispositivos com diferentes sistemas operacionais como telefones celulares, por exemplo, e espera-se que apenas se obedeça as regras de sintaxe das mensagens enviadas para que seja possível o controle e monitoramento remotos da residência.

6.9 Considerações Finais

No desenvolvimento da plataforma considerou-se a decomposição de sistemas complexos em módulos mais simples, cada um com suas funções, responsabilidades e protocolos de en- trada e saídas de dados. A divisão em módulos ou camadas é uma técnica muito utilizada por arquitetos de software e, no caso do Home Sapiens, permite que vários desenvolvedores possam trabalhar concomitantemente desenvolvendo novos módulos de acordo com a disponibilidade de hardware existente ou mesmo criando melhorias ou adaptando os módulos às suas necessi- dades.

Outra técnica adotada foi a utilização de um padrão de programação conhecido como obser- verou muitas vezes por publish/subscribe. No Home Sapiens, a maioria dos módulos depende de informações de outros módulos para operarem. Utilizando o padrão observer, cada mó- dulo efetua seu registro para receber atualizações dos eventos gerados pelos outros módulos mantendo uma dependência um-para-muitos entre objetos distintos, que serão notificados da mudança de estado do objeto observado.

O uso desses mecanismos provêem ao Home Sapiens uma redução na dependência entre os módulos, de forma que os algoritmos contidos em cada um deles possam ser modificados e testados sem afetar o funcionamento do conjunto. Esse é fator importante em se tratando de uma plataforma deste tipo, onde há grande probabilidade de cada desenvolvedor ajustar apenas os módulos que acharem conveniente.

7

Testes e Análises dos Resultados

Alguns experimentos foram realizados para testar o funcionamento do Home Sapiens. Em primeiro lugar, o conjunto formado pelo hardware e firmware foi submetido a testes. Então, testou-se todo o sistema, incluindo o software.

7.1 Testes do Hardware e do Firmware

Os testes do hardware e do firmware objetivaram verificar:

Ȃ Adequação do protocolo de comunicação entre o computador e a rede ZigBee; Ȃ A correta comunicação entre os nós da rede;

Ȃ A correta execução dos comandos pela aplicação implementada nos nós da rede

Para testar o funcionamento da troca de comandos para identificação das aplicações na rede, foi montada uma rede com um nó de interface e um nó de controle, conforme mostrado na Figura 17.

O nó de interface possui três tipos de aplicativos:

Ȃ Combined Interface, do perfil HA que gerencia a comunicação entre o computador e a rede;

Ȃ Generic Application, usado para tratar mensagens;

Ȃ Dimmable Light, do perfil HA, que funciona como uma lâmpada dimerizável virtual, retransmitindo ao computador os comandos recebidos de um potenciômetro.

Antes de iniciar a comunicação entre o computador e os nós rede ZigBee, é necessário realizar uma troca de comandos iniciais que revelem quais aparelhos estão conectados na rede e quais as aplicações disponíveis em cada um. Para tanto, é preciso primeiro que o servidor de aplicação reconheça a presença do nó de interface conectado à porta serial do computador. Há dois modos de se saber quais os outros aparelhos da rede:

Figura 17: Detalhes do nó de interface e nó de controle Ȃ Os aparelhos devem anunciar a sua entrada na rede a todos os demais; Ȃ Requisitar a um roteador quais os endereços de rede de seus aparelhos.

A Figura 18 mostra os resultados dos testes da comunicação realizada para a descoberta das aplicações na rede. O lado esquerdo mostra a interface Java com a lista de End Points im- plementados após verificar a conexão com o nó de interface, receber a informação da entrada do outro nó (de controle) na rede, e requisitar de ambos os números dos End Points implemen- tados. O lado direito mostra as aplicações implementadas após requisitar de cada End Point o descritor de tipo de aparelho.