Computa - PowerPoint PPT Presentation

About This Presentation
Title:

Computa

Description:

... Mostra atrav s de uma p gina Web quais professores est o dentro/fora do pr dio Utiliza o Context Toolkit Utiliza o iButton para detectar estado Problemas ... – PowerPoint PPT presentation

Number of Views:98
Avg rating:3.0/5.0
Slides: 30
Provided by: mbmbm
Category:
Tags: computa | ibutton

less

Transcript and Presenter's Notes

Title: Computa


1
Computação Sensível a Contexto
  • Pesquisa desenvolvida pelo Georgia Institute of
    Technology

2
Histórico da Computação Sensível ao Contexto
  • Discutida pela primeira vez em 1994 - Xerox
    Corporation
  • Software que se adapte ao local em que estiver
    sendo utilizado, ao conjunto de pessoas e objetos
    próximos, e também às mudanças deles ao longo do
    tempo
  • Active Badges da Olivetti (1992) - primeiro
    trabalho de pesquisa nessa área
  • Atualmente as pesquisas mais interessantes são
    desenvolvidas no GeorgiaTech

3
O que é contexto?
  • Contexto é qualquer informação que possa ser
    usada para caracterizar a situação de uma
    entidade
  • Entidade é uma pessoa, lugar ou objeto relevante
    à iteração entre usuário e aplicação
  • Utilizando-se o contexto pode-se aumentar as
    formas de troca de informações entre o usuário e
    o computador

4
Categorias de Contexto
  • Pode-se dividir em duas categorias
  • Primários (mais importantes na prática)
  • Local
  • Identidade
  • Atividade
  • Tempo
  • Secundários (indexados pelos primários)
  • Telefone (derivado da identidade)
  • Clima (derivado do local tempo)

5
O que é Computação Sensível a Contexto?
  • Um sistema é considerado sensível a contexto se
    ele utiliza o contexto para fornecer
    informações/serviços relevantes para o usuário
  • Pode suportar 3 tipos de características
  • Apresentação
  • Execução
  • Relacionamento

6
Como desenvolver uma aplicação sensível a
contexto?
  • Context Toolkit
  • Widgets
  • Aggregators
  • Interpreters
  • Desenvolvido em Java

http//www.cc.gatech.edu/fce/contexttoolkit
7
Aplicação In/Out Board
  • Mostra através de uma página Web quais
    professores estão dentro/fora do prédio
  • Utiliza o Context Toolkit
  • Utiliza o iButton para detectar estado

http//fire.cc.gt.atl.ga.us/inout/
8
Problemas In/Out Board
  • Ação explícita do usuário
  • Único ponto de verificação
  • Soluções
  • Sensores não intrusivos
  • Combinação de Sensores

http//www.ibutton.com
9
Aplicação CybreMinder
  • Post-it digital
  • Entrega baseada em contexto
  • Quando ocorre uma situação especificada
  • Quando expira o limite de tempo
  • 3 tipos de entrega
  • Aviso na tela
  • E-mail
  • SMS

10
Exemplos - CybreMinder
Situação Linguagem Natural CybreMinder
Tempo 945 a.m. Expiration field 945 a.m.
Local Previsão de chuva e Bob está saindo de casa CityAtlanta, WeatherForecastrain UsernameBob, LocationBobs front door
Co-local Sally e seu colega estejam no mesmo local UsernameSally, Location1 UsernameBob, Location1
Complexa Preço das ações de X é maior que 50, Bob está sozinho e tem tempo livre StockNameX, StockPricegt50 UsernameBob, Location1 Location1, OccupantSize1 UsernameBob, FreeTimegt30
Complexa Sally está em seu escritório, tem algum tempo livre e seu amigo não está ocupado UsernameSally, LocationSallys office UsernameSally, FreeTime60 UsernameTom, ActivityLevelLow
11
Problemas - CybreMinder
  • Determinação de situações é complexa
  • Possibilidade de criação de situações que não
    podem ser detectadas
  • Poucas formas de recebimento de mensagens
  • Apesar dos resultados promissores, aparentemente
    o projeto foi descontinuado

12
O que é o Context Toolkit?
  • Conjunto de classes desenvolvidas para facilitar
    a criação de aplicações sensíveis ao contexto
  • Feito em Java
  • Utiliza o mesmo conceito de widgets para GUIs

13
Estrutura do Context Toolkit
14
Componentes do Context Toolkit
  • BaseObject
  • Context Widgets
  • Context Servers (Aggregators)
  • Context Interpreters

15
Base Object
  • Utilizado como base para os demais objetos do
    toolkit (todos são derivados do Base Object)
  • Oferece suporte à comunicação entre componentes
    do toolkit e entre aplicações e componentes
  • Normalmente aplicações criam uma instância do
    Base Object e os componentes são subclasses
  • Pode funcionar tanto como cliente quanto como
    servidor
  • Comunicação feita em XML utilizando HTTP como
    protocolo de rede

16
Como usar o Base Object
  • Construtores
  • public BaseObject(int serverPort)
  • public BaseObject( String clientProtocol,
  • String serverProtocol,
  • int serverPort,
  • String clientEncoder,
  • String serverEncoder)
  • Como XML e HTTP são ineficientes, é possível
    especificar classes que implementem outros
    protocolos

