Martin André Arnold Dill Programa Institucional de Bolsas de Iniciação Científica PIBIC/CNPq - UNIJUÍ 2008-2009 Framework para Desenvolvimento de Aplicações maemo para Dispositivos Móveis Relatório Final de Atividades apresentado ao Comitê Científico da Universidade Regional do Noroeste do Estado do RS Orientador: Prof. Dr. Paulo Sérgio Sausen Departamento de Tecnologia - DeTEC Ijuí Agosto de 2009 Sumário Introdução.....................................................................................................................3 1 INTRODUÇÃO AO MAEMO ..............................................................................4 1.1 2 Principais Tecnologias Envolvidas ..................................................................4 1.1.1 GTK+ e Hildon ........................................................................................4 1.1.2 D-Bus ......................................................................................................4 1.1.3 LibOSSO .................................................................................................5 FERRAMENTAS UTILIZADAS PARA O DESENVOLVIMENTO....................5 2.1 maemo SDK ...................................................................................................5 2.2 Scratchbox ......................................................................................................5 2.3 Xephyr (X Window Server) ............................................................................6 3 LINGUAGENS DE PROGRAMAÇÃO UTILIZADAS ........................................6 4 PYTHON PARA MAEMO ...................................................................................7 4.1 Módulos Python ..............................................................................................7 4.2 Exemplo de Aplicação Python para maemo.....................................................8 5 FRAMEWORK PARA DESENVOLVIMENTO DE APLICAÇÕES....................9 6 PROGRAMA PARA MONITORAMENTO DE SUBESTAÇÃO .......................10 6.1 Base de dados ...............................................................................................12 6.2 Web Service..................................................................................................12 6.3 Aplicação......................................................................................................12 6.3.1 Módulos de Monitoramento em Tempo Real..........................................13 6.3.2 Módulo de Consulta à Base....................................................................13 6.3.3 Módulo de Procura de Erros...................................................................14 6.3.4 Configurações ........................................................................................16 7 CRONOGRAMA DE ATIVIDADES..................................................................17 8 CONSIDERAÇÕES FINAIS...............................................................................18 9 BIBLIOGRAFIA.................................................................................................18 2 Introdução A computação encontra-se diante de uma importante revolução. Um exemplo disso é a miniaturização de componentes eletrônicos como memórias e processadores, permitindo assim a construção de dispositivos pequenos e portáteis, como os atuais telefones celulares, PDAs, tablet PCs e Internet tablets. Outro ponto interessante nesse escopo foi o aumento do poder computacional desses dispositivos. Essa característica possibilitou aos mesmos executarem aplicações cada vez mais complexas, como por exemplo, jogos eletrônicos, tanto em 2D quanto em 3D, aplicações de multimídia, dentre outras. Um destes dispositivos é o NOKIA N800, da família dos Internet Tablets, dispositivo utilizado neste projeto, que roda sob uma plataforma Linux chamada maemo. O maemo é um sistema operacional desenvolvido especialmente para rodar em dispositivos móveis, foi desenvolvido sob a plataforma Linux, baseado na distribuição Linux Debian. Maemo é de código aberto e foi desenvolvido sob a arquitetura ARM (Acorn RISC Machine), ARM é uma arquitetura utilizada especialmente por dispositivos móveis por ser simples, barata e possuir um baixo consumo de energia, comparado às arquiteturas dos computadores desktop, como, por exemplo, a arquitetura x86, arquitetura amplamente utilizada nos computadores pessoais.[1] A plataforma maemo foi anunciado no final de 2004 e lançado em 2005, com o Nokia 770 Internet Tablet. Em 2006, maemo 2.0 foi introduzido, com duas revisões posteriores (codinomes Mistral, Scirocco e Gregalle, respectivamente). No início de 2007, maemo 3.0 (codinome Bora) foi lançado juntamente com o tablet Nokia N800, com muitos aprimoramentos, permitindo o uso de novas ferramentas. No fim de 2007, a versão 4.0 da plataforma maemo (codinome Chinook) foi anunciada e rapidamente lançada juntamente com o novo tablet, Nokia N810, consolidando assim os desenvolvimentos que aconteceram com o maemo 2.2 e 3.0. Este projeto tem como principal objetivo a construção de um framework para desenvolvimento de aplicações maemo, este auxiliará qualquer um que deseja desenvolver aplicações para maemo sem precisar gastar muitos meses aprendendo sobre o sistema e suas características, o que torna mais prático e eficiente o desenvolvimento. Após um período inicial de estudo da plataforma maemo, necessário para o correto andamento do projeto, foi desenvolvida uma aplicação utilizando o framework proposto comprovando a sua eficiência. Esta aplicação, na verdade, é parte de um sistema maior, desenvolvido em outros projetos do Grupo de Automação Industrial e Controle (GAIC), a aplicação desenvolvida restringe-se ao monitoramento remoto de uma subestação de energia a partir de um dispositivo móvel, neste caso, o NOKIA N800. Mais detalhes sobre este dispositivo bem como seu sistema operacional podem ser obtidos na página do projeto (http://www2.unijui.edu.br/~maemo). 3 1 INTRODUÇÃO AO MAEMO 1.1 Principais Tecnologias Envolvidas Nesta sessão serão apresentadas as principais tecnologias envolvidas na plataforma maemo, essenciais para o desenvolvimento de aplicações neste ambiente. Primeiramente serão apresentados os principais frameworks para a construção das interfaces gráficas (GTK+ e Hildon) e manipulação de eventos que utilizam interface com o usuário (janelas, caixas de texto, alertas e etc.). Também será apresentada a tecnologia D-Bus, uma solução simples, porém muito poderosa usada na comunicação entre processos no sistema operacional, estes processos, que normalmente são aplicativos, conversam entre si, D-Bus utiliza um sistema de mensagens simples e eficientes, economizando processamento e aumentando o desempenho do sistema operacional maemo. Por fim será descrita a LibOSSO, uma biblioteca importante e de baixo nível pertencente ao D-Bus que realiza funções (que serão explicadas no item 1.1.3) nos aplicativos e tem conhecimento de acontecimentos à nível de hardware e pode ser útil para avisar os aplicativos sobre possíveis erros no sistema. 1.1.1 GTK+ e Hildon O maemo foi desenvolvido sob a plataforma GTK+ (GIMP Toolkit) que é uma biblioteca de elementos de interface gráfica (widgets), escrita em C e orientada a objetos, para o desenvolvimento de aplicações baseadas em janelas, muito utilizadas em ambiente Linux. O maemo também utiliza um framework chamado Hildon, desenvolvido pela Nokia e baseado nas tecnologias Gnome/GTK+, a fim de melhorar o desenvolvimento das aplicações para maemo, oferecendo uma extensa quantidade de ferramentas. 1.1.2 D-Bus Para a comunicação entre processos no sistema maemo é utilizada a tecnologia D-Bus (o D originalmente vem de "Desktop"). O D-Bus é um sistema de barramento de mensagens, que é um meio simples para a comunicação entre aplicativos. Além da comunicação entre processos (IPC, Inter Process Communication), o D-Bus ajuda a coordenar o ciclo de duração do processo; tornando mais simples e confiável a codificação de um aplicativo ou demonstrativo de "evento único" executando-os sob demanda quando seus serviços são necessários. A maior área de problema que o D-Bus objetiva resolver ou mesmo facilitar a comunicação entre aplicações de software desktop (geralmente gráficas). O D-Bus tem um papel muito importante no maemo, visto que é o mecanismo de IPC a ser usado para utilizar os serviços disponibilizados na plataforma (e dispositivos). Prover serviços sobre D-Bus é também a maneira mais simples de garantir reuso de componentes de outras aplicações.[2, 3] 4 1.1.3 LibOSSO A LibOSSO é uma biblioteca amplamente utilizada pelos aplicativos projetados para Maemo deverão utilizar. Ela proporciona um mecanismo de notificação para aplicativos de maneira que podem ser encerrados tranquilamente no caso de encerramento do sistema ou falta de memória. Além disso, a LibOSSO isola convenientemente o aplicativo de possíveis mudanças de implementação no nível do DBus. A LibOSSO também proporciona funções úteis para manusear recursos de gravação automática e gravação do estado da plataforma, mudanças no modo do dispositivo e estado do hardware do processo e outros eventos importantes que acontecem em dispositivos do tipo Internet Tablet. [4] 2 FERRAMENTAS UTILIZADAS PARA O DESENVOLVIMENTO Nesta sessão serão apresentadas e descritas todas as ferramentas utilizadas no desenvolvimento de aplicações para maemo, maemo SDK, Scratchbox e Xephyr. Estes softwares são livres de custo e podem ser instalados em um sistema operacional GNU/Linux, neste projeto utilizaremos o Sistema Operacional Ubuntu 8.04 LTS. 2.1 maemo SDK Aplicações maemo podem ser desenvolvidas diretamente no ambiente desktop, usando o maemo SDK (Kit de Desenvolvimento de Software). O maemo SDK constitui de um conjunto de bibliotecas e ferramentas que permitem o desenvolvimento de aplicações para Maemo e Internet Tablets. Este SDK deve ser instalado em um ambiente Scratchbox para que possa ser útil, pois o maemo, como dito anteriormente, foi desenvolvido sob a arquitetura ARM, diferentemente dos computadores de propósito geral que, na maioria, utilizam a arquitetura x86. Por isso deve-se instalar o maemo SDK em um ambiente Scratchbox, que serve como um emulador e compilador para outras arquiteturas assim permitindo que o maemo SDK funcione corretamente.[1, 12] 2.2 Scratchbox Scratchbox é um toolkit de compilação para diversas arquiteturas destinada a tornar o desenvolvimento de aplicações para Linux embarcado mais fácil. Ela também fornece um conjunto completo de ferramentas para integrar e compilar toda uma distribuição Linux.[13] A idéia básica no uso do Scratchbox é utilizar outro processador denominado HOST para compilar software para qualquer outra plataforma que será o alvo e que usa para uma arquitetura diferente, este processador alvo é denominado TARGET. Isto significa que a máquina na qual você está compilando o software nativamente não pode executar o software compilado. O software é compilado para outro processador, no nosso caso, o processador ARM. Em resumo, o Scratchbox permite criar, compilar e executar programas de uma determinada arquitetura (i.e., ARM) em uma máquina com a arquitetura x86. Com isso é obtida uma significativa economia, pois não existe a necessidade do equipamento alvo durante o desenvolvimento das aplicações. 5 2.3 Xephyr (X Window Server) O X Window Server proporciona um ambiente básico para a construção de ambientes GUI: desenho e janelas que se deslocam na tela, interagindo com um mouse e/ou teclado. O servidor X no X Window Server reúne usuário, entrada (teclado, mouse) e passa ao conhecimento de aplicações X, chamada X cliente. O servidor X fornece também uma maneira de mostrar aos clientes X a saída gráfica. Na Figura 01 há um pequeno exemplo de como o servidor X funciona, na área de trabalho do usuário situam-se os dispositivos de entrada (mouse e teclado) e também a saída gráfica (monitor), estes estão ligados ao servidor X que recebe estes dados e os envia para os clientes (browser e xterm), que são aplicações, então o servidor X recebe a resposta dos clientes e atualiza o estado das aplicações clientes para o usuário na área de trabalho. Também pode ser observado na Figura 01 que os clientes podem situar-se tanto na mesma máquina, quanto na rede. Figura 01. Exemplificação do funcionamento do X Server. (http://lions-wing.net/lessons/remote/X_client_server_example.png) É instalado o Servidor X porque será necessário executar os aplicativos que desenvolvemos após instalar o SDK. E este exibirá o sistema Maemo e as aplicações desenvolvidas para fazer os devidos testes e sabermos se o programa está rodando corretamente. Existem variadas opções de servidores X que podem ser usados, um deles é o Xephyr, que é o servidor x utilizado em nosso projeto. 3 LINGUAGENS DE PROGRAMAÇÃO UTILIZADAS A linguagem C/C++ é a única linguagem reconhecida oficialmente para o desenvolvimento de aplicações maemo, o compilador C/C++ já vem incluído no maemo SDK para que os programas depois de escritos já possam ser compilados e testados no próprio Scratchbox. Conforme a TARGET escolhida, que será o computador alvo para qual o código será compilado, seja x86 ou ARM, o compilador trabalha o código para a arquitetura selecionada, a TARGET x86 é utilizada para compilar e testar os programas no Scratchbox, depois de concluída a etapa de desenvolvimento, pode-se utilizar a 6 TARGET para compilar para a arquitetura ARM, que é a arquitetura do tablet, destino final da aplicação. É possível utilizar outras linguagens para o desenvolvimento, uma delas é a linguagem Python. Python é uma linguagem de programação de alto nível interpretada, interativa, orientada a objetos e de tipagem dinâmica e forte, é muito conhecida por ter uma sintaxe muito simples e ser muito poderosa, oferecendo vários recursos. O interpretador Python não é nativo ao maemo SDK nem ao sistema maemo dos Internet Tablets, mas este é facilmente encontrado para download no site oficial do Python para maemo (http://pymaemo.garage.maemo.org/), além da documentação e todo material necessário para iniciar o desenvolvimento de aplicações. 4 PYTHON PARA MAEMO O desenvolvimento de aplicações com a linguagem de programação Python é semelhante, senão idêntica, à programação em C/C++, em Python, foi criado um módulo especifico para a criação de interfaces gráficas baseado em GTK+ do C/C++. Esse módulo possui todas as classes, métodos e propriedades do Tool Kit escrito em C, o que facilita muito o desenvolvimento, por ser uma linguagem de altíssimo nível e com objetivo de facilitar a vida do programador. Resultados preliminares desde projeto mostram que o desenvolvimento de programas em Python acaba por se tornar muito mais simples que C, por não haver necessidade de escrever tanto código e a linguagem ser mais simples de ser declarada.[6] 4.1 Módulos Python Cada arquivo contendo código Python é denominado um módulo. Na grande maioria dos casos utiliza-se um ou mais módulos Python em combinação: o interpretador interativo é adequado para realizar experimentos curtos, mas não para escrever código de produção. Um módulo Python consiste de código-fonte contido em um arquivo denominado com a extensão .py, como tal, pode conter variáveis, funções e classes. Para fins de nomenclatura, qualquer um destes elementos contidos em um módulo é considerado um atributo do módulo. Python, através do módulo, oferece excelentes mecanismos para modular código-fonte. Esta modularização pode ter diversas motivações: o programa pode ser extenso demais, ter partes reutilizáveis que devem ser separadas, ou ainda necessitar de módulos escritos por terceiros. Para utilizar o código de um módulo em uma aplicação Python o comando import é utilizado. Como dispositivos portáteis dispõem de recursos limitados (quando comparados aos computadores desktop ou notebook), foram feitas modificações no Python a fim de torná-lo mais rápido e estável, portanto vários módulos foram removidos do Python para Maemo. Os seguintes módulos foram removidos: • test • ctypes/test • sqlite3/test • email/test • _ctypes_test.so 7 • _testcapi.so • linuxaudiodev.so • ossaudiodev.so • audioop.so • lib-tk • bsddb • idlelib Os seguintes módulos foram removidos, mas são oferecidos por outros módulos: • pyexpat.so • xmldom • xmlsax • xmlparsers Os seguintes módulos são precários, instáveis e/ou inseguros, portanto o uso destes não é aconselhável [5]: • dbhash • curses • posixfile • getpass • macpath • macurl2path • os2emxpath, • nturl2path, • pty • pyclbr • rexec • rlcompleter • statvfs • stringold • telnetlib • this • toaiff • tty • user • xdrlib • aifc • audiodev • sunaudio • sunau 4.2 Exemplo de Aplicação Python para maemo Nesta sessão será apresentado um pequeno exemplo de aplicação para Maemo utilizando a linguagem de Programação Python, utilizando os módulos GTK+ e Hildon, mais detalhes podem ser encontrados no site oficial do Python para maemo: http://pymaemo.garage.maemo.org. Este programa é simples e serve para mostrar um pouco da sintaxe do Python, este exemplo cria uma janela para a aplicação e insere um rótulo (texto) escrito “Hello World”, o código está logo abaixo e a saída da execução deste programa é ilustrada na Figura 02. 8 #!/usr/bin/env python2.5 import gtk import hildon class HelloWorldApp(hildon.Program): def __init__(self): hildon.Program.__init__(self) self.window = hildon.Window() self.window.connect("destroy", gtk.main_quit) self.add_window(self.window) label = gtk.Label("Hello World!") self.window.add(label) label.show() def run(self): self.window.show_all() gtk.main() app = HelloWorldApp() app.run() Esta aplicação exemplo ao ser executada será exibida como na imagem abaixo. Figura 02. Exemplo de Aplicação Maemo Utilizando Python (http://test.maemo.org/platform/docs/pythonbora/images/pymaemo_bora/hello_world_3_small.jpg) 5 FRAMEWORK PARA DESENVOLVIMENTO DE APLICAÇÕES Após o estudo inicial do sistema operacional maemo e a familiarização com o ambiente de desenvolvimento de software, foi desenvolvido o Framework para desenvolvimento de aplicações maemo, este framework foi desenvolvido totalmente sob plataformas livres de custo, o que torna o desenvolvimento totalmente viável para qualquer pessoa que desejar utilizá-lo. 9 O desenvolvimento inicial de aplicações acontece em ambiente desktop, o que elimina a necessidade de possuir um dispositivo móvel N800. Neste Framework, o sistema operacional escolhido para portar as tecnologias que serão utilizadas no desenvolvimento de aplicações é o Linux Ubuntu 8.04 LTS, esta distribuição Linux foi escolhida pois possui melhor suporte ao usuário, mais softwares compatíveis e ser uma distribuição estável, porém outras distribuições Linux podem ser utilizadas. No sistema operacional da máquina, foi instalado o Scratchbox, software descrito no item 2.2, responsável pela emulação de distribuições Linux (maemo) que rodam sob outras arquiteturas (i.e., ARM) e compilação de softwares para estas arquiteturas. Este software é extremamente necessário, pois sem ele não é possível rodar o maemo SDK. Sobre o Scratchbox foi instalado o maemo SDK, kit para desenvolvimento de aplicações maemo, com esta ferramenta e o auxilio do Scratchbox, é possível emular o maemo e suas funcionalidades necessárias para o desenvolvimento de softwares. Com estes três itens, já é possível iniciar o desenvolvimento das aplicações, porém ainda resta escolher uma linguagem de programação a ser utilizada para o desenvolvimento, neste framework, a linguagem de programação Python (explicada e exemplificada no item 4) foi a escolhida. Também é possível utilizar a linguagem de programação C para o desenvolvimento das aplicações, as ferramentas necessárias para a compilação e execução das aplicações maemo na linguagem C já estão presentes no maemo SDK, estas variações são possíveis e tornam o framework flexível, possibilitando novas opções de desenvolvimento. Este framework e suas partes integrantes pode ser melhor visualizados na Figura 03. Figura 03. Framework para desenvolvimento de aplicações maemo 6 PROGRAMA PARA MONITORAMENTO DE SUBESTAÇÃO Para validar o framework proposto, foi desenvolvida uma aplicação modelo, que consiste em um subsistema móvel de monitoramento de subestações de energia elétrica, um módulo móvel, independente e remoto do Sistema de Monitoramento de Subestações de Energia Elétrica apresentado em [9] e estendido em [10] que é um projeto desenvolvido pelo Grupo de Automação Industrial e Controle (GAIC) com apoio da CEEE-D/RS. Este projeto determina inovações tecnológicas para a aquisição de sinais, processamento e transmissão através de um sistema supervisório. As principais características deste sistema, que o diferencia dos demais, são a facilidade de implementação de sistemas micro-processados, a utilização de plataforma 10 de desenvolvimento gratuita, implementação economicamente viável no nível de hardware e software, portabilidade, mobilidade e segurança, por possuir diversas rotas de comunicação e possibilidade de utilização de estruturas de rede já existentes. Os dados captados pela Unidade Remota de Aquisição de Dados (URAD) e pelo Módulo de Sensores Inteligentes (MSInt) são transmitidos através de Wireless para o Gateway, na qual são retransmitidos para o Servidor Remoto (SR) e Controlador Supervisório (CS) via RS 232. O SR pode transmitir os dados via protocolo MODBUS sobre TCP/IP cabeado ou Wi-Fi para o SR numa rota alternativa conforme ilustra a Figura 4. Os dados estáticos, como temperatura, podem ser transmitidos pelo MSInt que tem o diferencial de enviar dados em intervalos maiores com o objetivo de economizar as baterias. Esta variedade de rotas para a aquisição de dados denota segurança neste processo do sistema. Na Figura 4 pode ser visto o sistema com as três subdivisões interconectadas: Subsistema de Aquisição de Dados, Subsistema Servidor Remoto e Subsistema Controlador Supervisório. Figura 04. Arquitetura do Sistema de Monitoramento de Subestações Elétricas. O subsistema de monitoramento móvel, que é a aplicação desenvolvida neste projeto, foi desenvolvido em três níveis, o primeiro nível é o SGBD, que possui a base de dados onde estão armazenados todas as grandezas coletadas pela URAD, o segundo nível é o Web Service (WS), que contém todos os métodos necessários para a leitura dos dados na base e a linguagem para comunicar-se com a aplicação e enviar os dados para a mesma. O terceiro nível é composto por uma aplicação, que o usuário utilizará para monitorar a subestação de energia a partir do NOKIA N800 com o Sistema Operacional maemo. Na Figura 5 é mostrada a organização do sistema, com o módulo de monitoramento móvel agregado e a identificação dos níveis deste sistema. 11 Figura 05 - Modelo organizacional do sistema de monitoramento de subestações de energia elétrica incluindo o subsistema móvel. 6.1 Base de dados A utilização de um SGBD, hoje em dia, é essencial para o desenvolvimento de sistemas, ele propicia muitos benefícios e entre eles estão: maior velocidade na recuperação de dados, grande capacidade de indexação, controle de inconsistência dos dados, maior segurança e múltiplas transações (pode-se ler e gravar no banco de dados ao mesmo tempo). Todas essas características não estão presentes em um sistema de arquivos tradicional, neste caso, como se trata de uma aplicação em tempo real, as gravações no banco de dados devem ser rápidas, para que o usuário não receba dados antigos na aplicação[11]. O SGBD utilizado neste projeto é o IBM DB2 Express-C, na Base de dados há uma tabela principal que guarda todos os dados captados pela URAD (i.e., TA, TB, TC, CA, CB, CC, FP, PA, PAP), por meio dela, o WS consegue recuperar todos os dados necessários para a aplicação, um descritivo completo destas grandezas pode ser consultado em [10]. 6.2 Web Service O WS é o nível que se situa entre a base de dados e a aplicação, WS é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Permite também que as diferentes partes desse subsistema residam em máquinas distintas e não necessitem estar próximas fisicamente. Com esse sistema é possível acessar os dados em qualquer lugar que exista uma conexão com a Internet, a aplicação poderá conversar com o WS e requisitar os dados. Um WS baseia-se no protocolo SOAP (Simple Object Access Protocol). SOAP é um protocolo utilizado para troca de informações estruturadas em uma plataforma descentralizada e distribuída, utilizando tecnologias baseadas em XML [7,8]. O WS desenvolvido para o subsistema de monitoramento possui a função de fazer as negociações entre os dois níveis (aplicação e SGBD) através da Internet. O WS é instalado no mesmo microcomputador onde se situa a base de dados, e este deve ter um endereço Internet Protocol (IP) válido, para que possa ser acessado pela aplicação. 6.3 Aplicação A aplicação de monitoramento da subestação, projetada para ser executada no dispositivo móvel NOKIA N800, foi desenvolvida utilizando o framework proposto, utilizando a linguagem de programação Python. Ao executar a aplicação, a janela principal é carregada, contendo doze botões, nove deles carregam as telas com os gráficos para a visualização das nove grandezas coletadas pela subestação (i.e., TA, TB, TC, CA, CB, CC, FP, PA, PAP), um botão para um módulo de consulta á base, outro módulo de procura de erros e, por ultimo, o botão para a tela de Configurações. 12 6.3.1 Módulos de Monitoramento em Tempo Real As nove telas para a geração dos gráficos seguem o mesmo princípio, ao clicar em um dos botões, uma nova tela é carregada e está organizada da seguinte forma: na parte superior está o título da janela, no meio, ocupando a maior parte da tela, está o gráfico que exibe os dados recebidos do WS, e na parte inferior, uma área reservada para emitir avisos/alarmes previamente configurados na aba de configuração (veja Figura 12). Ao carregar uma tela, os limites das grandezas e as configurações da base de dados são carregados e se inicia a conexão com o banco de dados. Internamente, uma função que realiza a chamada para o Web Service, manipula os dados recebidos, gera o gráfico e atualiza a tela do programa é chamada periodicamente, em um intervalo de tempo que pode ser definido pelo usuário na aba “Configurações”. Os dados serão recebidos e exibidos até que o usuário abandone a tela. O programa recupera sempre os últimos dados que foram inseridos na base (últimos dados coletados pela URAD), ou seja, resgata os últimos 20 registros da subestação em tempo real. A tela que exibe a grandeza Tensão com as fases A, B e C (veja Figura 6), possui mais duas informações ao usuário: A tensão mais alta e baixa que foram recebidas desde que a conexão foi iniciada. Os avisos possíveis na tela “Tensão” fases A, B e C são: sobre e sub tensão. A tela “Corrente”, semelhante à tela “Tensão” (ver Figura 6), com as fases A, B e C exibe somente avisos de sobrecarga. Os limites das grandezas Tensão e Corrente são variáveis, portanto podem ser modificadas na aba “Configurações” de acordo com os limites que o usuário desejar. As telas que exibem a Potência Ativa, Potência Aparente e Fator Potência não emitem nenhum tipo de aviso, apenas exibem os dados coletados pelo WS na base de dados. Na Figura 6 é mostrado um gráfico com os valores online da Tensão na Fase A. Figura 06. Tela “Tensão Fase A” da aplicação de monitoramento móvel de subestação. 6.3.2 Módulo de Consulta à Base Após o desenvolvimento dos módulos de monitoramento em tempo real (Tensões, Correntes e Potências), foi desenvolvido um novo módulo, cujo objetivo é realizar consultas para analisar situações anteriores da subestação. Este módulo será de grande utilidade para o operador da subestação, que não necessitará estar atento o tempo todo á subestação. 13 Ao clicar no botão Consultar Base, na Tela principal do programa, uma nova tela é exibida, contendo um formulário (ver Figura 07) com as seguintes opções: Grandeza, data, hora inicial, hora final e numero de registros. Na opção grandeza é selecionada a grandeza que será consultada na base de dados (Tensões, Correntes, Potências), na opção data, deve ser informado a data a ser consultada, na opção hora inicial, deve-se informar a hora em que se iniciará a consulta. Das ultimas duas opções, hora final e número de registros, apenas uma pode ser escolhida. Escolhendo a opção hora final, deve-se informar a hora em que terminará a consulta, formando então um intervalo de consulta baseados na hora inicial e final. Ao clicar no botão “gerar gráfico” será exibido um gráfico (ver Figura 08) mostrando a média aritmética de cada minuto no intervalo definido. Entretanto se a opção número de registros for escolhida, a opção ser selecionada é a quantidade de registros a serem exibidos a partir da hora inicial, então será exibido em formato de gráfico os primeiros n registros resultantes da base a partir da hora inicial. Figura 07. Formulário de Consulta à Base de Dados Figura 08. Gráfico da Consulta à Base 6.3.3 Módulo de Procura de Erros Após a conclusão do módulo de consulta à base de dados, foi desenvolvido um novo módulo, que é o módulo de Procura de Erros. Um dos principais objetivos do sistema de monitoramento de subestações é analisar as grandezas coletadas a fim de 14 encontrar erros, e a partir destes erros, localizar as possíveis causas e melhorar a distribuição de energia para que estes erros não mais ocorram, e este módulo de procura de erros facilitará ainda mais esta tarefa. O módulo de procura de erros visa encontrar as sub-tensões, sobre-tensões e sobrecargas ocorridas em um intervalo de tempo definido pelo usuário. Para um dado de grandeza ser classificado como um erro, ele deve estar fora da faixa de valores de limite definidos na tela de configurações. Ao clicar no botão “Ocorrência de erros” uma nova tela contendo um formulário é carregada (ver Figura 09), neste formulário há as seguintes opções a serem selecionadas: “Grandeza”, define qual será a grandeza pela qual serão procurados os erros, podem ser escolhidas as tensões, correntes ou, até mesmo, todas estas opções. Ao escolher uma tensão ou uma corrente, deve-se escolher o tipo de erro à ser procurado, os erros possíveis são sub-tensão e sobre-tensões para as Tensões e sobrecarga para as Correntes, ao escolher a opção “todas” todos os erros serão procurados. As outras três opções “Data”, “Hora Inicial” e “Hora Final” são referentes ao intervalo de tempo em que serão procurados estes erros. Figura 09. Formulário Ocorrência de Erros Ao escolher todas as grandezas, informar o intervalo de tempo e clicar no botão “Procurar Ocorrências”, uma requisição é feita para o Web Service, que procurará na base de dados todos os erros das Tensões e Correntes, e exibirá uma nova tela exibindo os tipos de erros e a quantidade de erros encontrados, esta tela é exibida na Figura 10. Figura 10. Tela de Erros Encontrados 15 Ao clicar em um dos botões de “Ver Ocorrências” serão carregadas as informações sobre os erros em uma nova janela, em formato de tabela, os erros disponíveis são: Hora inicial do erro, Hora final do erro, Valor Médio (Volts), e Valor do Pico (Volts), um exemplo desta tela pode ser visto na Figura 11. Figura 11. Tabela de informações sobre os erros. Ao escolher apenas uma grandeza para exibição dos erros, a tabela de Erros será exibida de forma direta, pois se trata apenas de uma grandeza e um tipo de erro. 6.3.4 Configurações Na aba de Configurações, é possível editar os limites das grandezas e as configurações da base de dados. Na aba “Limites” é possível configurar a tensão nominal da subestação (Volts), os limites de sub e sobre tensão (%), o limite de sobrecarga (Amperes) e também o intervalo de tempo (segundos) em que será atualizado os dados nos gráficos. Na aba “Base de dados” é possível alterar o endereço IP do servidor do WS, o nome da base de dados, o usuário e a senha para acessar a base. Estas configurações não são registradas em uma base de dados, por serem poucos bytes de informação, portanto foi utilizado um arquivo seqüencial (arquivo de texto) para armazenar essas configurações e este fica salvo no diretório raiz da aplicação. Figura 12. Tela Configurações, rodando no ambiente Scratchbox (aba “Limites” selecionada). 16 7 CRONOGRAMA DE ATIVIDADES As atividades desenvolvidas no projeto foram realizadas de acordo com o cronograma de atividades proposto (ver Tabela 01). Os itens um e dois que são a revisão bibliográfica sobre o sistema operacional maemo e o estudo do ambiente de desenvolvimento de softwares para maemo já foram totalmente concluídos. Nestas etapas foram instalados todos os softwares e ferramentas necessárias para o desenvolvimento das aplicações para maemo (maemo SDK, Scratchbox e Xephyr), também foi efetuada a revisão sobre o sistema operacional e todos seus principais componentes (GTK+, Hildon, D-Bus e etc.). O conhecimento nas linguagens de programação C/C++ e Python foram fortalecidos e muitos exemplos de aplicações para maemo foram criados, compilados e executados tanto no maemo SDK quanto no dispositivo alvo (Nokia N800). Um site com todo o material pesquisado até aqui, incluindo exemplos de aplicações para maemo em C/C++ e Python, tutoriais de instalação das ferramentas para o desenvolvimento pode ser acessado em http://www2.unijui.edu.br/~maemo. O framework de desenvolvimento foi estruturado, então utilizando este framework foi desenvolvida a aplicação modelo, após o desenvolvimento em ambiente desktop a aplicação foi instalada e configurada no Internet Tablet N800 com sucesso, como pode ser visto na Figura 13. A publicação dos resultados está descrita no item oito deste relatório. Figura 13. Nokia N800 rodando aplicação de monitoramento de subestação. Atividades 1. Revisão bibliográfica e estudos iniciais sobre o sistema operacional maemo/Symbian; 2. Estudo do ambiente de desenvolvimento de softwares da plataforma maemo; 3. Definição da aplicação a ser desenvolvida no maemo SDK; 4. Estruturação e montagem inicial do framework e desenvolvimento de uma aplicação modelo; 5. Instalação e configuração da aplicação em um dispositivo móvel (i.e., smartphone 17 ou tablet); 6. Publicação dos resultados da pesquisa e elaboração do relatório final das atividades desenvolvidas no projeto; Atividades 10/08 11/08 12/08 01/09 02/09 03/09 04/09 05/09 06/09 07/09 1 x x x 2 x x x x 3 x x x 4 x x x 5 x x x 6 x x x Tabela 01: Cronograma de atividades do projeto. 8 CONSIDERAÇÕES FINAIS A partir dos resultados parciais deste projeto, foi submetido um artigo para o evento: Brazilian Conference on Dynamics Control and Applications DINCON – 09, com título: Automação de Subestações de Energia Elétrica Utilizando Dispositivos Móveis, o artigo foi aceito e consta nos anais do evento como artigo completo, este também foi apresentado no evento que aconteceu na Universidade Estadual de São Paulo - UNESP na cidade de Bauru, nos dias 18 a 22 de Maio. Também está sendo desenvolvido um novo recurso que permitirá que a aplicação seja alertada pelo servidor quando houver falhas na subestação, para isso um novo módulo será desenvolvido e ficará disponível no servidor, para que quando ocorrerem falhas, este possa enviar avisos à aplicação. Para o desenvolvimento desta nova rotina será utilizada a Linguagem Java, Java possui mais recursos e, por esta razão, é mais indicada para o desenvolvimento deste módulo. Outra atividade de continuidade deste projeto é a troca do Web Service do módulo remoto, inicialmente escrito em Python, por um Web Service mais robusto, em Java, que oferecerá melhores recursos para a troca de informações, o principal motivo da troca é a limitação do módulo para captura de dados na base de dados do servidor causadas por falhas nos módulos integrantes que constituíam este Web Service. As atividades mencionadas como extensão do projeto inicial serão iniciadas no novo período de bolsa (renovação). Cabe ressaltar que pretendemos, a partir do término deste projeto (conclusão do cronograma apresentado na Tabela 01) submeter um novo artigo (extensão do artigo do DINCON), com as novas opções da aplicação modelo para a revista do CCEI, que atualmente é classificada como B3 Interdisciplinar WebQualis. 9 BIBLIOGRAFIA [1] Fórum Nokia. (s.d.). Acesso em 09 de Fevereiro de 2009, disponível em http://wiki.forum.nokia.com/index.php/Category:Maemo_(Portugu%C3%AAs) [2] Fórum Nokia. (s.d.). Acesso em 10 de Fevereiro de 2009, disponível em http://wiki.forum.nokia.com/index.php/DBUS_(Portugu%C3%AAs) 18 [3] Introdução ao D-Bus. (s.d.). Acesso em 10 de Fevereiro de 2009, disponível em Free Desktop: http://www.freedesktop.org/wiki/Software/dbus [4] Mobile Linux Internet Project. (s.d.) Acesso em 10 de Fevereiro de 2009, disponível em: http://v1.moblin.org/toolkits/prepDev/brazilian-portuguese/developmentlibraries.php [5] Módulos e comando import. (s.d.). Acesso em 13 de Fevereiro de 2009, disponível em Async Open Source : http://www.async.com.br/projects/python/pnp/node34.html [6] Using Python for maemo. (s.d.). Acesso em 15 de Fereveiro de 2009, disponível em Python for maemo: http://pymaemo.garage.maemo.org/documentation/pymaemo_tutorial/python_maemo_h owto.html [7] Rommel, Marcus. Simple Object Access Protocol - Entendendo o Simple Object Access Protocol (SOAP) [8] W3Schools, SOAP Tutorial Acesso em 01 de Abril de 2009, disponível em http://www.w3schools.com/ soap/default.asp [9] Salvadori, F.; Sausen, P.S.; Hartmann, L.V.; Campos M., Padoin, E.L; “Acquisition And Transmission Data Monitoring System Applied To Energy Substation”, Industrial Informatics, 2003. INDIN 2003. Proceedings. IEEE International Conference on 21-24 Aug. 2003 Page(s):60 – 64, Banff, Alberta, Canada. [10] Padoin, E. L., Salvadori, Fabiano, Campos, Maurício de, Sausen, Paulo Sérgio, Dill, Sérgio Luis, Idalencio, T. A.. Mobilidade no Monitoramento de Subestações Elétricas através de Serviços Web. In: VI SIRC - Simpósio de Informática da Região Centro do RS, 2007, Santa Maria. VI SIRC - Simpósio de Informática da Região Centro do RS, 2007. [11] Navathe; Elmasri. Sistema de Banco de Dados: Fundamentos e Aplicações. Terceira Edição. Editora LTC, 2002, P 795. [12] maemo.org. (s.d.). Acesso em 09 de maio de 2009, disponível em http://www.maemo.org [13] Scratchbox. (s.d.). Acesso em 09 de maio de 2009, disponível em http://www.scratchbox.org/ 19 20