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.