Motivação - inf.ufg.brvagner/courses/mobilecomputing/docs/MOCA-Overview.pdf · Apoio à...
Transcript of Motivação - inf.ufg.brvagner/courses/mobilecomputing/docs/MOCA-Overview.pdf · Apoio à...
1
MoCA: Uma Arquitetura para o
Desenvolvimento de Aplicações Sensíveis ao
Contexto para Dispositivos MóveisVagner Sacramento
Desenvolvida no: Laboratory for AdvancedCollaboration – PUC Rio, Brazil
Motivação
• Um desafio para a computação móvel distribuída é dispor de aplicações capazes de perceber e explorar as características dinâmicas do ambiente em que estão inseridas
• Para isso é fundamental a existência de uma infraestrutura que permita a essas aplicações tirar proveito dessas características e adaptar seu comportamento de acordo com o contexto percebido
2
Visão Geral
Cliente3
Servidor da Aplicação
Cliente1
MoCAServiços de Provisão de
Contexto
MoCAServiços de Provisão de
Contexto
Servidor da Aplicação
Cliente2
• MoCA (Mobile Collaboration Architecture) é uma arquitetura que oferece suporte ao desenvolvimento de aplicações distribuídas sensíveis ao contexto que envolvem dispositivos móveis interconectados através de redes sem-fio infra-estruturadas
Visão Geral
• Os serviços disponibilizados pela MoCA provêem meios para coletar, armazenar e processar informações de contexto computacional dos dispositivos e da rede sem fio
• Além disso, MoCA engloba um conjunto de API's para o desenvolvimento de aplicações que interagem com esses serviços como consumidores de informações de contexto.
3
Infra-estrutura da MoCA
DS CIS CS
M
LIS
Server Proxy
API
LegendDS - Discovery ServiceCS - Configuration ServiceCIS - Context Information ServiceLIS - Location Inference ServiceM - Monitor
Client
Core Services
Application
FW API
SRMCOPSMMS OptServ
Visão Geral
Rede sem-fio
Rede fixa
4
Visão Geral
Rede sem-fio
Rede fixa
Visão Geral - Monitor
• coleta e divulga as informações de contexto do dispositivo e da rede sem fio
Monitor
Rede sem-fio
Rede fixa
CIS
5
Visão Geral - Monitor
• Daemon executando em um dispositivo móvel;• Periodicamente coleta e envia para o CIS as
informações do contexto computacional do dispositivo móvel, por exemplo:– Força do sinal recebida de todostodos APs que estão no seu raio de
cobertura;– Uso da CPU, memória e energia disponível;– Endereço MAC, IP e Ponto de Acesso corrente;– Tipo de dispositivo;– Outros...
• Além do envio periódico, o monitor notifica o CIS sobre qualquer mudança do endereço IP ou AP corrente do dispositivo (por exemplo, roaming)
Visão Geral - Monitor
6
Visão Geral - CIS
• Recebe, armazena e processa as informações de contexto • Aplicações clientes podem fazer consultas síncronas e
assíncronas• Aplicações se registram informando o mac-addr do dispositivo e uma expressão de interesse. Exemplo
Subject=”02:DA:20:3D:A1:2B”, Expression=“Roaming = True” OR “FreeMem < 15%” OR “CPU > 90%”;
Monitor
CIS
Rede sem-fio
Rede fixa
Visão Geral - CIS
• Uso da CPU (entre 0 e 100%) (CPU) • Nível de energia disponível (entre 0 e 100%) (EnergyLevel) • Freqüência das notificações (segundos) (AdvertisementPeriodicity) • Endereço MAC do ponto de acesso (AP) corrente (APMacAddress) • Total de memória disponível em kbytes (FreeMemory) • Tempo desde a última informação de contexto (ms) (DeltaT) • Indicação se o dispositivo está conectado à rede (OnLine) • Indicação se o dispositivo muda seu IP (IPChange) • Indicação se o dispositivo muda o AP (APChange) • Indicação se o dispositivo implementa “roaming” (Roaming)
• Variáveis de contexto observadas
+ Potência dos sinais observados de todos os AP’s
7
Visão Geral - LIS
• Serviço responsável por inferir a localização aproximada de um dispositivo móvel
Monitor
CIS LIS
Rede sem-fio
Rede fixa
• Infere a localização com base na comparação da intensidade de sinais de RF recebida de vários Pontos de Acesso (APs) 802.11
• Em uma planta baixa do prédio, marca-se as área/localizações lógicas;
• Para cada área, mede-se o padrão de sinais em várias direções e situações
• Infere-se a localização aproximada do dispositivo através de análise de similaridade dos padrões de sinal
• Vantagem: apenas requer rede 802.11
Serviço de Localização Indoor (802.11)
8
Location Inference Service (LIS) - Redes 802.11
• LIS é um serviço para a inferência aproximada da localização de dispositivos com interface 802.11 em ambientes indoor.
• Envolve duas etapas:
Mapeamento/Calibração:• Mede-se a intensidade de sinal proveniente de todos os APs 802.11
em diversos Pontos de Referência (RP), que são armazenadas em um arquivo XML
• A cada ponto de RP associa-se uma coordenada ou nome simbólico. Define-se as Regiões Simbólicas na àrea de interesse
Inferência:• Usando a diferença entre intensidade de sinal medida (também de
todos os APs) e as intensidades armazenadas, estima-se a distância que o dispositivo está dos n RP mais próximos,
• A fim de compensar variações do sinal, usa-se várias medidas e emprega-se um algoritmo estocástico (que compara probabilidades)
{-59,-80,-49} {-63,-85,-57} {-42,-60,-60} {-30,-45,-64}
{-90,-75,-42} {-92,-72,-53} {-82,-50,-89} {-55,-35,-78}
{-75,-78,-68} {-76,-77,-74} {-54,-55,-70}
Room 501 Room 502 Room 503 Room 504
Room 505 Room 506 Room 507 Room 508
Corridor
Access Point
Reference Points {Signal Pattern}
Device
Location Inference Service (LIS) 802.11 Networks
{-60,-78,-48}
Inferred Device Location:Inferred Device Location:Room 501
9
Access Point
Reference Points {Signal Pattern}Device
{-59,-80,-49} {-63,-85,-57} {-42,-60,-60} {-30,-45,-64}
{-90,-75,-42} {-92,-72,-53} {-82,-50,-89} {-55,-35,-78}
{-75,-78,-68} {-76,-77,-74} {-54,-55,-70}
Inferred Device Location:Inferred Device Location:
Room 501 Room 502 Room 503 Room 504
Room 505 Room 506 Room 507 Room 508
Corridor
Room 501CorridorRoom 506CorridorRoom 503CorridorRoom 508
{-60,-78,-48}
{-75,-74,-62}
{-95,-74,-52}
{-75,-74,-72}
{-45,-58,-62}
{-55,-54,-72}
{-55,-34,-72}
Location Inference Service (LIS)
Visão Geral - Aplicação
Monitor
CIS LIS
Servidor
Cliente
Rede sem-fio
Rede fixa
• As aplicações podem consultar estas informações de forma síncrona ou assíncrona
10
Visão Geral - Consultas
• Áreas cobertas• Dispositivos rastreados• Área de um dispositivo• Dispositivos em uma área
LIS
• Consultas síncronas
CIS • Todas as informações de um dispositivo
Visão Geral - Consultas
• Um dado dispositivo muda de área• Dispositivo entra em uma dada área• Dispositivo deixa uma dada área
LIS
• Consultas assíncronas– Interface de eventos. Permitem registrar interesse em estados
específicos das variáveis de contexto
CIS• Expressões lógicas relacionando
variáveis observadas:(EnergyLevel < 30) and (FreeMemory < 64)
11
Visão Geral - Aplicação
Monitor
CIS LIS
Servidor
Cliente 1
CS
DS
Monitor Cliente n
Rede sem-fio
Rede fixa
Implementação
• Os serviços e APIs da MoCA foram desenvolvidos em Java
• Exceto o Monitor que foi desenvolvido em ANSI C
• Até o momento existe uma implementação completa do Monitor para Windows XP e uma versão protótipo para Windows CE/Mobile
• Disponível em http://www.lac.inf.puc-rio.br/moca
– Serviços
– API’s
– Recursos auxiliares
12
Apoio à programação
• O conjunto de API's para desenvolvimento de aplicações compreende três grupos– Interfaces de comunicação síncrona e
assíncrona (baseada em eventos) via UDP e TCP
– Interfaces de comunicação com os serviços básicos da arquitetura
– Interfaces que facilitam o desenvolvimento de aplicações baseadas na arquitetura cliente/servidor.
API LIS-Client
1 LocationInferenceService lis = null;2 lis=new LocationInferenceService(“localhost”,“55021”,“55020”,“5000”,“TCP”);3 allregions = lis.getAtomicRegions();4 String [ ] areas = new String [allregions.length];5 for (int i=0; i < allregions.length; i++) areas [i] = allregions [i].getName();6 alldevices = lis.getDevices();7 region = lis.getRegion(‘‘00:02:2D:A5:06:46’’);8 devices = lis.getDevices(‘‘Sala 201’’);9 DeviceListen deviceListen = new DeviceListen();10 lis.subscribe(‘‘00:02:2D:A5:06:47’’, deviceListen);11 RegionListen regionListen = new RegionListen();12 lis.subscribe(‘‘Sala 202’’, regionListen);
Consulta síncrona ao LIS
• regiões simbólicas mapeadas no serviço (linha 3)
• dispositivos sendo acompanhados pelo serviço (linha 6)
• Região simbólica em que se localiza o dispositivo de endereço MAC “00:02:2D:A5:06:46” (linha 7)
• dispositivos que se encontram na região simbólica de nome “Sala 201” (linha 8)
13
API LIS-Client
1 LocationInferenceService lis = null;2 lis=new LocationInferenceService(“localhost”,“55021”,“55020”,“5000”,“TCP”);3 allregions = lis.getAtomicRegions();4 String [ ] areas = new String [allregions.length];5 for (int i=0; i < allregions.length; i++) areas [i] = allregions [i].getName();6 alldevices = lis.getDevices();7 region = lis.getRegion(‘‘00:02:2D:A5:06:46’’);8 devices = lis.getDevices(‘‘Sala 201’’);9 DeviceListen deviceListen = new DeviceListen();10 lis.subscribe(‘‘00:02:2D:A5:06:47’’, deviceListen);11 RegionListen regionListen = new RegionListen();12 lis.subscribe(‘‘Sala 202’’, regionListen);
Consulta assíncrona ao LIS• a aplicação registra interesse em eventos de mudança de área do dispositivo de
endereço MAC “00:02:2D:A5:06:46” (linhas 9 e 10)
• e eventos em que qualquer dispositivo entre ou saia da “Sala 202” (linhas 11 e 12)
Recursos auxiliares
• O Monitor Simulator (Monitor/Sim) simula o comportamento do Monitor em execução em um dispositivo móvel, enviando para o CIS dados de contexto obtidos de um arquivo de descrição.
monitor.scanInterval=1000 monitor.repeating=true cis.server.host=localhostcis.monitor.port=55010 file1=conf/Scan-Banco_01.txt interval1=5000 file2=conf/Scan-EspacoAberto.txt interval2=10000 file3=conf/Scan-Mesa_03.txt interval3=20000
loop
14
Interfaces
Para ampliar a usabilidade dos serviços MoCA’s duas interfaces adicionais foram desenvolvidas personalidades
• MoCA/MAX – para o uso com o framework Jade• MoCA/WS – para uso com Web Services
MoCA Core Services
MoCA/MAX MoCA/WS
Jade Application Java Application C# Application
SOAP/XMLFIPA Cm ECI(Pub/Sub)
Extensões da MoCA
Ubiquitous Guide - uGuide
• Cliente faz login• icone aparece no task-bar• Ao entrar em uma região castrada,
aparece um pop-up com o link correspondente,
• Página pode ser aberta em qualquer browser
• Possivelmente, usuário entra em região não cadastrada
15
Trabalho em andamento
• Serviço de privacidade de contexto• Framework de adaptação de conteúdo (proxy)• Mecanismo para detecção de estabilidade de
informações básicas de contexto• Monitor/CE e uGuide para PDA’s• Flexibilização do CIS com novos tags (ex. taxa de
transmissão, GPS, etc.) • Mecanismo para medir qualidade de rede• Integração do LIS com GPS• Ferramenta para gerenciamento de contexto
evolucionário e heterogêneo• Framework para workflows sensíveis a contexto para m-
commerce
Conclusões
• Sistema com 2 anos de uso• Experiência positiva com o desenvolvimento de
sistemas pelos alunos da PUC.– Rapidez– Facilidade
16
Projeto MoCAhttp://www.lac.inf.puc-rio.br/moca
Contatos– [email protected]– Ricardo [email protected]– José Viterbo F.
[email protected]– Markus Endler (coordenador do projeto)
Informação adicional
LIS – Acesso Síncrono
• Manipuação da/Consulta sobre a hierarquia de regiões Simbólicas:– Region[] getAtomicRegions()– void add(Hierarchy hierarchy)– void remove(String hierarchyId)– Hierarchy getHierarchy(String hierarchyId)– List getAllHierarchies()
• Consultas sobre Dispositivos em região e Região de um Dispositivo:– String getRegion(String deviceId, String hierarchyId)– String[] getDevices()– String[] getDevices(String regionId)
17
LIS – Acesso Assíncrono
• Aplicação precisa instanciar um RegionListener e/ou um DeviceListener:– void subscribe(String regionId, RegionListener listener)– onDeviceEntered(String regionId, String deviceId)– onDeviceExited(String regionId, String deviceId)
• void unsubscribe(String regionId, RegionListenerlistener)
• void subscribe(String deviceId, DeviceListener listener)– onRegionChanged(String deviceId, String regionId)– void unsubscribe(String deviceId, DeviceListener listener)
• void unsubscribe(String deviceId, DeviceListenerlistener)
• Cada vez que um disp. entra ou deixa uma área o LIS notifica todas as aplicações registradas através do método onRegionChanged, informando o regionID e deviceID