17
Como usar o Base Object
  • // create BaseObject running on port 7777
  • BaseObject server new BaseObject(7777)
  • // request the version number
  • DataObject dataVersion server.getVersion("localh
    ost",5555,"PersonPresence_here")
  • String versionError new Error(dataVersion).getEr
    ror()
  • if (versionError.equals(Error.NO_ERROR))
  • System.out.println("Version is
    (String)version.getDataObject(WPersonPresence.VERS
    ION).getValue().firstElement()
  • else
  • System.out.println("Error "versionError)
  • DataObject dataPing server.pingComponent("localh
    ost", 5555,"PersonPresence_here")
  • // ping
  • String pingError new Error(dataPing).getError()
  • System.out.println("Ping results "pingError)

18
Context Widgets
  • Responsáveis por separar os detalhes dos sensores
    das informações geradas por eles
  • Description auto-descrição (tipo de contexto
    captado, callbacks e serviços oferecidos)
  • Polling devolve o estado atual
  • Subscription componentes podem se alistar nas
    funções callbacks para receberem eventos na
    mudança de estado do widget
  • Storage armazena informações históricas de
    contexto
  • Services serviços que o widget pode fornecer

19
Como usar um Context Widget
Uma aplicação pode
  • assinar (subscribe)
  • cancelar assinatura (unsubscribe)
  • perguntar (poll)
  • atualizar e perguntar
  • colocar dados
  • obter lista de callbacks
  • obter lista de atributos
  • obter lista de serviços
  • obter dados históricos
  • executar serviços (síncrono e assíncrono)

20
Como usar um Context Widget - Subscribing
  • public Error subscribeTo(Handler handler,
  • int localPort,
  • String localId,
  • String remoteHost,
  • int remotePort,
  • String remoteId,
  • String callback,
  • String url,
  • Conditions conditions,
  • Attributes attributes)

21
Como usar um Context Widget - Subscribing
  • // create BaseObject running on port 7777
  • BaseObject server new BaseObject(7777)
  • Attributes subAtts new Attributes()
  • subAtts.addAttribute(WPersonPresence.USERID)
  • subAtts.addAttribute(WPersonPresence.TIMESTAMP)
  • Conditions subConds new Conditions()
  • subConds.addCondition(WPersonPresence.USERID,
    Storage.EQUAL,"16AC850600000044")
  • Error error server.subscribeTo(this, 7777,
    "testApp", "localhost", 5555,
    "PersonPresence_here",
  • WPersonPresence.UPDATE,
    "presenceUpdate", subConds,subAtts)
  • System.out.println("Subscription with valid
    attributes/conditions "error6.getError())

22
Como usar um Context Widget - Handler
  • public DataObject handle(String callback,
    DataObject data) throws InvalidMethodException,
    MethodException
  • if(callback.equals("presenceUpdate"))
  • AttributeNameValues atts new
    AttributeNameValues(data)
  • AttributeNameValue timeAtt atts.getAttributeNa
    meValue(WPersonPresence.TIMESTAMP)
  • String time (String)timeAtt.getValue()
  • System.out.print(time"\n")

23
Context Servers
  • Responsáveis por agregar todo o contexto sobre
    uma pessoa, entidade, objeto ou lugar
  • Assina todos os widgets relevantes utilizando as
    opções importantes para a entidade considerada
  • Serve de mediador entre a aplicação e os widgets
  • As aplicações devem preferencialmente se
    comunicar com servers do que com widgets

24
Como usar Context Servers
  • public Server(String clientProtocol,
  • String serverProtocol,
  • int serverPort,
  • String clientEncoder,
  • String serverEncoder,
  • String storageClass,
  • String id,
  • WidgetHandles widgets)
  • Normalmente os Servers utilizam JDBCMySQL como
    mecanismo de armazenamento. Isso pode ser
    substituído fornecendo-se uma string com o nome
    da classe que implementa armazenamento no
    construtor.

25
Context Interpreters
  • Transformam uma forma de contexto em outra. Não
    armazenam dados
  • nome -gt e-mail
  • número de pessoas, direção em que olham, nível de
    ruído, horário -gt está ou não sendo realizada uma
    reunião
  • Description fornecem uma auto-descrição
    (contextos de entrada e contextos de saída)
  • Interpretation serviço de mudança de um tipo de
    contexto em outro

26
Como usar Context Interpreters
  • DataObject askInterpreter(String remoteHost,
  • int remotePort,
  • String remoteId,
  • AttributeNameValues
    data)
  • AttributeNameValues data new AttributeNameValues
    ()
  • data.addAttributeNameValue(IIButton2Name.IBUTTONID
    , "ABCDEF")
  • DataObject interpreted askInterpreter("localhost
    ", 8888,IIButton2Name.CLASSNAME,data)
  • AttributeNameValues newData new
    AttributeNameValues(interpreted)
  • System.out.println("new data is "newData)

27
Demais Classes
  • Necessárias
  • DataObject
  • Error
  • Attribute
  • AttributeFunction
  • AttributeNameValue
  • Condition
  • Retrieval
  • RetrievalResults
  • Callback
  • Subscriber
  • WidgetHandle
  • Úteis
  • Constants
  • ContextTypes
  • ConfigObject
  • Configuration
  • XMLURLReader

28
ToDo Básico
  • Resource Discovery
  • Descoberta de sensores dada a função executada,
    sem especificação de host, porta, nome, etc.
  • Visualização
  • Existindo o Resource Discovery, permitir a
    visualização dos componentes existentes, quem se
    comunica, etc.
  • Condições
  • Atualmente só é possível especificar as condições
    com AND. Ampliar para OR e NOT

29
ToDo Avançado
  • Suporte a Ambigüidade
  • Desenvolver o suporte à ambigüidade das
    informações geradas pelos sensores. Permitir
    condensamento de informações de mais de um
    sensor, transmissão da precisão da informação
    além do contexto, etc.
  • Segurança/Privacidade
  • Desenvolver suporte à privacidade quando as
    informações de contexto transmitidas forem
    particulares/sensíveis.
Write a Comment
User Comments (0)
About PowerShow.com