Motivação - inf.ufg.brvagner/courses/mobilecomputing/docs/MOCA-Overview.pdf · Apoio à...

17
MoCA: Uma Arquitetura para o Desenvolvimento de Aplicações Sensíveis ao Contexto para Dispositivos Móveis Vagner Sacramento [email protected] Desenvolvida no: Laboratory for Advanced Collaboration – 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

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

[email protected]

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)

[email protected]

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