209 Sistema Web para Gerenciamento do Acesso a um Observatório Astronômico Maiara Heil Cancian, Cesar Albenes Zeferino, Rafael Luiz Cancian, Roberto Miguel Torres Centro de Ciências Tecnológicas da Terra e do Mar (CTTMar) Universidade do Vale do Itajaí (UNIVALI) Rua Uruguai, 458 - Caixa Postal 360 – 88302-202 – Itajaí – SC Brazil {maiara.heil, zeferino, cancian, torres}@univali.br Resumo. Sistemas de informação baseados na Internet estão cada vez mais presentes nos mais diferentes domínios. Uma das áreas de grande aplicação consiste no acesso remoto a infra-estruturas de alto custo que podem ser compartilhadas através da rede. Neste contexto, este artigo apresenta o desenvolvimento de um sistema Web que será aplicado no acesso remoto a um observatório astronômico a fim de ampliar o acesso a essa infra-estrutura que possui alto custo de instalação e manutenção. O sistema permite que os usuários agendem a aquisição de imagens astronômicas através de uma interface Web e recebam essas imagens via e-mail, as quais são capturadas automaticamente pelo telescópio do observatório. 1. Introdução Na última década têm sido desenvolvidos diversos projetos de telescópios virtuais e telescópios remotos que visam permitir o compartilhamento do acesso a imagens astronômicas. A diferença principal entre os dois tipos de projeto reside no fato de que, em telescópios virtuais, é fornecido apenas o acesso remoto a uma base de dados de imagens já obtidas por telescópios, enquanto que, em telescópios remotos, é oferecida a possibilidade de controlar remotamente um telescópio real e obter novas imagens. O Laboratório de Astrofísica da Universidade do Vale do Itajaí (UNIVALI) está implantando um observatório astronômico que poderá ser operado remotamente. Com o apoio da Petrobrás, já foi adquirida parte dos equipamentos necessários. O presente trabalho desenvolveu um sistema Web para submissão, gerenciamento e atendimento de requisições de utilização remota do observatório. Esse sistema, doravante denominado Astra, possui uma interface Web, um módulo de cadastro dos usuários e um núcleo responsável pelo escalonamento e atendimento das requisições de acesso ao observatório. Tal núcleo utiliza diferentes critérios de escalonamento a fim de otimizar o uso dos recursos compartilhados. O resultado principal desse projeto foi a ampliação do acesso à observação astronômica, pois o sistema permite o acesso remoto gratuito não apenas por parte de pesquisadores da área de astronomia, mas, especialmente, de jovens em fase escolar, estimulando o interesse científico desses alunos e fortalecento a astronomia observacional amadora. Este artigo está estruturado em seis seções e apresenta uma descrição do sistema Web. A Seção 2 oferece uma breve descrição de trabalhos relacionados, com ênfase na Grahl, E. A; Hübner, J. F. (Eds.). Anais do XV Seminário de Computação, Blumenau, 20-22 de Novembro, 2006. p 209-220. 210 caracterização de alguns projetos de observatórios remotos. A Seção 3 apresenta a arquitetura do sistema Astra, enquanto que a Seção 4 descreve a sua funcionalidade. A Seção 5 apresenta aspectos relacionados à implementação do sistema e, concluindo, a Seção 6 apresenta as considerações finais. 2. Trabalhos Relacionados Atualmente, existem diversos observatórios remotos e virtuais disponíveis com acesso via Internet. O AST/RO é um telescópio de 1,7 metros de diâmetro em operação em Amundsen-Scott, no pólo sul, desde 1995, e é gerenciado pelo Center for Astrophysical Resourse in Antarctica (CARA). Todo o sistema AST/RO é altamente automatizado para reduzir ao mínimo a necessidade da intervenção humana e possibilitar sua utilização durante o inverno, período no qual a estação deve ser abandonada. Entretanto, o sistema é disponível para acesso remoto apenas para seus pesquisadores [CARA, 2002]. O observatório New Mexico Skies, no estado do Novo México (EUA), situa-se em uma área privilegiada, em termos de astronomia. O observatório possui uma ampla estrutura e faz uso de vários telescópios. Em sua página na Internet [Mike & Lynn Rice, 2005], são disponibilizadas, em tempo real, informações necessárias para observação astronômica, como velocidade do vento, temperatura, massa de ar, condições do céu, etc. Os telescópios desse observatório são alugados para o público, com taxas que variam de U$ 165,00 por dia a U$ 100,00 por hora. O Observatório do Valongo [Werneck, Nader e Campos, 2004] é um Instituto do Centro de Ciências Matemáticas e da Natureza (CCMN) da Universidade Federal do Rio de Janeiro (UFRJ), que, em 2004, adquiriu, juntamente com outras cinco instituições astronômicas, um conjunto de equipamentos necessários para montagem de um observatório remoto (telescópio, câmera CCD, conjunto de filtros, etc.). Com a chegada do equipamento, foi feito o projeto da cúpula controlada por computador e hoje esse observatório já pode ser utilizado. Porém, a completa operação remota ainda não foi implementada pela ausência de uma interface adequada, impossibilitando que o observatório seja controlado remotamente. Dos trabalhos descritos acima, nenhum deles contempla simultaneamente as duas principais características definidas para o observatório da UNIVALI: acesso remoto gratuito pela Internet e sem restrição ao tipo de público-alvo. 3. Arquitetura do Sistema Astra A Figura 1 apresenta a arquitetura básica do observatório remoto a ser implementado na UNIVALI (a fotografia é apenas ilustrativa). Através da Internet, os usuários tem acesso ao observatório por meio do sistema Astra, em execução em um microcomputador instalado no local do observatório. O observatório contará ainda com um sistema computacional embarcado e uma estação meteorológica básica. O primeiro comandará os mecanismos de automação do observatório, enquanto que o segundo incluirá uma série de sensores para obtenção do estado das variáveis meteorológicas. 211 Estação Meteorológica Internet Sistema Embarcado ‘ Figura 1. Arquitetura básica do observatório remoto A Figura 2 mostra uma estrutura em camadas do observatório remoto, com destaque aos módulos que constituem o sistema Astra (em cinza), desenvolvido em um trabalho de conclusão de curso [Heil, 2005]. Os usuários acessam o sistema através de uma interface Web. O núcleo do sistema é constituído pelos módulos: Gerenciador, Escalonador, Executor, Astrônomo, Temporizador e Meteorologista (cujas funcionalidades são descritas logo a seguir). Usuário Interface Web Sistema Astra Gerenciador Escalonador Executor Astrônomo Temporizador Meteorologista Driver do Sistema Embarcado Interface da Estação Meteorológica Sistema Embarcado Estação Meteorológica Observatório Figura 2. Arquitetura do observatório remoto e do sistema Astra A Figura 3 mostra um diagrama de colaboração que ilustra as inter-relações entre os módulos componentes do sistema Astra, as quais são descritas após a figura. 212 Interface Web 1 Gerenciador 8 2 4 Temporizador Escalonador Meteorologista 7 6 Executor 5 3 Astrônomo Figura 3. Diagrama de colaboração do sistema Astra • Ligação 1: a Interface Web envia os parâmetros da requisição ao Gerenciador; • Ligação 2: o Gerenciador invoca o Escalonador para executar o escalonamento da requisição; • Ligação 3: o Escalonador invoca o Astrônomo para que ele verifique a consistência astronômica da requisição a fim de confirmar se o astro estará visível na data desejada e horário desejados; • Ligação 4: o Escalonador invoca o Temporizador que irá se programar para despertar o Escalonador na data e na hora de atendimento da próxima requisição; • Ligação 5: o Temporizador invoca o Escalonador quando chegar a data e hora da requisição a ser atendida; • Ligação 6: caso o Escalonador tenha sido despertado para atender uma requisição, ele invoca o Executor, módulo responsável pelo envio de comandos de acionamento do observatório ao driver do sistema embarcado; • Ligação 7: o Executor, ao ser ativado, invoca o Meteorologista para verificar se as condições meteorológicas estão adequadas para a realização da observação; • Ligação 8: o Gerenciador invoca o Meteorologista quando precisar de informações meteorológica para alimentar o banco de dados ou quando um usuário requisitar informações meteorológicas atualizadas; e Uma vez atendida a requisição, o Gerenciador envia uma mensagem de resposta ao usuário, contendo a(s) imagem(ns) associada(s) à requisição. Outros tipos de mensagem também podem ser enviadas, como, por exemplo, para informar o não agendamento de uma requisição ou o re-agendamento de uma requisição previamente escalonada, entre outras. 213 4. Funcionalidade do Sistema Astra 4.1 Submissão e Agendamento de Requisições O sistema possui uma interface Web com um formulário eletrônico com campos de informações que deverão ser preenchidos pela pessoa/instituição que desejar utilizar o observatório. O usuário solicitará a submissão das informações desse formulário, que serão armazenadas em um banco de dados e marcadas como “cadastro pendente”. No momento adequado, o administrador avaliará os cadastros pendentes e decidirá pela sua aprovação ou rejeição. No primeiro caso, ele irá marcar o cadastro como “ativo” e atribuirá uma prioridade ao usuário, enquanto que, no segundo, ele irá excluir as informações do banco de dados. Após, o administrador irá notificar o usuário, o qual poderá acessar o sistema se o seu cadastro tiver sido aprovado. Figura 4. Tela de cadastro de usuário Para a submissão de requisições, o usuário deve efetuar o login no sistema. Uma vez autenticado, ele deverá preencher um formulário eletrônico com informações da sua requisição (nome e coordenadas do astro, data e hora da observação, filtro, etc.). 214 Figura 5. Tela de cadastro de requisição astronômica Após a submissão do formulário, o sistema faz a validação desses campos. Caso todos os campos satisfaçam as condições impostas, a requisição é escalonada e o usuário recebe uma mensagem com a data e o horário nos quais a requisição será atendida. Caso existam problemas de validação, o sistema rejeita a requisição e o usuário recebe uma mensagem com o motivo dessa rejeição. As validações feitas pelo sistema no momento da solicitação da requisição são especificadas a seguir: • O astro deve estar visível no horário escolhido, • O horário escolhido para observação deve ser no período noturno, • No formulário da requisição o usuário poderá fornecer o nome do astro ou as suas coordenadas. Se na data e hora especificadas em uma requisição não houver nenhum outro agendamento, a requisição é agendada. Porém, se já houver uma requisição mais prioritária, a requisição é negada. Caso, na data e hora especificadas, houver uma 215 requisição com prioridade mais baixa, a requisição atual é agendada, e a menos prioritária é re-agendada e sua prioridade incrementada. Porém, se houver uma requisição idêntica quanto à observação a ser realizada (coordenadas, data e hora), é efetuado o agrupamento dessas requisições, sendo que o resultado da observação é enviado a todos os requisitantes. 4.2 Atendimento de Requisições As requisições agendadas são escalonadas e a execução delas é disparada pelo módulo Temporizador. Durante a execução do atendimento de uma requisição, as seguintes funções são realizadas: • Verificação das condições meteorológicas: O módulo Meteorologista faz a verificação da umidade, da velocidade do vento e das temperaturas interna e externa do observatório através de sensores da estação meteorológica ou mesmo de páginas Web com informações meteorológicas. Se os valores medidos estiverem dentro de limites definidos, dá-se continuidade ao atendimento, caso contrário, a requisição é re-agendada e o usuário notificado; • Envio do comando de abertura da cúpula: Se as condições meteorológicas estiverem adequadas, então a cúpula do observatório é aberta. Este comando é enviado pelo módulo Executor ao driver do sistema embarcado; • Envio do comando de calibração: Se esta for a primeira requisição a ser atendida no dia, o telescópio é ligado e faz uma calibração para identificar as coordenadas em que ele se encontra. Caso não seja a primeira requisição, nenhuma ação é tomada; • Envio do comando de localização das coordenadas: O módulo Executor encaminha as coordenadas correntes do astro da requisição que é atendida ao driver do sistema embarcado. Este então aciona os mecanismos de posicionamento do telescópio; • Captura da imagem: O módulo Executor envia ao driver um comando para que a câmera CCD acoplada ao telescópio realize a captura da imagem; e • Envio da imagem por e-mail: O sistema recebe a imagem gerada pela câmera CCD e o módulo Gerenciador gera uma mensagem eletrônica que é enviada ao(s) usuário(s) que submeteu(ram) a requisição atendida. 5. Implementação O sistema foi implementado utilizando as seguintes tecnologias/linguagens: (i) Sistema Operacional Windows ; (ii) Interface Web implementada em linguagem PHP; (iii) Banco de dados Paradox 7; e (iv) Núcleo implementado em linguagem C++. 5.1 Desenvolvimento do Sistema O sistema desenvolvido possui dois processos independentes. O primeiro consiste de um gerador de interface Web para interação com os usuários remotos. O segundo consiste do núcleo do sistema, que é responsável por realizar as tarefas relacionadas à 216 execução das requisições dos usuários. A comunicação entre os dois processos é feita através de sockets. O acesso ao sistema dá-se através da internet, digitando uma URL (Universal Resource Locator) como, por exemplo, http://www.observatorio.univali.br/cgibin/astraWeb.exe/index. Através de mecanismos de roteamento da internet, a primeira parte da URL (http://www.observatorio.univali.br) é avaliada e a solicitação HTTP (Get, Post, Put) chega à máquina destino, onde um servidor Web aguarda conexões no port 80 (padrão do protocolo HTTP). O servidor Web (Apache, por exemplo) recebe a solicitação e invoca o programa especificado na segunda parte da URL (/cgibin/astraWeb.exe). Este programa, denominado aqui de AstraWeb, tem sua execução iniciada a cada nova solicitação HTTP e recebe a última parte da URL, denominada caminho ou path (/index). Com base nesse caminho, esse programa deve tomar as ações necessárias e gerar a resposta adequada à solicitação. Como o programa invocado pelo servidor Web terá múltiplas instâncias em execução, e sendo isso indesejável ao núcleo do sistema Astra, o programa AstraWeb é apenas um interceptador de solicitações Web, e sempre que necessário comunica-se com outro processo independente, o AstraKernel, que compreende o núcleo do sistema Astra. Deste modo, pode haver inúmeras instâncias do AstraWeb em execução, mas uma única instância do AstraKernel. Outro motivo para ter-se dois programas independentes é que o núcleo “acorda” em instantes específicos para executar as requisições já cadastradas ou para armazenar as condições meteorológicas atuais, e não pode depender da existência de solicitações HTTP para executar. Embora o sistema deva executar de maneira independente das solicitações HTTP, ele também deve ser capaz de atendê-las rapidamente, uma vez que há um timeout ou deadline associado às solicitações. Uma solução seria fazer uma varredura periódica. Entretanto, além de imprecisa, essa solução é ineficiente e teria um alto custo de desempenho. Assim, optou-se pela separação do atendimento às solicitações Web e geração das páginas HTML de resposta (responsabilidade do AstraWeb) do processamento e escalonamento das requisições de observação astronômica (responsabilidade do AstraKernel). A comunicação entre esses programas é assíncrona e é realizada através de sockets TCP. O AstraWeb reside na pasta cgi-bin do servidor Web da máquina (normalmente c:\apache\cgi-bin) e é invocado a cada nova solicitação HTTP. Basicamente, ele transmite a solicitação via socket TCP para o núcleo do Astra que realiza o tratamento e envia informações de retorno de volta ao AstraWeb através da mesma conexão TCP. Deste modo, uma única instância do AstraKernel permanece sempre executando. Para evitar a verificação periódica de requisições TCP, o núcleo do Astra cria um socket servidor (port 5000) que é ativado apenas quando há uma nova solicitação. Se houver muitos usuários conectados à internet gerando solicitações ao sistema, pode ser inaceitável haver um único núcleo atendendo tais requisições. Portanto, assim como em implementações normais de socket servidores, cada conexão aceita pelo núcleo do Astra cria uma nova thread específica para atendê-la. 217 5.2 Algoritmos Usados no Escalonamento de Requisições No sistema Astra, o agendamento das requisições de observações astronômicas faz uso de características de diversos algoritmos de escalonamento tipicamente adotados em sistemas computacionais [Silberchatz, 2000] e [Cancian, 2000]. Basicamente, ele tem que ser capaz de lidar com múltiplas requisições e agendar corretamente a execução dessas requisições com base em critérios específicos. Em especial, destaca-se que cada usuário do sistema tem um nível de prioridade definido pelo administrador, o qual é considerado durante o escalonamento. No caso de mais de uma requisição de usuários com mesma prioridade, o sistema os atende por ordem de chegada (algoritmo FIFO First-In, First-Out). No caso de existir uma requisição com tempo exato para atendimento (ex. eclipse solar), é usado o algoritmo EDF (Earliest Deadline First). Também são usados algoritmos específicos para minimizar os movimentos do telescópio. Como o telescópio movimenta-se de modo semelhante a um cabeçote de leitura/gravação de um acionador de disco rígido, em algum momento que o telescópio estiver fazendo um trajeto para obter uma imagem, ele poderá executar outra requisição que esteja em seu caminho. Esse gerenciamento utiliza características dos algoritmos SSTF (Smallest Seek Time First) e SCAN. 6. Testes e Validações Os testes do núcleo do Astra foram realizados fazendo simulações com os drivers, gerando valores aleatórios de condições meteorológicas. A interação com a parte física do observatório também foi simulada, gerando mensagens para informar o administrador quando a cúpula estivesse aberta ou fechada. Desta forma, a requisição era submetida ao sistema, os drivers simulados e as consistências realizadas. Na figura 6 é mostrada a tela do sistema em que foram realizados os testes dos drivers, da temporização, envio de e-mail ao usuário e simulação de visualização da imagem do telescópio. Figura 6. Tela do sistema de teste dos drivers da estação e do observatório 218 Já os testes ao acesso ao sistema Astra envolveram duas etapas distintas: (i) Teste de execução do AstraWeb a partir de um browser e a geração de uma página HTML de resposta; e (ii) comunicação via socket TCP entre os programas AstraWeb e o AstraKernel. Para a realização do primeiro teste, iniciou-se o servidor Apache na máquina que continha a aplicação AstraWeb. Com o servidor executando, invocou-se a aplicação através de navegadores Internet Explorer, tanto da própria máquina quanto de outras máquinas conectadas à internet. Em todos os casos obtinha-se, na janela do navegador utilizado, as páginas HTML geradas pelo AstraWeb. A Figura 7 apresenta uma parte da tela do sistema onde pode-se ver o resultado de uma solicitação no navegador, com destaque à URL digitada. Figura 7. Acesso ao sistema Astra 219 Em relação ao segundo teste, foram criadas duas aplicação (cliente e servidor) que se comunicam via socket, No exemplo abaixo, o cliente envia uma mensagem ao servidor, que identifica o cliente e recebe a mensagem, conforme Figura8. Figura 8. Aplicação cliente e servidor Após todos os testes comprovando o funcionando isolado de seus módulos, foi realizada a integração do sistema, que mostrou-se totalmente funcional. Assim, o Astra já pode ser utilizado para gerenciar requisições remotas a um observatório e comandar os dispositivos de automação desse observatório para que seu telescópio capture as imagens requisitadas. Para sua disponibilização final, aguarda-se apenas a aquisição dos demais componentes físicos (cúpula, câmera CCD, sensores, motores, etc) para a construção do observatório. 7. Considerações Finais Este artigo apresentou o sistema Astra, que é um sistema Web para gerenciamento de acesso remoto a um observatório astronômico. Foram abordados os principais aspectos dos requisitos de seu funcionamento e testes para sua validação. O desenvolvimento do sistema Astra está concluído e encontra-se totalmente funcional, embora melhoramentos e a inclusão de novas funcionalidades, como a utilização remota em tempo real do observatório, tenham sido detectados e devem ser implementados no futuro. O sistema Astra faz parte de um projeto maior, que visa a construção de um observatório que possa operar autonomamente. Assim, apesar de concluído, o Astra depende que outros projetos paralelos, como os que implementam o sistema embarcado para controle da estação meteorológica e da cúpula do observatório sejam também concluídos e que o observatório seja efetivamente construído, para que o sistema seja disponibilizado. 220 Referências Boczko, R. (1984) “Conceitos de Astronomia”. São Paulo, E. Blücher. Silberchatz, A.; Galvin, P.B. (2000) “Sistemas Operacionais Conceitos”. São Paulo, Prentice Hall. Cancian, R. L. (2000) “Avaliação de Desempenho de Algoritmos de Escalonamento e Tempo Real para o Ambiente de Multicomputador CRUX”. 2001. 174 p. Dissertação de Mestrado em Ciência da Computação – Universidade Federal de Santa Catarina, Florianópolis. CARA (2002) “Center for Astrophysical Resourse in Antarctica”, Disponível em: <http://astro.uchicago.edu>. Acesso em: 28 de julho de 2005. EOS (2002) “Robotics Observatory Control System: the complete autonomous robotic control system”, Queanbeyan, Electro Optic Systems Pty Limited. Heil, Maiara (2005) “Sistema Web para Gerenciamento de Requisições de um Observatório Remoto”. Mike & Lynn Rice (2005) “New México Skies”. Disponível <http://www.nmskies.com/weather.html>. Acesso em: 28 de julho de 2005. em: Observatórios Virtuais (2005) “Observatórios Virtuais: Projeto Educacional na área de Ciências envolvendo instituições de pesquisa em Astronomia e escolas de ensino médio e fundamental”. Disponível em: <http://www.observatoriovirtual.pro.br/ index.htm>. Acesso em: 28 de julho de 2005. Társia, R. D. (1993) “Astronomia Fundamental”, Belo Horizonte, UFMG. 248 p. Werneck, L. S., Nader, R. V. e Campos, J. A. S. (2004) “O Telescópio Remoto do Observatório do Valongo”, In: Boletim da Sociedade Astronômica Brasileira, Editado por Vera A. Fernandes Martin, Rio de Janeiro, UFRJ, 2004. p. 189-189.