sloc: sistema para servic¸os baseados na localizac¸ao˜ · meus sonhos. gostaria tambem de...

96
SLOC: Sistema para Servic ¸ os Baseados na Localizac ¸˜ ao Lu´ ıs Ricardo da Costa Carvalho Dissertac ¸˜ ao para obtenc ¸˜ ao do Grau de Mestre em Engenharia de Telecomunicac ¸˜ oes e Inform´ atica Orientador: Prof. Paulo Jorge Pires Ferreira uri Presidente: Prof. Rui Jorge Morais Tomaz Valadas Orientador: Prof. Paulo Jorge Pires Ferreira Vogais: Prof. Rui Ant´ onio dos Santos Cruz Maio de 2015

Upload: lykien

Post on 09-Dec-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

SLOC: Sistema para Servicos Baseados na Localizacao

Luıs Ricardo da Costa Carvalho

Dissertacao para obtencao do Grau de Mestre em

Engenharia de Telecomunicacoes e Informatica

Orientador: Prof. Paulo Jorge Pires Ferreira

Juri

Presidente: Prof. Rui Jorge Morais Tomaz ValadasOrientador: Prof. Paulo Jorge Pires FerreiraVogais: Prof. Rui Antonio dos Santos Cruz

Maio de 2015

Agradecimentos

Agradeco a todos os fundadores, dirigentes e colaboradores do Instituto Superior Tecnico por me te-

rem proporcionado a oportunidade de realizar o Mestrado Bolonha em Engenharia de Telecomunicacoes

e Informatica.

Gostaria de agradecer ao meu orientador de dissertacao Prof. Dr. Paulo Jorge Pires Ferreira, por

toda a sua disponibilidade, apoio e partilha de conhecimentos que fizeram com que esta dissertacao

tenha marcado um ponto de viragem na minha vida a nıvel de evolucao academica e profissional.

A todos os professores do IST, um grande obrigada pelo trabalho desenvolvido. Em especial ao

Prof. Dr. Rui Cruz que contribuıu significativamente na minha formacao.

Gostaria de agradecer aos meus pais, Fatima e Luıs Carvalho por todo carinho, toda a forca e

incentivo que me deram ao longo destes anos, pelo sacrifıcio que fizeram para que conseguisse concluir

o meu mestrado, obrigado por estarem presentes, sao tudo. Para a minha irma Andreia, dedico-lhe um

grande obrigado por todo o apoio, companheirismo e encorajamento para continuar a perseguir os

meus sonhos. Gostaria tambem de agradecer a minha famılia em geral, todo o apoio e forca que me

deram, mas em especial aos meus avos por serem uma licao de vida e por desejarem sempre o melhor

para mim.

Gostaria de agradecer em especial a Carina Ferreira, toda a sua compreensao nos momentos mais

difıceis, o apoio incondicional que me deu desde o inıcio, toda a forca e coragem para nao desistir e

principalmente todo o amor e vontade de me ver feliz, sem ela nao teria conseguido.

Para o Ricardo Joao, Frederico Azevedo, Bernardo Santos, Ines Fernandes, Ines Castelo, Nuno

Fernandes e Soraia Meneses Alarcao, meus companheiros de faculdade e acima de tudo meus amigos,

um obrigado por me ajudarem a ultrapassar muitos dos obstaculos desta vida academica. Obrigado

pela troca de ideias e principalmente pela amizade ao longo destes anos.

Para todos os meus grandes amigos, Lino Bernardo, Rui Batista, Carlos Santos, Tiago Nunes, Vania

Azinheira, Susana Silva, Joana Esteves, Ines Vaz e Teresa Pereira um obrigado especial por todos estes

anos de apoio e por estarem presentes nos bons e maus momentos, sao famılia.

Obrigado a todos por contribuirem para este sentimento de conquista.

Resumo

Atualmente, a localizacao de pessoas, animais e objetos e cada vez mais uma componente importante

da informacao de contexto, que associada ao crescimento exponencial dos dispositivos moveis cria a

oportunidade de desenvolver um conjunto alargado de aplicacoes de valor acrescentado com base na

localizacao dos seus utilizadores. Os sistemas de localizacao sao importantes e necessarios para que,

atraves de tecnologias de posicionamento, Global Positioning System (GPS), Wireless fidelity (Wi-Fi)

e Bluetooth, possam fornecer informacao sobre a localizacao do utilizador. Nesta dissertacao sera

descrito o state of the art das tecnologias e tecnicas de posicionamento, sistemas de localizacao e

servicos baseados na localizacao, apresentando os conceitos fundamentais e os trabalhos com maior

destaque sobre o tema; sera tambem descrita a solucao para o sistema desenvolvido (SLOC), assim

como a respetiva avaliacao do sistema. O sistema SLOC e um sistema de localizacao baseado na

proximidade que utiliza a tecnologia de posicionamento Wi-Fi e tem como objetivo, disponibilizar uma

plataforma/middleware que dara suporte a um conjunto alargado de aplicacoes e servicos baseados na

localizacao. O sistema SLOC faz a separacao entre as aplicacoes e a tecnologia de posicionamento,

por forma a simplificar o desenvolvimento das aplicacoes por parte dos programadores. Para avaliar a

eficacia e eficiencia do sistema foi desenvolvido um conjunto de aplicacoes baseadas na localizacao.

Palavras Chave

Sistemas de Localizacao, Dispositivos Moveis, Wi-Fi, Tecnicas de Posicionamento, Aplicacoes.

iii

Abstract

Currently, the location of people, animals and objects has become an important component of context

information which allied with the exponential growth of mobile devices opens up the opportunity to create

a wide range of value-added application based on location of its users. Location systems are important

and required so that, by GPS, Wi-Fi and Bluetooth positioning tecnologies, may provide location infor-

mation to the user. This dissertation addresses the current state of the art of positioning tecnologies and

techniques, location systems and location-based services, presenting the fundamental concepts and the

most featured related works. It is also described the solution for the developed system (SLOC), as well

as the respective evaluation. The SLOC system is a location system based on the proximity technique

that uses positioning technology Wi-Fi and aims to provide a platform/middleware that supports a wide

range of applications and location-based services. The SLOC system makes the separation between

the applications and the positioning technology to simplify application development by programmers. To

evaluate the effectiveness and efficiency of the system we developed a set of location-based applicati-

ons.

Keywords

Location Systems, Mobile Devices, Wi-Fi, Location-Sensing Techniques, Applications.

v

Conteudo

1 Introducao 1

1.1 Motivacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Contribuicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5 Estrutura do Documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Contexto e Trabalho Relacionado 7

2.1 Propriedades dos sistemas de localizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Tecnicas de posicionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.2 Posicao fısica e simbolica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.3 Posicao absoluta e relativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.4 Exatidao e precisao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.5 Calculo da localizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.6 Escala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.7 Reconhecimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.8 Limitacoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.1.9 Custo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2 Tecnologias de posicionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.1 Localizacao com suporte do fornecedor de servico . . . . . . . . . . . . . . . . . . 14

2.2.2 Localizacao por GNSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2.3 Localizacao a curta distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.3 Sistemas de localizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3.1 LifeMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3.2 LOC8 e MiddleWhere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3.3 BlueBroadcaster® e BLIPsystems® . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3.4 Google Location Services® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.4 Aplicacoes e servicos baseados na localizacao . . . . . . . . . . . . . . . . . . . . . . . . 18

vii

2.5 Privacidade nos servicos baseados na localizacao . . . . . . . . . . . . . . . . . . . . . . 20

2.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Arquitetura do Sistema 23

3.1 Desenho da arquitetura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2 Cenario de utilizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Implementacao do Sistema e Aplicacoes de Avaliacao 31

4.1 Processo de desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.2 Sistema de localizacao SLOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.2.1 Raspberry Pi como AP Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.2.2 Raspberry Pi como web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.2.3 Sincronizacao da data e hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.3 API SLOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.4 Base de dados SLOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.5 Aplicacoes do utilizador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.5.1 Registo de presencas nas aulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.5.2 Tabelas e grafico de presencas nas aulas . . . . . . . . . . . . . . . . . . . . . . . 42

4.5.3 Registo de pedidos em restaurantes . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.5.3.A Aplicacao Restaurante - Utilizador . . . . . . . . . . . . . . . . . . . . . . 44

4.5.3.B Aplicacao restaurante - backoffice . . . . . . . . . . . . . . . . . . . . . . 45

4.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5 Avaliacao do Sistema 49

5.1 Metodologia e cenarios de avaliacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.2.1 Tempo de processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5.2.2 Escalabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.2.3 Correto armazenamento dos dados . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.3 Avaliacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.4 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6 Conclusao 59

6.1 Conclusoes finais e contribuicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

6.2 Limitacoes e trabalho futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

A Codigo do Projeto 67

viii

Lista de Figuras

2.1 Tecnicas de triangulacao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1 Arquitetura do sistema SLOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1 Equipamento Raspberry Pi e adaptador USB wireless. . . . . . . . . . . . . . . . . . . . . 33

4.2 Configuracao do ficheiro /etc/hostapd/hostapd.conf. . . . . . . . . . . . . . . . . . . . . . 34

4.3 Configuracao do ficheiro /etc/dhcp/dhcpd.conf. . . . . . . . . . . . . . . . . . . . . . . . . 35

4.4 Modelo Cliente-Servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.5 Configuracao do ficheiro /etc/lighttpd/lighttpd.conf. . . . . . . . . . . . . . . . . . . . . . . 36

4.6 Configuracao da interface wlan0 no ficheiro textbf/etc/network/interface . . . . . . . . . . 37

4.7 Aplicacao: registo de presenca nas aulas - ecra de introducao do IP. . . . . . . . . . . . . 40

4.8 Aplicacao: registo de presenca nas aulas – ecra de inicial de login. . . . . . . . . . . . . . 41

4.9 Aplicacao: registo de presenca nas aulas – ecra de confirmacao de presenca. . . . . . . 41

4.10 Aplicacao: Graficos das presencas nas aulas - Tabela de presencas por semana. . . . . 42

4.11 Aplicacao: Graficos das presencas nas aula - Grafico do total e de percentagens das

presencas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.12 Aplicacao: Tabelas e Grafico das Presencas nas Aulas - selecao de turnos. . . . . . . . . 44

4.13 Link para aplicacao pedidos no restaurante, em QR-Code. . . . . . . . . . . . . . . . . . 44

4.14 Aplicacao: pedidos de clientes do restaurante - Pedido do cliente. . . . . . . . . . . . . . 45

4.15 Aplicacao: backOffice do restaurante - menu de gestao de ementas. . . . . . . . . . . . . 46

4.16 Aplicacao: backoffice do restaurante - menu de gestao de pedidos. . . . . . . . . . . . . . 47

4.17 Aplicacao: backOffice do restaurante - menu que mostra os detalhes do pedido do cliente. 47

5.1 Criacao e envio de pedido HTTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.2 Envio de multiplos pedidos HTTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5.3 Comando ping de 20 pacotes ICMP ao sistema SLOC. . . . . . . . . . . . . . . . . . . . 54

5.4 Tempo de processamento do sistema SLOC. . . . . . . . . . . . . . . . . . . . . . . . . . 55

ix

x

Lista de Tabelas

2.1 Comparacao das principais tecnologias de posicionamento. . . . . . . . . . . . . . . . . . 14

5.1 Informacao sobre 50 pedidos HTTP efetuados para cada cenario de teste . . . . . . . . . 55

xi

xii

Lista de Algoritmos

3.1 Algoritmo da API SLOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

xiii

xiv

Listagens

4.1 Pedido HTTP em JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

A.1 API SLOC slocAPI.php. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

A.2 Script wifi.sh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

xv

xvi

Acronimos

AP Access Point

API Application Programming Interface

A-GPS Assisted GPS

BTS Base Transceiver Station

CID Cell ID

CSS Cascading Style Sheets

DHCP Dynamic Host Configuration Protocol

DR Dead Reckoning

D-GPS Differential GPS

E-OTD Enhanced Observed Time Difference

GNSS Global Navigation Satellite System

GPRS General Packet Radio Service

GPS Global Positioning System

GUI Graphical User Interface

GUID Globally Unique Identifier

GSM Global System for Mobile Communications

GSNs GeoSocial Networks

HTML HyperText Markup Language

HTTP Hypertext Transfer Protocol

xvii

ICMP Internet Control Message Protocol

IP Internet Protocol

IST Instituto Superior Tecnico

JSON JavaScript Object Notation

NFC Near Field Communication

NTP Network Time Protocol

OS Operating System

QR-Code Quick Response Code

RAM Random Access Memory

RFID Radio-Frequency Identification

RTC Real Time Clock

RTLS Real-time Location System

RTT Round-Trip Time

SPL Security Policy Language

SSID Service Set Identifier

TDOA Time Difference of Arrival

UI User Interface

URL Uniform Resource Locator

USB Universal Serial Bus

Wi-Fi Wireless fidelity

WLAN Wireless Local Area Network

xviii

1Introducao

Conteudo

1.1 Motivacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Contribuicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5 Estrutura do Documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1

2

A computacao movel teve um crescimento exponencial e atualmente ocupa um lugar de destaque no

quotidiano da sociedade. A variabilidade dos dispositivos moveis e os precos mais reduzidos que sao

praticados no atual mercado tecnologico contribui para que a percentagem de utilizadores desse tipo

de dispositivos (smartphones, tablets, portateis, etc) tenha crescido exponencialmente, relativamente

a um passado recente. A maioria dos dispositivos moveis incorporam sensores que possibilitam o

registo/captura e armazenamento de varios tipos de informacao relacionada com a atividade e estado

do utilizador, tais como: pedometro, localizacao em tempo real, batimento cardıaco, acelerometro e

compasso digital. Este tipo de informacao de contexto proporciona a oportunidade de criar um conjunto

alargado de programas de valor acrescentado, sendo que existe uma crescente tendencia de utilizacao

e desenvolvimento de aplicacoes e servicos baseados na localizacao.

Atualmente os programadores que se dedicam a desenvolver aplicacoes e servicos baseados na

localizacao, tem ao seu dispor varios sistemas de localizacao que utilizam diferentes tecnologias de

posicionamento, tais como: o GPS 1, Wi-Fi 2, Bluetooth3, Radio-Frequency Identification (RFID) [1],

Near Field Communication (NFC) [2] e Real-time Location System (RTLS) [3]4. Devido a esta grande

variedade de sistemas de localizacao torna-se essencial que o programador tenha conhecimento das

propriedades e caracterısticas base de cada sistema de localizacao [4,5], para que consiga selecionar

de forma crıtica o sistema mais adequado para cada aplicacao especıfica, otimizando a sua funcao

enquanto programador.

As aplicacoes e as redes sociais baseadas na localizacao estao a ter um crescimento acentuado e

comecam por isso a surgir cada vez mais aplicacoes que oferecem, dependendo da sua localizacao,

benefıcios aos utilizadores, tais como: promocoes, descontos, reconhecimento/integracao social por ter

estado em determinado local/evento, entre outros. Com a criacao e ascensao deste tipo de aplicacoes,

foi criada de igual forma a atividade mal intencionada de alguns utilizadores que tentam contornar o

sistema, de forma a conseguirem obter os benefıcios anteriormente referidos, sem estarem presencial-

mente nos locais. E por isso essencial identificar estes utilizadores e garantir uma maior seguranca na

interacao com as aplicacoes, sendo necessarios mecanismos que possam comprovar a localizacao do

utilizador de forma precisa e nao corrompıvel [6–8].

1.1 Motivacao

A partir da decada de 90, com o crescimento do numero de utilizadores de dispositivos moveis e

particularmente, com a generalizada massificacao da utilizacao de tablets e smartphones e com o de-

senvolvimento de aplicacoes que tem como objetivo otimizar os servicos para o utilizador, e em funcao1http://www.oosa.unvienna.org/pdf/icg/2010/VIC-Workshop/UN Ho-We Part 2.pdf2http://compnetworking.about.com/od/wireless/tp/how-wifi-works useful-facts-about-wireless.htm3http://www.bluetooth.com/4http://www.ekahau.com/real-time-location-system/technology

3

da sua localizacao geografica, criou-se uma nova janela de oportunidade para os programadores. A

variedade de contextos em que os servicos baseados na localizacao se podem aplicar, tais como: na

saude, no entretenimento e no trabalho em geral, proporcionam uma vantagem e uma motivacao extra

para que o programador desenvolva esse tipo de aplicacoes e servicos.

O fato destas aplicacoes dependerem do acesso a informacao sobre localizacao de pessoas, ani-

mais ou objetos, e necessario que sejam suportadas por um tipo de sistema que tenha a capacidade

de obter essa informacao atraves de uma ou mais tecnologias de posicionamento. Tal como foi referido

anteriormente, existem varios tipos de tecnologias de posicionamento que utilizam diferentes tecnicas

para obterem dados de localizacao, cabe por isso ao programador optar pela que melhor se adapta as

necessidades do programa/aplicacao que pretende implementar.

Um sistema de localizacao que englobe diferentes tecnologias de posicionamento tem a vantagem

de disponibilizar informacao de localizacao adquirida atraves de diferentes tecnicas, capazes de ofe-

recer mais opcoes para o desenvolvimento de aplicacoes que por exemplo combinem diferentes tipos

de dados sobre a localizacao de forma a representarem o posicionamento com maior precisao, nao

limitando a criatividade e objetivos do programador.

A tecnologia Wi-Fi e uma das tecnologias de posicionamento em que as suas caraterısticas confe-

rem uma vantagem para um sistema de localizacao, uma vez que permite adquirir dados de localizacao

tanto indoor, como outdoor, atraves de diferentes tecnicas de localizacao [9], tais como: a proximidade

e a analise de cenario. As Wireless Local Area Networks (WLANs)5 estao cada vez mais presentes no

dia a dia dos utilizadores, sendo possıvel aceder a uma rede sem fios nos centros comerciais, escolas

e crescentemente comecam a surgir Hotspots6 disponıveis no exterior das principais cidades.

1.2 Objetivos

O principal objetivo deste trabalho centra-se no desenvolvimento de um sistema de localizacao

(SLOC) compatıvel com varios tipos tecnologias de posicionamento, tais como: o GPS, Bluetooth e

RFID, mas que numa primeira fase sera baseado na proximidade e implementado com o suporte da

tecnologia Wi-Fi. O sistema implicara a implementacao de uma plataforma/middleware que dara su-

porte a uma gama alargada de aplicacoes que oferecam servicos baseados na localizacao.

Para atingir esses objetivos, o trabalho realizado foi dividido em tres partes. Na primeira foi desen-

volvido um sistema de localizacao que utiliza um dispositivo de escassos recursos e de baixo custo

(e.g. Raspberry Pi com adaptador Universal Serial Bus (USB) Wi-Fi) como elemento de suporte a

localizacao. Na segunda parte foi implementado uma Application Programming Interface (API) que

serve de canal de comunicacao e que proporciona a integracao entre o sistema e as demais aplicacoes

5WLAN e uma rede local sem-fios6Hotspot e um dado local onde a tecnologia Wi-Fi esta disponıvel

4

baseadas na localizacao. Por fim, na terceira parte foi desenvolvido um conjunto de aplicacoes que

servem de base para a avaliacao do sistema desenvolvido.

1.3 Requisitos

O sistema SLOC tem de ter a capacidade de obter e armazenar a informacao sobre a localizacao

dos utilizadores de forma correta e consistente, ou seja, a localizacao obtida nao pode sofrer qualquer

tipo de alteracao/erro quando guardada no sistema; so em caso de um pedido efetuado pelo utilizador e

que os dados sobre a localizacao serao alterados. A informacao sobre a localizacao dos utilizadores e

armazenada no sistema durante um periodo variavel de tempo, consoante a aplicacao em causa, tendo

em conta que diferentes aplicacoes irao necessitar de aceder a informacao armazenada por distintos

periodos de tempo. O SLOC pretende oferecer uma API de utilizacao intuitiva para os programadores

de aplicacoes baseadas na localizacao. E pretendido que a integracao com o elemento de suporte a

localizacao (e.g. Raspberry Pi com um adaptador USB Wi-Fi) seja eficaz e eficiente, por forma a dar

uma rapida e precisa resposta aos pedidos de localizacao.

Tendo em conta que este sistema foi projetado para dispositivos moveis, tivemos em conta questoes

de autonomia de bateria [10], sendo de destacar a minimizacao do consumo de energia, reduzindo o

processamento e acesso a recursos do dispositivo do utilizador.

Um aspeto essencial a considerar nos sistema de localizacao e a seguranca, porque tal como foi

mencionado anteriormente, muitas aplicacoes oferecem benefıcios aos utilizadores consoante a sua

localizacao e por esse motivo sao cada vez mais frequentes os utilizadores que tentam contornar e

falsear as informacoes de localizacao transmitidas as aplicacoes. O sistema desenvolvido tem como

componente de seguranca a verificacao da identidade dos utilizadores, atraves do login pessoal.

1.4 Contribuicoes

Em relacao aos requisistos e os objetivos apresentados anteriormente, foram feitas as seguintes

contribuicoes:

• Desenvolvimento de um sistema de localizacao com suporte na tecnologia Wi-Fi, em que foi

utilizado um equipamento de baixo custo (Raspberry Pi e um adaptador USB Wi-Fi) e que em

geral, demonstrou um bom desempenho;

• Implementacao de uma plataforma/middeware que serve de canal de comunicacao e de API de

facil utilizacao pelo programador;

• Desenvolvimento de um conjunto de aplicacoes para testar e avaliar o sistema desenvolvido.

5

1.5 Estrutura do Documento

No Capıtulo 2 serao abordados os trabalhos relacionados com o tema e as principais propriedades e

metricas que caracterizam os sistemas de localizacao. No Capıtulo 3 sera apresentada a arquitetura do

sistema e as suas principais caracterısticas. No Capıtulo 4 sera descrita a implementacao do sistema e

aplicacoes que vao servir para testar e avaliar o respetivo sistema. No Capıtulo 5 serao abordadas as

metricas e processos de avaliacao, assim como a respetiva avaliacao do sistema. Por fim, no Capıtulo 6

serao mencionadas as conclusoes mais relevantes, que foram obtidas ao longo da elaboracao desta

dissertacao de mestrado.

6

2Contexto e Trabalho Relacionado

Conteudo

2.1 Propriedades dos sistemas de localizacao . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2 Tecnologias de posicionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3 Sistemas de localizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.4 Aplicacoes e servicos baseados na localizacao . . . . . . . . . . . . . . . . . . . . . 18

2.5 Privacidade nos servicos baseados na localizacao . . . . . . . . . . . . . . . . . . . 20

2.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

7

8

Neste capıtulo serao abordadas as principais propriedades e metricas que caracterizam os sistemas

de localizacao, as tecnologias de posicionamento que dao suporte a um alargado numero de sistemas

de localizacao, bem como os sistemas analogos ao sistema de localizacao desenvolvido (SLOC). Por

fim, foi elaborada uma breve descricao de alguns servicos baseados na localizacao e alguns exemplos

de servicos/aplicacoes de valor acrescentado baseadas na localizacao.

2.1 Propriedades dos sistemas de localizacao

Existem um conjunto de propriedades que caracterizam os sistemas de localizacao. Essas proprie-

dades influenciam diretamente o comportamento e o desempenho dos sistemas. Seguidamente serao

descritas as principais tecnicas e propriedades dos sistemas de localizacao [4,11,12].

2.1.1 Tecnicas de posicionamento

Quando pretendemos determinar uma localizacao, podemos optar entre dois grupos: ativas e pas-

sivas. Geralmente a implementacao de sistemas de localizacao utilizam uma ou mais destas tecnicas

para localizarem pessoas, animais e objetos.

1. Ativas - As tecnicas de posicionamento ativas determinam a posicao atraves dos sinais ou bea-

cons1 enviados pelos dispositivos e infraestruturas de transmissao, estas tecnicas estao divididas

em dois tipos:

(a) Proximidade - consiste na medicao da proximidade a um conjunto de pontos cuja localizacao

e conhecida. Este tipo de tecnica e cada vez mais utilizada atraves de sistemas de localizacao

baseados nas tecnologias RFID [13] e Quick Response Code (QR-Code)2, que adquirem

informacao de localizacao atraves de leitores de etiquetas/chips instalados em locais es-

pecıficos e bem conhecidos (as etiquetas estao associadas/incorporadas a um objeto e ser-

vem de identificador). Os dados de localizacao sao obtidos assim que a etiqueta esteja su-

ficientemente proxima do respetivo leitor. Sistemas de localizacao baseados em Wi-Fi, Blu-

etooth e NFC, tambem utilizam a tecnica de proximidade para efetuar a localizacao. Nestes

casos a troca de informacao e realizada atraves da comunicacao sem fios por proximidade

entre dispositivo compatıveis, ou um dispositivo e um recetor que partilham a mesma tecno-

logia. Estes dispositivos podem ser smartphones, tablets, etiquetas, cartoes eletronicos, ou

qualquer outro dispositivo que tenha integrado um chip Wi-Fi, Bluetooth, ou NFC.

1Beacons e uma estrutura de dados que contem informacao sobre a rede de comunicacao e que e transmitida periodicamentea anunciar a presenca da rede sem-fios

2Fonte: http://www.qrcode.com/en/history/ - Ultima Visita: 02/2015

9

(b) Triangulacao - e uma tecnica que utiliza propriedades geometricas e formulas matematicas

para calcular a posicao. Pode ser feita atraves de lateration, como e o caso do GPS que

utiliza medidas de distancias a pontos bem conhecidos para obter a localizacao, em que tem

de ser conhecidos pelo menos tres pontos, como apresenta a Figura 2.1(a), ou atraves de

angulation, que consiste na medicao de angulos relativos a pontos com separacoes bem

conhecidas, como verificamos na Figura 2.1(b). Esta tecnica e utilizada por fornecedores de

servicos que obtem a localizacao atraves de sinais recebidos por varias Base Transceiver

Station (BTS)3.

2. Passivas - As tecnicas de posicionamento passivas determinam a posicao atraves de sensores

instalados nos dispositivos que obtem informacao do ambiente circundante. Este tipo de tecnicas

tambem estao divididas em dois tipos:

(a) Analise de Cenario - avalia a localizacao a partir de um ponto de vista bem conhecido

pelo sistema, como e o caso de um sistema que utiliza camaras digitais para determinar a

localizacao, ou calcula a localizacao atraves da analise da forca do sinal de dois ou mais

equipamentos de transmissao. Esta tecnica pode ser utilizada por um sistema de localizacao

baseado em Wi-Fi, como e o caso do RADAR [14] que mede, na estacao base, a potencia do

sinal e a relacao sinal-ruıdo dos sinais de que os dispositivos sem fios enviam, para depois

processar a posicao 2D dentro do edifıcio.

(b) Acompanhamento de Movimento - calcula a posicao atraves do rastreio da velocidade e

da direcao ao longo de um determinado tempo relativamente a uma posicao fixa, ou previa-

mente conhecida. Pode ser utilizada para calcular a localizacao de um objeto passado um

determinado perıodo de tempo relativamente a sua posicao inicial. Esta tecnica tambem e

conhecida por Dead Reckoning (DR) [15].

2.1.2 Posicao fısica e simbolica

A posicao fısica e simbolica sao dois tipos de informacao fornecida pelos sistemas de localizacao.

A posicao fısica corresponde a uma posicao real, como e o caso das coordenadas GPS (47º39´17´´N

122º18´23´´W 20m), enquanto que a localizacao simbolica envolve ideias abstratas da posicao de algo

dentro numa sala, no carro, no Instituto Superior Tecnico (IST). Sistemas que utilizam a tecnica de

localizacao por proximidade estao muitas vezes associados a posicao simbolica, como e o caso de

um sistema de localizacao baseado em Wi-Fi ou Bluetooth. Um sistema que utiliza posicao simbolica

3BTS sao equipamentos/estruturas que permitem a comunicacao entre equipamentos utilizador e uma rede de comunicacao

10

(a) Lateration. (b) Angulation.

Figura 2.1: Tecnicas de triangulacao.

e o Proximitymedia 4, que consiste em oferecer publicidade de proximidade atraves da tecnologia de

Bluetooth.

Um sistema que forneca uma posicao fısica pode ser adaptado para fornecer informacao de localizacao

simbolica, atraves de informacao adicional, infraestruturas, ou ambas. Por exemplo, a conjugacao da

localizacao em tempo real de um autocarro e a base de dados de reserva de bilhetes, pode determinar

a localizacao de um passageiro que esteja dentro do autocarro.

2.1.3 Posicao absoluta e relativa

Um sistema de localizacao absoluta utiliza uma grelha de referencias partilhada por todos os objetos

localizados, ou seja, dois equipamentos com recetor GPS que se encontram na mesma posicao tem de

reportar leituras equivalentes da sua localizacao. Num sistema de localizacao relativa cada objeto pode

ter um conjunto de pontos referencia e esses pontos sao sempre relativos a outros pontos de referencia

conhecidos (e.g. o Joao esta a esquerda do jardim e a direita da estrada principal).

2.1.4 Exatidao e precisao

A exatidao refere-se a margem de erro da localizacao, enquanto que a precisao indica a frequencia

com que se consegue alcancar a exatidao. Por exemplo: um recetor de GPS que localize uma posicao

com um erro de aproximadamente 1-3 metros (exatidao) em 99% do tempo (precisao), ou seja, a

distancia do erro refere-se a exatidao da informacao de posicao fornecida pelo GPS, enquanto que a

percentagem refere-se a precisao com que se pode alcancar essa exatidao.

4Fonte: https://www.linkedin.com/company/proximity-media-ltd Ultima Visita: 10/2014

11

2.1.5 Calculo da localizacao

Em alguns sistemas de localizacao o dispositivo a ser localizado e responsavel pelo calculo da sua

propria localizacao. Este metodo garante a privacidade, uma vez que outras entidades nao conseguem

aceder a sua localizacao, a nao ser que o programador ou utilizador opte por torna-la publica. Outros

sistemas de localizacao necessitam, por outro lado que o dispositivo a ser localizado forneca dados

periodicamente a infraestrutura externa, para que se proceda a sua localizacao.

O fato do calculo ser efetuado por parte da infraestrutura externa beneficia o objeto a ser localizado

em termos de reducao do consumo de energia e de recursos necessarios para o processamento da

informacao de localizacao.

2.1.6 Escala

Os sistemas de localizacao tem a capacidade de localizar objetos em varias escalas, alguns con-

seguem fornecer a posicao de uma pessoa, animal ou objeto a escala mundial, outros numa area

metropolitana, outros num campus, outros num determinado edifıcio, ou ate dentro de uma divisao.

Uma forma de reconhecer a que escala o sistema de localizacao se insere, e considerar a sua area de

cobertura por unidades de infraestruturas que utiliza e pelo numero de dispositivos/objeto que o sistema

consegue localizar atraves dessas mesmas unidades num determinado intervalo de tempo.

Alguns sistemas de localizacao tem potencial para serem expandidos e aumentar a sua escala de

alcance, atraves do aumento do numero das suas infraestruturas. Por exemplo: um sistema de etiqueta

(tag) que localiza um objeto num unico edifıcio, pode expandir-se para um campus se cobrir todos os

seus edifıcios e area exterior, atraves dos sensores necessarios.

2.1.7 Reconhecimento

Existem aplicacoes que tem como objetivo efetuar operacoes especıficas de acordo com a localizacao

dos objetos e que necessitam reconhece-los ou classifica-los. Para que esse tipo de aplicacoes tenham

o comportamento desejado, e necessario um mecanismo de identificacao automatica. Um exemplo, e

um sistema de localizacao por proximidade que utiliza leitores de etiquetas ou codigos de barras instala-

dos em locais especıficos e bem conhecidos, em que as etiquetas e codigo de barras estao associadas

ao objeto e servem de identificador (RFID e QR-Code). Uma das tecnicas que possibilita o reconheci-

mento do objeto, e a associacao de um nome ou Globally Unique Identifier (GUID)5 ao objeto localizado

pelo sistema. Quando o GUID do objeto e observado atraves da leitura da sua etiqueta, a infraestrutura

pode procurar informacao relacionada com o objeto, atraves do acesso a uma base de dados externa.

5GUID e um tipo de identificador utilizado em aplicacoes de software

12

Sistemas com a capacidade de identificar objetos podem apenas conseguir reconhecer algumas

das suas caracterısticas, como e o caso de um sistema de camaras de vigilancia que pode reconhecer

a cor e ate o formato de um objeto, mas nao tem a capacidade de identificar um indivıduo.

2.1.8 Limitacoes

Os sistemas de localizacao tem limitacoes que condicionam o seu funcionamento em certos ambi-

entes e que tem influencia direta no tipo de aplicacoes que se podem desenvolver. Um exemplo e o

caso da utilizacao do GPS para implementar uma aplicacao em que o objetivo e determinar a posicao

de objetos indoors, ou seja dentro de um edifıcio onde um recetor tem dificuldade em detetar o sinal

transmitido pelo satelite. Outros exemplos sao os de alguns sistemas de localizacao por etiqueta que

apenas conseguem efetuar a leitura de uma etiqueta de cada vez e o caso das tecnologias baseadas

em radiofrequencia que apenas suportam um numero limite de comunicacoes antes que o canal fique

congestionado.

2.1.9 Custo

O custo de um sistema de localizacao esta dividido em varias partes: custo de tempo, custo de

espaco e custo de capital. O custo de tempo esta relacionado com o tempo do processo de instalacao e

necessidades de administracao relativas ao sistema. O custo com o espaco esta associado ao numero

de infraestruturas que sao instaladas, com o tamanho e forma do equipamento. O custo de capital

engloba o preco das instalacao dos elementos da infraestrutura e os salarios das pessoas que provi-

denciam o suporte tecnico.

2.2 Tecnologias de posicionamento

Um componente fundamental de informacao de contexto para as aplicacoes moveis e o posicio-

namento de pessoas, animais e objetos. Os sistemas de localizacao desenvolvidos tem como base

tecnologias que tem a capacidade de fornecer dados de localizacao atraves de tecnicas de posiciona-

mento, tais como a triangulacao, proximidade e analise do cenario, que foram descritas anteriormente.

As diferentes propriedades existentes nos sistemas de localizacao permitem efetuar uma escolha crıtica

e ponderada do sistema que melhor se adapte as necessidades e requisitos das aplicacoes a desen-

volver. Seguidamente serao apresentadas as tecnologias de posicionamento que dao suporte as atuais

aplicacoes e servicos baseados na localizacao [16], e na Tabela 2.1 foi efetuada uma comparacao entre

as tecnologias de posicionamento mais importantes da atualidade.

13

Tabela 2.1: Comparacao das principais tecnologias de posicionamento.

2.2.1 Localizacao com suporte do fornecedor de servico

Um dos metodos de adquirir informacao de localizacao e recorrendo as caracterısticas da arquite-

tura e infraestruturas de comunicacao implementadas pelos fornecedores de servicos. A informacao

sobre a georreferenciacao pode ser obtida atraves do sinal da torre de telecomunicacoes, que fornece

sinal ao dispositivo movel [12]. Geralmente associado ao sinal esta um Cell ID (CID) que identifica a

BTS e respetiva posicao geografica. A posicao obtida e a da BTS, enquanto que a verdadeira posicao

do dispositivo esta na circunferencia/celula em redor da localizacao da BTS, a precisao deste metodo

depende do tamanho da celula, sendo que o diametro das celulas Global System for Mobile Com-

munications (GSM) estao entre os 2km-20km, podendo recorrer-se por vezes a triangulacao e outras

tecnicas de forma a obter uma localizacao mais precisa.

Outros exemplos de tecnicas utilizadas com base no suporte do fornecedor de servico sao o Time

Difference of Arrival (TDOA) e o Enhanced Observed Time Difference (E-OTD). Estas tecnicas calculam

a distancia entre BTS, medindo a diferenca de tempo entre sinais de, geralmente, tres BTS diferentes,

de forma a obter a localizacao atraves da triangulacao. No caso do TDOA o calculo da localizacao e

efetuado pelo fornecedor de servico, enquanto que no caso do E-OTD o calculo e feito no proprio dis-

14

positivo movel. Outro metodo de obter informacao de localizacao e recorrendo as bases de dados das

redes moveis, ou a alocacao do endereco Internet Protocol (IP), que podera possibilitar a determinacao

do ponto geografico de acesso.

2.2.2 Localizacao por GNSS

Os sistemas Global Navigation Satellite System (GNSS)6, sao sistemas de posicionamento por

satelites artificiais com cobertura mundial, que determinam as coordenadas de um recetor terreste

desde que o mesmo se encontre no campo de visao/comunicacao de quatro satelites, sendo que tres

satelites sao suficientes para determinar as coordenadas do recetor e o quarto satelite e utilizado para

sincronizar o tempo (data/hora) a que essa localizacao esta a ser efetuada. Atualmente estao em pleno

funcionamento o sistema americano GPS e o sistema russo GLONASS, estando em desenvolvimento

o sistema europeu Galileo e o sistema chines Compass ou BeiDou-2.

O sistema de posicionamento GPS e o sistema mais conhecido e utilizado pelos programadores

para desenvolverem aplicacoes, pois e um sistema de localizacao absoluta que fornece posicao fısica,

como ja foi referido anteriormente. O objeto a ser localizado efetua os calculos para determinar a sua

posicao e nao tem nenhum identificador associado. Consegue atingir uma exatidao de 1-5 metros, com

uma precisao que varia entre os 95% e os 99%. O custo global das infraestruturas e bastante elevado,

pois baseia-se na utilizacao de satelites; em relacao aos recetores o investimento e mais simples, pois

uma grande parte dos smartphones ja os inclui. A grande limitacao do sistema GPS esta na detecao

por parte do recetor do sinal transmitido pelo satelite quando se encontra num ambiente indoor.

E ainda importante referir o sistema Assisted GPS (A-GPS), que recorre a uma ligacao de dados

General Packet Radio Service (GPRS), 3G ou 4G para melhorar a leitura da posicao e o Differential

GPS (D-GPS) que utiliza as coordenadas de um ponto fixo terrestre, para melhorar a precisao da

georreferenciacao.

2.2.3 Localizacao a curta distancia

Este metodo de localizacao esta associado principalmente a sistemas de localizacao que utilizam

a tecnica de proximidade como forma de obter informacao sobre a localizacao dos utilizadores. As

aplicacoes que utilizam estes tipo de sistemas permitem ao utilizador obter informacao baseada na

sua localizacao, em especial no interior de edifıcios e areas de perımetro reduzido. Existem varias

opcoes de tecnologias utilizadas neste metodo de localizacao, sendo de referir o Bluetooth que pode

adquirir informacao de localizacao do utilizador atraves da tecnica de localizacao por proximidade, no

entanto tem um baixo alcance (entre 1 metro a 100 metros), o que podera ser uma grande limitacao na

6Fonte: http://www.insidegnss.com/ - Ultima Visita: 02/2015

15

aquisicao da posicao do dispositivo movel.

Outros sistemas de localizacao a curta distancia sao os sistemas que utilizam as tecnologias RFID e

QR-Code, como ja foi referido anteriormente, estas tecnologias fornecem informacao sobre a localizacao

atraves da leitura de etiquetas e codigos de barras bidimensional instalados em locais especıficos

e bem conhecidos. A semelhanca destas tecnologia a NFC tambem pode ser utilizada para obter

informacao de contexto entre dispositivos compatıveis e que estejam proximos um do outro. Os sis-

temas de localizacao que utilizam este tipo de tecnologias estao dependentes de varios fatores, tais

como a sua correta utilizacao (e.g. os dispositivos tem de estar em linha de vista) e a existencia de

infraestruturas suficientes para recolher essa mesma informacao, fatores esses que podem influenciar

a identificacao da localizacao.

E ainda de referir os sistemas que utilizam a rede sem fios WLAN para obter a localizacao do

utilizador. Estando cada vez mais presente, os sistemas de localizacao baseados em Wi-Fi utilizam

infraestruturas simples como meio de comunicacao (i.e. Access Point (AP)), que tem uma distancia de

cobertura entre os 10 metros e os 150 metros indoor e os 300 metros outdoor. Este tipo de sistemas

podem recorrer a varias tecnicas de localizacao [9] (e.g. por proximidade, triangulacao e analise de

cenario) e para alem da vantagem de conseguirem adquirir informacao de localizacao tanto dentro de

edifıcios, como em espacos outdoor, tem ainda a mais valia de operarem em faixas de frequencias que

nao necessitam de licenca para instalacao e/ou operacao.

2.3 Sistemas de localizacao

Algumas aplicacoes e servicos baseados na localizacao sao implementados com o objetivo de for-

necer uma localizacao eficiente e com maxima precisao. De forma a colmatar algumas das falhas de

alguns sistema de posicionamento [17], recorre-se a sistema hıbridos, sistemas esses que consistem

em combinar a informacao de localizacao adquirida por duas ou mais tecnologias de posicionamento e

e neste grupo de sistemas em que se insere o sistema desenvolvido (SLOC).

2.3.1 LifeMap

O LifeMap [18] e um sistema hıbrido, que tem como principal objetivo determinar de uma forma

pratica e eficiente a informacao exata da localizacao dos utilizadores moveis em ambientes indoor e

outdoor. O LifeMap utiliza alguns sensores do smartphone, tais como: o acelerometro e o compasso

digital para fornecer informacao de localizacao indoor e que quando combinada com as tecnologias de

posicionamento GPS e Wi-Fi permitem gerar o contexto do utilizador no seu dia a dia.

O LifeMap tem tambem como objetivo construir um mapa com o contexto do utilizador, sendo que

a informacao de contexto esta dividida em quatro partes. Uma parte que corresponde a localizacao

16

do utilizador, outra que representa a sua atividade e que esta definida em movimentacao do utilizador

e utilizacao do smartphone. Uma terceira parte que demonstra o estado da ligacao da rede GSM ou

Wi-Fi e por ultimo, a que esta relacionada com o ambiente em redor do utilizador. Varios tipos de

aplicacoes podem ser desenvolvidas utilizando a plataforma LifeMap. Foi implementada uma aplicacao

de life-logging para avaliar e visualizar o LifeMap nos smartphones, tendo no entanto maior foco na

localizacao em ambientes indoor. Verificou-se no entanto, que a utilizacao do acelerometro e compasso

digital da origem a problemas de consumo de energia do dispositivo e a uma distorcao originada pela

direcao do utilizador, que origina erros de localizacao.

2.3.2 LOC8 e MiddleWhere

O LOC8 [19] e uma framework, que pretende oferecer aos programadores de aplicacoes informacao

sobre a localizacao de diferentes tecnologias de posicionamento. O LOC8 utiliza algoritmos que agre-

gam a informacao recolhida para criar um modelo espacial que reconhece os diferentes formatos de

informacao de localizacao. No entanto, o sistema nao utiliza localizacao simbolica e a juncao e relacio-

namento de diferentes tipos de informacao pode proporcionar incongruencias dando origem a erros de

localizacao.

O MiddleWhere [20] e uma plataforma/middleware que tem o objetivo de separar as aplicacoes

baseadas na localizacao das tecnologias de posicionamento. O MiddleWhere utiliza um metodo pro-

babilıstico para resolver a agregacao da informacao sobre a localizacao de diferentes tecnologias de

posicionamento, no entanto, so tem a capacidade de obter informacao de localizacao de apenas quatro

tecnologias (i.e. GPS, RFID, etiquetas Ubisense®e dispositivo de impressao digital).

Existem outros sistemas hıbridos que fornecerem informacao de localizacao atraves da combinacao

da localizacao fısica (e.g. coordenadas GPS) e localizacao simbolica (e.g. o Joao esta no escritorio da

Universidade) [21]. Tendo os dois tipos de localizacao, a aplicacao pode optar pela mais apropriada as

suas necessidades, ou ate pela conjugacao de ambas. No entanto, tambem este modelo tem problemas

de organizacao da informacao e resolucao da localizacao.

2.3.3 BlueBroadcaster® e BLIPsystems®

Sao ambos sistemas hıbridos baseados nas tecnologias de Wi-Fi, Bluetooth. O BlueBroadcaster® [22]

e um sistema de marketing e publicidade de proximidade para terminais moveis. O sistema utiliza a

tecnologia de Bluetooth para enviar mensagens de marketing e publicidade em broadcast7 aos rece-

tores com Bluetooth ligado que estejam num raio de 100 metros e a tecnologia Wi-Fi como forma de

comunicacao com o hotspot de um hotel, cafe, ou outro estabelecimento comercial que automaticamente

7Broadcasting e o processo de transmissao de informacao para todos os recetores ao mesmo tempo

17

redireciona o utilizador para a pagina web do proprio estabelecimento que convenientemente podera

dar a conhecer os seus servicos e promocoes atuais.

O BLIPsystems® [23] tem como principal objetivo determinar a localizacao e o fluxo de pessoas que

utilizam dispositivos moveis nos aeroportos, no transito e no meio urbano. O sistema permite verificar o

fluxo de pessoas e filas de espera em tempo real atraves de transmissores Wi-Fi e Bluetooth instalados

nos aeroportos. Permite tambem verificar o estado do transito e determinar o tempo de viagem atraves

de sensores instalados em pontos estrategicos nas rodovias, que fazem a localizacao dos dispositi-

vos dos condutores. O sistema permite ainda adquirir informacao de localizacao e movimentacao de

pessoas nas cidades.

A correta utilizacao destes dois sistemas implica que os dispositivos a serem localizados tenham de

ter as tecnologias Wi-Fi e Bluetooth. A utilizacao apenas destas duas tecnologias limitam os sistemas

em relacao ao raio de acao, devido a area de cobertura dos respetivos transmissores, que pode chegar

a uma distancia num raio de 100 metros para a tecnologia Bluetooth e de 300 metros para a tecnologia

Wi-Fi.

2.3.4 Google Location Services®

A Google® tambem recorre a varios tipos de tecnologias de posicionamento para o desenvolvimento

de aplicacoes baseadas na localizacao, sendo de referir a utilizacao do sistema de GPS, a tecnologia

GSM baseado na CID desenvolvida pela Google [24] e a localizacao atraves da tecnologia Wi-Fi.

A Google Location API® [25] tem o objetivo de simplificar a implementacao de aplicacoes baseadas

na localizacao, sem que o programador tenha de se focar nos detalhes subjacentes as tecnologias de

localizacao. A utilizacao desta API tenta fazer com que o consumo de energia dos dispositivos dos

utilizadores seja reduzido e tenta dar uma resposta a necessidades, tais como, o desenvolvimento de

aplicacoes que necessitam de localizacao de alta precisao e de aplicacoes que apenas precisam de

atualizacoes periodicas de localizacao.

No entanto, os servicos de localizacao disponibilizados pela Google sao limitados em termos de

tecnologias de posicionamento e a API esta especialmente desenhada para o desenvolvimento de

aplicacoes com base no Operating System (OS) Android®8.

2.4 Aplicacoes e servicos baseados na localizacao

Os servicos baseados na localizacao, referidos como LBS (Location-Based Services) sao uma

classe de servicos e programas de computador que pretendem disponibilizar informacao de contexto

8Fonte: http://developer.android.com/ - Ultima Visita: 03/2015

18

ao utilizador movel, de acordo com a sua localizacao. A informacao de localizacao pode ser forne-

cida atraves de alguns dos sistemas que foram referidos anteriormente. Em geral, podemos distinguir

entre dois grupos de servicos baseados na localizacao [11, 12, 26]: i) pull services, consistem em

fornecer a informacao diretamente solicitada pelo utilizador; ii) push services, consistem em fornecer

informacao relevante para o utilizador, mas que nao tenha sido solicitada diretamente. Seguidamente

sao apresentados alguns exemplos dos dois tipos de aplicacoes e servicos baseados na localizacao.

Devido ao crescimento exponencial dos dispositivos moveis, em especial com a massificacao da

utilizacao dos tablets e smartphones, este tipo de aplicacoes tornaram-se cada vez mais importantes

no dia a dia da populacao em geral, sendo aplicados em varios tipos de contextos, tais como: jogos,

location tracking, servicos de emergencia, navegacao, aplicacoes de redes sociais e ate sao utilizados

na industria com o intuito de otimizar funcoes de trabalho, como e o caso de aplicacoes desenvolvidas

pela Ubisense® 9,que fazem a localizacao em tempo real e controlo de produtos desenvolvidos em

fabricas.

Na area dos jogos, comecam a ser procurados cada vez mais jogos que contem informacao de

contexto. Se o ambiente e as circunstancias do jogo forem gerados de acordo com o perfil do utilizador

e a sua localizacao, o jogo torna-se mais interessante e personalizado, aumentando por isso o seu valor

e procura comercial.

No contexto de tracking de pessoas e objetos existem inumeras aplicacoes e servicos, tais como,

aplicacoes para localizar pessoas e veıculos num aeroporto ou cidade, adquirir informacao sobre o

transito e transportes publicos (como e o caso de aplicacoes desenvolvidas com base nos sistemas

BLIPsystems (ja referido anteriormente), BlueLon®10 e do OneBusAway® [27], ou ainda enviar mensa-

gens de alerta consoante a localizacao de criancas e idosos, atraves do Zentracker® 11.

A Lapa® 12, e um exemplo de uma aplicacao que utiliza um pequeno dispositivo que permite localizar

objetos ou animais perdidos, atraves da utilizacao de um smartphone ou tablet. Este dispositivo tem a

particularidade de permitir a localizacao de um objeto atraves da observacao do mapa disponibilizado

pela aplicacao e do som que o dispositivo emite. Caso o dispositivo lapa se afaste a uma certa distancia

do smartphone, sera enviado um alerta de seguranca para o mesmo. A comunicacao entre o dispositivo

e o terminal movel e efetuada atraves de Bluetooth e permite uma distancia de 30 a 50 metros.

A publicidade e marketing de proximidade e outro tipo de servico de valor acrescentado que esta

associado a localizacao das pessoas, que consiste no envio de uma notificacao de promocao quando

a pessoa se encontra num determinado espaco comercial. O sistema de localizacao faz uma contınua

monitorizacao da zona de negocio na expetativa de que um cliente se aproxime e quando isso acontece

podera oferecer publicidade atraves de um vıdeo de promocional, musica ou voucher com uma oferta

9Fonte: http://www.ubisense.net/ - Ultima Visita: 04/201510Fonte: http://www.bluelon.com/ - Ultima Visita: 09/201411Fonte: http://www.zentracker.com/ - Ultima Visita: 09/201412Fonte: http://lapa-app.com/ - Ultima Visita: 01/2015

19

ou desconto. Alguns exemplos de aplicacoes desse tipo sao as desenvolvidas com base nos sistema

Proximitymedia (ja referido anteriormente) e o BlueMagnet® 13.

Outro tipo de aplicacoes com grande importancia sao as que estao relacionadas com o contexto de

servicos de emergencia, tais como seguranca e cuidados medicos. Este tipo de aplicacoes permitem

agora dar uma rapida resposta a casos de emergencias que possam surgir em escolas, ou mesmo em

hospitais. Com estas aplicacoes e possıvel efetuar uma monitorizacao constante e em tempo real, tanto

dos pacientes, como dos responsaveis que trabalham no local; Ekahau® 14 e Sonitor®15 sao exemplos

desse tipo de aplicacoes. Comecam tambem a surgir estudos para aplicacoes e servicos que tem

como objetivo ajudar as forcas de seguranca e bombeiros em casos extremos de emergencia, como

por exemplo um sistema de localizacao que consiga orientar os bombeiros no meio de um incendio,

onde tem pouca ou nenhuma visibilidade devido as chamas e ao fumo [28].

As GeoSocial Networks (GSNs) sao as aplicacoes mais usadas pelos utilizadores [8]. Estas re-

des sociais centradas na informacao de localizacao dos seus utilizadores oferecem uma variedade de

informacao, desde a localizacao de uma farmacia de servico, descobrir qual a caixa multibanco mais

proxima, que tipo de comida e que classificacao um restaurante tem, recomendacoes e ofertas perso-

nalizadas com base na localizacao e ate quais os locais que um amigo ou pessoas com os mesmos

gostos tem frequentado.

O Foursquare® 16 sendo um exemplo deste tipo de redes e uma aplicacao que permite partilhar

e guardar os sıtios que o utilizador visitou. O servico recolhe dados pessoais sobre os utilizadores e

partilha-os com outros, e baseado na partilha e comunicacao da localizacao por vontade propria dos

seus utilizadores. O metodo de utilizacao e simples, pois atraves de um dispositivo movel (smartphone,

tablet, ou portatil), o utilizador registado acede a aplicacao e ativa de acordo com sua localizacao, o

check-in e identificacao do local onde esta, informando pontos de referencia de localizacao geografica

registados na base de dados do servico. A base de dados do Foursquare e criada pelos utilizadores,

que podem ainda partilhar a sua localizacao com outras pessoas atraves de outras redes sociais, tais

como o Facebook® 17 e o Twitter® 18.

2.5 Privacidade nos servicos baseados na localizacao

A captacao de informacao de localizacao esta muitas vezes relacionada com o tracking de pessoas,

ou analise das suas preferencias e historial, tornando a privacidade da informacao de localizacao dos

13Fonte: http://www.bluemagnet.com/ - Ultima Visita: 01/201514Fonte: http://www.ekahau.com/ - Ultima Visita: 01/201515Fonte: http://www.sonitor.com/ Ultima Visita - 01/201516Fonte: https://pt.foursquare.com/ Ultima Visita: 02/201517Fonte: https://www.facebook.com/ Ultima Visita: 02/201518Fonte: https://twitter.com/ Ultima Visita: 02/2015

20

utilizadores num assunto muito discutido na atualidade. Um estudo sobre a preocupacao que os utiliza-

dores tem na privacidade da informacao da sua localizacao [29], revelou que os utilizadores tem menos

preocupacoes com a privacidade quanto mais util for a aplicacao ou servico de localizacao, sendo

que uma das formas de reduzir a preocupacao com a privacidade seria informar o utilizador sobre a

informacao recolhida pelos sistemas de localizacao.

Alguns sistemas tem implementados mecanismos de privacidade que simplificam o desenvolvimento

de aplicacoes que necessitam de um alto nıvel de privacidade, tais como o Jano [30], que permite a

configuracao de polıticas de seguranca atraves da Security Policy Language (SPL) [31], o Confab [32]

que divide o desenvolvimento de aplicacoes de acordo com tres nıveis de privacidade (i.e. otimista,

pessimista e intermedio) e o pawS [33] que utiliza polıticas de privacidade para definir se um utilizador

pode, ou nao adquirir certa informacao de contexto.

2.6 Resumo

Neste capıtulo descrevemos as principais caracterısticas das tecnologias de posicionamento e como

estas podem ser utilizadas na implementacao de sistemas de localizacao.

Os sistemas hıbridos utilizam diferentes tecnologias de posicionamento e sao usados para desen-

volver varios tipos de aplicacoes como as referidas anteriormente, que recorrem a sistemas de GNSS,

a tecnologia Wi-Fi, Bluetooth, NFC, entre outras, para identificar a localizacao do utilizador, que em con-

junto com a base de dados dos fornecedores de servicos, informam o utilizador de pontos de referencia

de localizacao.

A combinacao de varias tecnologias de posicionamento tem a desvantagem de aumentar a comple-

xidade da agregacao de informacao de contexto sobre a localizacao. Sendo assim necessario desenvol-

ver sistemas de localizacao que oferecam uma API intuitiva para que os programadores de aplicacoes

a utilizem de forma simplificada.

Os sistemas mencionados anteriormente apresentam individualmente vantagens e desvantagens

em diferentes campos, o sistema a desenvolvido (SLOC) pretende combinar algumas das caracterısticas

positivas desses sistemas, minimizando as suas desvantagens globais.

21

22

3Arquitetura do Sistema

Conteudo

3.1 Desenho da arquitetura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2 Cenario de utilizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

23

24

Neste capıtulo e descrita a arquitetura proposta para o sistema de localizacao SLOC, tendo como

principais requisitos os pontos que foram descritos na Seccao 1.3 . Na Seccao 3.1 e apresentado o

desenho da arquitetura do sistema e na Seccao 3.2 e desenvolvida uma descricao de potenciais casos

de utilizacao do SLOC.

3.1 Desenho da arquitetura do sistema

O sistema SLOC tem de ter a capacidade de fornecer informacao de contexto, com base na localizacao

de pessoas, animais ou objetos e em acrescimo, tem de ter implementada uma plataforma/middleware

que proporcione suporte a um conjunto alargado de aplicacoes.

A Figura 3.1 apresenta a arquitetura proposta para o sistema SLOC. A arquitetura do sistema per-

mite, atraves de uma construcao modular, acrescentar modulos que estao focados numa determinada

tecnologia de posicionamento (e.g. localizacao baseada em Wi-Fi, Bluetooth, ou RFID). Em que cada

um dos seus modulos efetua a respetiva conversao do tipo de localizacao obtido pela tecnologia de

posicionamento numa linguagem comum utilizada no SLOC.

Figura 3.1: Arquitetura do sistema SLOC

Numa primeira fase o sistema esta desenvolvido com base no modulo de Wi-Fi em que a informacao

sobre a localizacao do utilizador e obtida atraves da tecnologia Wi-Fi. A comunicacao entre o SLOC e

os dispositivos que executam as diferentes aplicacoes e realizada atraves do acesso a WLAN e para

que seja possıvel efetuar a comunicacao e respetiva interacao com o sistema, e necessario que os

25

dispositivos (que podem ser moveis ou fixos), tenham a tecnologia Wi-Fi ativa e consigam estabele-

cer ligacao com o AP1 associado ao sistema. O reconhecimento da posicao geografica e realizado

atraves da tecnica de localizacao por proximidade e proporciona por isso a possıbilidade de estabele-

cer uma associacao da identificacao do AP (e.g. Service Set Identifier (SSID)2), a uma posicao fısica

ou simbolica. A interacao com o sistema e feita atraves da troca de mensagens entre as aplicacoes

do utilizador e a interface de programacao (i.e. API) do SLOC. Seguidamente serao abordadas as

principais componentes do SLOC.

API SLOC: E uma plataforma/middleware que disponibiliza um conjunto de funcoes que interagem com

o sistema. As funcoes oferecidas sao de facil utilizacao para o programador, tendo em conta que

a principal tarefa do mesmo esta no desenvolvimento das suas aplicacoes e nao na preocupacao

em tentar entender como aceder as funcionalidades do sistema. O programador que pretende

desenvolver servicos baseados na localizacao atraves do SLOC, tera apenas de garantir que

as aplicacoes consigam comunicar com o sistema de forma a utilizar as respetivas funcoes de

interacao com o SLOC. O Algoritmo 3.1 demonstra como e efetuado o processamento de um

pedido cliente.

Algoritmo 3.1: Algoritmo da API SLOCbegin

params←− REQUESTfunctionName←− params[′func′]

if functionName = validFunctionName thenfunctionName(params)

A API do SLOC disponibiliza dois grupos de servicos: i) para queries e funcoes administrativas e

ii) para aquisicao de informacao de localizacao. O primeiro permite a interacao com aplicacoes do

utilizador (e.g. pedidos de localizacao e notificacoes) e utilizar funcoes de configuracao (e.g. as-

sociar a identificacao de um AP a uma localizacao). O segundo permite interagir com a tecnologia

de posicionamento.

Gestor de autenticacao: Como se pode verificar na Figura 3.1, na arquitetura do sistema esta repre-

sentado um elemento de autenticacao. Este componente de seguranca, permite aos programa-

dores implementarem um sistema de identificacao para os utilizadores nas suas aplicacoes. O

mecanismo de autenticacao tem a funcao de gerir tanto os registos, como as autorizacoes dos

utilizadores e ainda podera ser intermediario no caso das aplicacoes utilizarem um sistema de

autenticacao de outra entidade.

Gestor de localizacoes: O sistema tem como principais funcoes a aquisicao de informacao de con-1AP e um equipamento utilizado na rede sem-fios que permite a ligacao entre dispositivos moveis e que serve como ponto de

acesso a Internet ou outras redes2SSID e um identificador unico que identifica a rede sem-fios

26

texto sobre a localizacao e a associacao dessa informacao aos utilizadores. A aquisicao de

informacao proporciona uma grande variabilidade de dados, o que torna necessario a existencia

de um mecanismo que efetue a gestao de dados que sao fornecidos pela tecnologia de posiciona-

mento e os que sao alterados pelo utilizador. O gestor de localizacao do SLOC esta encarregue

dessa funcionalidade; servindo como elemento de comunicacao entre a API e a base de dados do

sistema. O gestor de localizacao tem tambem a funcao de realizar a conversao e o relacionamento

entre os diferentes tipos de informacao de localizacao adquiridos pelas diferentes tecnologias de

posicionamento.

Base de dados SLOC: Tem a funcionalidade de armazenar todos os dados do sistema. Os dados

e toda a informacao sobre localizacao gerada pelas aplicacoes e pelo sistema e guardada em

ficheiros no sistema de ficheiros do SLOC. O tipo de informacao armazenada na base de da-

dos sao: i) associacao de um identificador a informacao de localizacao fornecida pela tecnolo-

gia de posicionamento que pode ser fısica ou simbolica (e.g. id loc:47º39´17´´N 122º18´23´´W

20m, ou id loc:IST-T sala 1.4.26), sendo que um id loc pode estar associado a mais que um tipo

de informacao de localizacao; ii) identificacao dos utilizadores associada a uma identificacao de

localizacao juntamente com uma data e hora (e.g. id util:id loc:12-03-2014:13h30); iii) identificacao

de equipamento (e.g. AP) associada um identificador de localizacoes (e.g. id eq:id loc) e tambem

iv) informacao sobre configuracoes relacionadas com as aplicacoes (e.g. notificacoes).

3.2 Cenario de utilizacao

Para que melhor se perceba as funcionalidades que o SLOC disponibiliza, e de considerar os se-

guintes cenarios:

1º Cenario - O registo da presenca dos alunos na sala de aulas e uma possıvel aplicacao baseada

na localizacao. Muitas vezes o metodo tradicional do registo de presencas faz com que se perca

desnecessariamente alguns minutos da aula, ou seja, um registo automatico feito por um simples

check in, atraves de uma aplicacao ou acesso a uma web-based Graphical User Interface (GUI),

trara o benefıcio dos professores disporem de mais tempo para lecionar a materia da disciplina

e de simplificar o processo da avaliacao da assiduidade dos alunos. Hoje em dia e comum as

salas de aulas terem acesso Wi-Fi, o que possibilita aos alunos que estao presentes na aula

comunicarem com o SLOC atraves de uma aplicacao ou web-based GUI, como referido anterior-

mente, para que seja feito o registo das presencas de forma simples e intuitiva. O professor pode

aceder a toda a informacao, uma vez que o SLOC armazena o registo das presencas. Este tipo

de aplicacao pode tambem utilizar os sistemas de autenticacao e identificacao dos alunos das

27

escolas/universidades, um exemplo e o SLOC utilizar o Fenix API3 para autenticar/identificar os

alunos.

2º Cenario - A publicidade e marketing por proximidade e outro tipo de aplicacao que pode ser supor-

tada pelo SLOC. Numa primeira fase e necessario definir alguns parametros relacionados com o

tipo de publicidade que os lojistas pretendem oferecer. Depois de feitas todas as configuracoes

no SLOC, o sistema esta capacitado de efetuar notificacoes com publicidade. Este tipo de servico

podera ser aplicado dentro de centros comercias ou zonas comerciais que tenham acesso a rede

sem-fios. Para receberem as notificacoes as pessoas tem de ter a tecnologia Wi-Fi ligada e assim

que passarem perto de um espaco comercial com cobertura de rede, vao ser notificadas com

publicidade variavel.

3º Cenario - Uma aplicacao que permita dar a conhecer a localizacao de uma pessoa ou objeto dentro

de um edifıcio e outro tipo de servico de valor acrescentado que pode ser aplicado com o SLOC.

Numa empresa com escritorios em tres andares distintos, um trabalhador pretende contactar pes-

soalmente um colega e para isso necessita de saber a sua localizacao, atraves de uma aplicacao

que regista a localizacao de pessoas, o trabalhador pode localizar o seu colega com um certo

grau de precisao, caso tenha a devida permissao do mesmo.

4º Cenario - Uma aplicacao que tambem pode ser desenvolvida com o suporte do SLOC, e uma

aplicacao que permite a localizacao de amigos e notifica o utilizador sempre que um amigo esti-

ver proximo. O utilizador pode selecionar uma lista de utilizadores amigos para o qual pode ser

notificado quando algum dos amigos da lista estiver na proximidade e permite ainda definir quais

os utilizadores amigos que podem ser de igual forma notificados com a sua localizacao.

5º Cenario - O registo de pedidos de clientes de um restaurante atraves de uma aplicacao que comu-

nica com a API do SLOC. A aplicacao ira permite que os clientes visualizem o menu do restau-

rante, mostrando as varias opcoes disponıveis que o cliente pode escolher. Quando efetuado um

pedido atraves do dispositivo movel, e enviada uma mensagem para o SLOC com todos os dados

necessario para o processamento do pedido por parte do backoffice do restaurante. O backoffice

do restaurante e outra aplicacao que comunica com a API do SLOC, esta aplicacao fara a gestao

de toda a informacao relacionada com os pedidos, menus e clientes (e.g. mesa e lugar de um

cliente). A aplicacao do lado do utilizador tem ainda um sistema de login para identificar os cli-

entes e que permite oferecer descontos e promocoes, de acordo com o numero de vezes que os

clientes estiveram presentes no restaurante.

3http://fenixedu.org/

28

3.3 Resumo

Este capıtulo apresenta o desenho da arquitetura do sistema, descreve as suas principais carac-

terısticas e algumas consideracoes necessarias para o desenvolvimento do sistema.

O sistema SLOC permite obter informacao de contexto sobre localizacao e fazem parte da sua

arquitetura os seguintes componentes: API SLOC, que e a plataforma/middleware que permite a

interacao entre as aplicacoes desenvolvidas pelos programadores e o sistema SLOC, o Gestor de

autenticacao que possibilita a implementacao de um sistema de identificacao de utilizadores, o Ges-

tor de localizacao que efetua a gestao da informacao de localizacao trocada entre as aplicacoes e o

sistema e a Base de dados SLOC que armazena os dados do sistema.

E tambem apresentado um conjunto de cenarios de utilizacao para que se simplifique o entendi-

mento da interacao entre aplicacoes e o sistema SLOC.

29

30

4Implementacao do Sistema e

Aplicacoes de Avaliacao

Conteudo

4.1 Processo de desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.2 Sistema de localizacao SLOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3 API SLOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.4 Base de dados SLOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.5 Aplicacoes do utilizador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

31

32

Neste capıtulo sera descrito o processo de implementacao do sistema SLOC, assim como algu-

mas consideracoes necessarias para o seu desenvolvimento. Sera tambem descrito o processo de

desenvolvimento das aplicacoes de avaliacao do sistema.

4.1 Processo de desenvolvimento

Como foi referido na Seccao 1.2 a implementacao deste trabalho foi dividida em tres partes, que sao:

o desenvolvimento do sistema de localizacao, a implementacao da respetiva API e o desenvolvimento

de aplicacoes para testes e avaliacao.

4.2 Sistema de localizacao SLOC

O sistema SLOC e um sistema de localizacao com o suporte da tecnologia Wi-Fi e para o seu

desenvolvimento foi utilizado um equipamento de baixo custo, um Raspberry Pi1, transformado num

AP com recurso a um adaptador USB wireless2, como apresenta a Figura 4.1. O OS instalado no

equipamento Raspberry Pi e o Debian 7.0 - Wheezy3, sendo que foi necessario realizar uma pesquisa

sobre algumas caracterısticas do OS para desenvolver o sistema de localizacao SLOC. As principais

configuracoes que foram efetuadas no Raspberry Pi sao apresentadas seguidamente.

Figura 4.1: Equipamento Raspberry Pi e adaptador USB wireless.

1Fonte: https://www.raspberrypi.org/ Ultima Visita: 02/20152Fonte: http://www.edimax.com/ - Ultima Visita: 02/20153Fonte: https://wiki.debian.org/DebianWheezy - Ultima Visita: 02/2015

33

4.2.1 Raspberry Pi como AP Wi-Fi

Para que as aplicacoes consigam comunicar com o sistema SLOC, foi necessario fazer com que

o Raspberry Pi passasse a atuar como um AP [34, 35]. Para isso tivemos de instalar o software extra

hostapd e isc-dhcp-server. O hostapd4 e um daemon5 que transforma o Raspberry Pi num AP.

A Figura 4.2 apresenta as configuracoes efetuadas no ficheiro /etc/hostapd/hostapd.conf para criar

uma rede wireless com o nome sloc (ssid=’“sloc”) que identifica o AP do sistema SLOC e e configu-

rado sem password, para que qualquer utilizador consiga aceder ao sistema sem que seja necessario

introduzir uma password.

Figura 4.2: Configuracao do ficheiro /etc/hostapd/hostapd.conf.

O isc-dhcp-server6 e um software open source7 que implementa um servidor Dynamic Host Con-

figuration Protocol (DHCP) e tem a responsabilidade de atribuir enderecos IP aos terminais utilizador

que pretendem comunicar com o sistema SLOC.

A configuracao do ficheiro /etc/dhcp/dhcpd.conf permite criar uma rede local e definir a gama

de enderecos IP que podem ser atribuıdos aos utilizadores, como se pode verificar na Figura 4.3

o servidor pode atribuir enderecos que vao do 192.168.2.2 ao 192.168.2.254, o que da um to-

tal de 253 terminais que podem estar ligados ao mesmo tempo ao sistema SLOC. Caso seja ne-

4Fonte: https://w1.fi/hostapd/ - Ultima Visita: 04/20155Daemon e um programa de computador que correr de forma independente em background6Fonte: https://help.ubuntu.com/community/isc-dhcp-server - Ultima Visita: 02/20157Open Source e um modelo de desenvolvimento de software com licenca livre

34

cessario que o sistema suporte mais terminais ligados ao mesmo tempo, bastara configurar o fi-

cheiro /etc/dhcp/dhcpd.conf de forma a que a gama de enderecos seja ampliada. No mesmo

ficheiro foram comentadas com uma hashtag as linhas #option domain-name "example.org",

#option domain-name-servers ns1.example.org, ns2.example.org e retirado de comentario a

instrucao authoritative, para que o isc-dhcp-server seja o servidor ativo na rede local criada. Para

que o servidor DHCP consiga fazer a gestao dos enderecos da rede na interface wireless foi tambem al-

terada a linha de interfaces no ficheiro /etc/default/isc-dhcp-server para INTERFACES=`"wlan0",

em que wlan0 representa a interface de rede do adaptador USB wireless.

Figura 4.3: Configuracao do ficheiro /etc/dhcp/dhcpd.conf.

O ultimo passo para terminar a configuracao do Raspberry Pi como AP foi atribuir um IP

estatico ao adaptador USB wireless. A Figura 4.6(a) apresenta a configuracao efetuada ao fi-

cheiro /etc/network/interfaces, que atribui o IP 192.168.2.1 ao equipamento Raspberry Pi. Esta

configuracao permite que as aplicacoes e servicos comuniquem com o sistema SLOC atraves do IP

192.168.2.1.

35

4.2.2 Raspberry Pi como web server

O sistema SLOC foi desenvolvido com base no modelo cliente-servidor8, em que tem de ter a capa-

cidade de receber e responder a mensagens/pedidos efetuados pelas demais aplicacoes do utilizador

e que sao enviadas pela rede wireless, como representado na Figura 4.4.

Figura 4.4: Modelo Cliente-Servidor.

Figura 4.5: Configuracao do ficheiro /etc/lighttpd/lighttpd.conf.

O equipamento Raspberry Pi tem de adquirir as funcionalidades de um servidor web [36], para

8Cliente-Servidor e uma arquitetura de aplicacao distribuıda que divide os processos cliente que enviam pedidos para oservidor, que processa a informacao e envia uma resposta

36

isso foi instalado o software lighttpd que e uma aplicacao web server open source rapida e flexıvel 9 e

recorremos a linguagem PHP10 para o desenvolvimento web e API SLOC.

Para o correto funcionamento do servidor lighttpd foi necessario efetuar algumas alteracoes ao

ficheiro /etc/lighttpd/lighttpd.conf, como a Figura 4.5 apresenta. Foram tambem alteradas al-

gumas permissoes na diretoria do servidor web (/home/pi/www), para que os utilizadores/aplicacoes

consigam ler e escrever ficheiros criados nessa diretoria. Por fim, para que o servidor lighttpd

inicie quando o equipamento Raspberry Pi e iniciado, foi necessario introduzir o comando

sudo update-rc.d lighttpd enable na linha de comandos do sistema.

(a) Interface wlan0 para IP fixo. (b) Interface wlan0 para ligacao a Internet.

Figura 4.6: Configuracao da interface wlan0 no ficheiro textbf/etc/network/interface

4.2.3 Sincronizacao da data e hora

O equipamento Raspberry Pi nao tem o modulo Real Time Clock (RTC) como os computadores e

portateis comummente tem (para manterem as horas atualizadas mesmo quando estao desligados).

E necessario que o Raspberry Pi esteja ligado a Internet para fazer a atualizacao das horas atraves

do Network Time Protocol (NTP)11. Um dos objetivos do sistema SLOC e dar suporte a uma gama

alargada de aplicacoes baseadas na localizacao, uma grande parte dessas aplicacoes necessitam que

o sistema de localizacao tenham as horas atualizadas. Como se pretende que o equipamento tenha

apenas a interface wlan0 ativa e a funcionar como AP, foi necessario criar um script (wifi.sh em

anexo na lista de codigo A.2) que e executado quando o Raspberry Pi e reiniciado e que altera as

configuracoes da interface wlan0 para que num primeiro momento consiga estabelecer ligacao a um

time server para atualizar a hora e de seguida passe a funcionar efetivamente como um AP.

9Fonte: http://www.lighttpd.net/ - Ultima Visita: 03/201510Fonte: http://php.net/ - Ultima Visita: 03/201511https://wiki.debian.org/NTP

37

O script wifi.sh e um conjunto de instrucoes de linha de comandos que faz a

alteracao da configuracao do ficheiro /etc/network/interface para a configuracao do ficheiro

/etc/network/interface net, como apresenta a Figura 4.6(b), que permite a interface wlan0 estabe-

lecer ligacao a Internet de forma a sincronizar a hora e assim que este processo for concluıdo, o ficheiro

/etc/network/interface passa a ter as configuracoes do ficheiro /etc/network/interface static,

como apresenta a Figura 4.6(a), de forma a obter um IP fixo. No script wifi.sh sao tambem reinici-

ados os servicos fundamentais para que o Raspberry Pi funcione como AP e para que o mesmo ini-

cie quando o equipamento Raspberry Pi e iniciado, sendo por isso necessario introduzir o comando

$ sudo update-rc.d wifi.sh defaults, que faz com que o script seja executado ao ser iniciado o

OS do Raspberry Pi.

4.3 API SLOC

A API do sistema SLOC foi implementada com base na arquitetura cliente-servidor e utiliza o

PHP como linguagem de desenvolvimento, como ja referido na Seccao 4.2.2. A API SLOC funciona

como plataforma/middleware que recebe pedidos Hypertext Transfer Protocol (HTTP) das aplicacoes

baseadas na localizacao, efetua o processamento dos pedidos e envia uma resposta HTTP de volta a

aplicacao do utilizador.

O lado da aplicacao cliente para comunicar com a API SLOC tem de criar um pedido HTTP em

que no Uniform Resource Locator (URL) sao indicados os parametros necessarios para o seu proces-

samento. Um exemplo de pedido HTTP em javascript ao sistema SLOC e apresentado na lista de

codigo 4.1.

E fundamental que o URL do pedido HTTP contenha o IP atribuindo ao sistema SLOC (192.168.2.1),

o nome do ficheiro slocAPI.php que implementa a API (listagem do codigo em A.1) e os parametros

referentes ao pedido enviado. A API SLOC reconhece um conjunto de parametros intuitivos e de facil

utilizacao, que sao:

func Serve para definir a funcao que a aplicacao utilizador pretende desencadear no sistema SLOC.

app Identifica a aplicacao que efetuou o pedido.

path Indica o caminho/local na estrutura de dados (Base de dados SLOC), onde sera efetuada a acao.

Existe tambem as opcoes de path1 e

path2 Caso seja necessario indicar dois caminhos diferentes.

filename Para indicar o nome de um ficheiro a manipular.

id Identifica o utilizador.

38

pass Password do utilizador.

data Representa os dados que sao enviados para o SLOC (pode ser informacao sobre localizacao, ou

outro tipo de informacao).

hour A hora para atribuir a uma localizacao associada a um utilizador.

min Os minutos a atribuir a uma localizacao de um utilizador.

Listagem 4.1: Pedido HTTP em JavaScript.

1 var xmlhttp = new XMLHttpRequest ();

2 xmlhttp.onreadystatechange = function () {

3 if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {

4 var response = xmlhttp.responseText;

5 doSomething(response);

6 }

7 };

8 xmlhttp.open("GET", "http: //192.168.2.1/ slocAPI.php?app=XXXX&

func=XXXX&path=XXXX", true);

9 xmlhttp.send ();

Na API estao tambem implementadas as funcionalidades dos componentes gestor de autenticacao

e gestor de localizacao do sistema SLOC.

4.4 Base de dados SLOC

A escolha da base de dados que melhor se adequa ao sistema de localizacao nao esta abrangido

no ambito desta dissertacao de mestrado. Seria necessario efetuar uma pesquisa e um estudo deta-

lhado sobre as caracterısticas de varias base de dados de forma a selecionar de forma crıtica, qual

seria a mais adequada para o sistema SLOC. Como o sistema tem de ter a capacidade de armaze-

nar informacao gerada pela interacao entre o sistema e as aplicacoes, a solucao foi guardar toda a

informacao em pastas e ficheiros na diretoria raiz do servidor web (/home/pi/www).

Cada aplicacao tem uma pasta associada como estrutura de base de dados e que e bem conhecida

pelo programador da respetiva aplicacao. Quando e pretendido efetuar um pedido HTTP, o programa-

dor tem de indicar o caminho/local no parametro path onde serao feitas as alteracoes pretendias, como

esta referido na Seccao 4.3. O dados sao armazenados em forma de texto sem restricao ao tamanho

39

da informacao, em que o programador apenas de ter em conta que o sımbolo ; e o separador para

diferentes tipos de dados.

4.5 Aplicacoes do utilizador

Com o objetivo de avaliar o sistema SLOC, foi desenvolvido um conjunto de aplicacoes com base

em alguns cenarios descritos na Seccao 3.2 e que serao apresentados seguidamente.

Figura 4.7: Aplicacao: registo de presenca nas aulas - ecra de introducao do IP.

4.5.1 Registo de presencas nas aulas

A aplicacao de registo de presencas dos alunos na sala de aulas e a continuacao do projeto

locDev [37] realizado por alunos do IST e que analogamente ao SLOC tambem e um sistema de

localizacao por proximidade baseado na tecnologia Wi-Fi. O registo das presencas nas aulas pelo sis-

tema locDev e realizado com a interacao com a pagina PHP associada ao servidor web do sistema e

que os alunos podem aceder atraves de um web browser.

Com o objetivo de demonstrar a compatibilidade do sistema SLOC, para alem de ser possıvel inte-

grar a pagina PHP do sistema locDev, foi desenvolvida uma aplicacao baseada no OS Android®com

as mesmas funcionalidades de registo de presencas.

Depois de instalar a aplicacao num dispositivo Android® e de estabelecer ligacao a rede Wi-Fi do

sistema SLOC foi possıvel fazer o registo de presencas nas aulas efetuando os seguintes passos:

1º passo: Introduzir o IP referente ao SLOC. E apenas necessario introduzir o IP uma primeira vez,

ficando guardado nas preferencias da aplicacao, mas e possıvel fazer a alteracao se pretendido

(Figura 4.7).

40

2º passo: Verificar e validar o user id e password (caso um aluno ainda nao esteja registado a

aplicacao tem a opcao

lstinline—create account— para criar novas contas aluno (Figura 4.8).

Figura 4.8: Aplicacao: registo de presenca nas aulas – ecra de inicial de login.

3º passo: E apresentada na aplicacao a aula que esta a decorrer no momento e para confirmar a

presenca, o aluno tem de introduzir um PIN que o professor disponibiliza no inicio da aula (Fi-

gura 4.9).

Figura 4.9: Aplicacao: registo de presenca nas aulas – ecra de confirmacao de presenca.

Para que a aplicacao consiga trocar mensagens HTTP com o sistema SLOC foi utilizada a biblioteca

HttpURLConnection [38] na sua implementacao, o processo foi identico ao do codigo 4.1 em que o

programador tem de construir um URL composto pelo IP do SLOC, a pagina PHP que implementa a API

SLOC, o nome da funcao/metodo que sera processado no lado servidor e os parametros necessarios

para fazer processamento de forma correta.

41

4.5.2 Tabelas e grafico de presencas nas aulas

Esta aplicacao vem tambem na continuacao do trabalho locDev e tem como objetivo solicitar

informacao dos registos das presencas das aulas para criar tabelas e graficos de leitura simplista e intui-

tiva de acordo com os dados recolhidos atraves da comunicacao com o sistema SLOC. E uma aplicacao

web implementada atraves das linguagens de desenvolvimento HyperText Markup Language (HTML),

Cascading Style Sheets (CSS), JavaScript e foi utilizado a framework Bootstrap12 para desenhar a User

Interface (UI) da aplicacao e a biblioteca D3.js13 para desenhar as tabelas e o grafico de presencas nas

aulas.

Figura 4.10: Aplicacao: Graficos das presencas nas aulas - Tabela de presencas por semana.

A aplicacao pode ser acedida pela grande maioria de web browser instaladas em qualquer OS, o

que demonstra a generalidade e grande compatibilidade do sistema desenvolvido. Tal como a aplicacao

Android® referida anteriormente, esta aplicacao tambem tem um sistema de login para que so os alu-

nos que tenham conta criada no sistema possam aceder a informacao sobre as presencas nas aulas.

Depois de ter sido feito o login e possıvel escolher entre tres opcoes para desenhar tabelas e grafico,

que sao:

Full Attendance: cria uma tabela com todos os dias de aulas e marca a verde o dia em que o aluno

12Fonte: http://getbootstrap.com/ - Ultima Visita: 04/201513Fonte: http://d3js.org/ - Ultima Visita: 01/2015

42

Figura 4.11: Aplicacao: Graficos das presencas nas aula - Grafico do total e de percentagens das presencas.

esteve presente.

Attendance by Week: desenha uma tabela semelhante a anterior, mas com a diferenca de que e

possıvel escolher a semana que e pretendida visualizar na tabela em vez de mostrar todos os

dias de aulas (Figura 4.10).

Percentage of Attendance: desenha um grafico que demonstra o total de presenca dos alunos nas

aulas ate a data e demonstra tambem a percentagem total de assiduidade dos alunos (Fi-

gura 4.11).

Antes de serem mostradas as tabelas ou o grafico das presencas nas aulas, e necessario selecionar

o turno, ou turnos para os quais serao criadas as tabelas ou o grafico de presencas dos alunos na

sala de aula, como apresenta a Figura 4.12. Os pedidos ao sistema SLOC sao efetuados atraves de

httpRequest em JavaScript como o da lista de codigo 4.1.

4.5.3 Registo de pedidos em restaurantes

Com o objetivo de demonstrar a versatilidade do sistema SLOC, foram desenvolvidas duas

aplicacoes baseadas no cenario de registo de pedidos em restaurantes, como ja foi referido na

Seccao 3.2. Ambas as aplicacoes foram desenvolvidas com base nas linguagens de desenvolvimento

43

Figura 4.12: Aplicacao: Tabelas e Grafico das Presencas nas Aulas - selecao de turnos.

web HTML, CSS, JavaScript e utilizaram a framework Bootstrap. As aplicacoes dividem-se numa

aplicacao de utilizador, que permite efetuar pedidos da ementa do restaurante e uma aplicacao para o

backoffice do restaurante que sera usada pelo seu staff e que fara a gestao da ementa do restaurante

e dos pedidos dos clientes.

4.5.3.A Aplicacao Restaurante - Utilizador

A aplicacao do lado do cliente e acedida atraves da leitura de um QR-Code(Figura 4.13) colocado

estrategicamente nas mesas do restaurante e que identificam cada lugar.

Figura 4.13: Link para aplicacao pedidos no restaurante, em QR-Code.

O cliente ao chegar ao restaurante acede a rede wireless do SLOC e fara a leitura do QR-Code que

se encontra no seu lugar. Essa leitura do codigo faz com que o dispositivo do cliente seja redirecionado

para a pagina da aplicacao de registo de pedidos com a informacao escondida sobre a mesa e lugar

do cliente (e.g. http://192.168.2.1/restapp/resapp.html?%3A1%201%205%201).

44

(a) Ecra com as opcoes dospratos principais.

(b) Ecra com a totalidade dopedido.

Figura 4.14: Aplicacao: pedidos de clientes do restaurante - Pedido do cliente.

Atraves da aplicacao o cliente conseguira visualizar a ementa do restaurante e selecionar as opcoes

que pretende (Figura 4.14(a)), mas numa primeira fase o cliente tera de fazer o registo e login para que

seja identificado pelo sistema SLOC e consiga usufruir das promocoes e ofertas do restaurante.

Quando termina de selecionar as opcoes da ementa que pretende pedir, o cliente podera visu-

alizar a totalidade do pedido e o montante relacionado atraves do menu da aplicacao Order Menu

(Figura 4.14(b)) e seguidamente validar o seu pedido.

4.5.3.B Aplicacao restaurante - backoffice

A aplicacao backoffice e acedida pelo staff do restaurante atraves de um web browser e esta dividida

em gestao da ementa do restaurante e gestao dos pedidos dos clientes. No menu de gestao da ementa

e possıvel adicionar e remover as opcoes que existem na ementa e que sao visualizadas na aplicacao

cliente (Figura 4.15).

O menu gestao dos pedidos (Figura 4.16) permite visualizar os pedidos que ja foram envios pelos

clientes, assim como verificar quais os pedidos que ja foram concretizados (quando o botao Show Oder

esta a verde), os que estao a ser atendidos (quando o botao Show Order esta a amarelo) e os que

estao por atender (quando o botao Show Order nao sofre alteracao da cor).

Em cada pedido que e visualizado no menu de gestao de pedidos e possıvel aceder a outro menu

45

Figura 4.15: Aplicacao: backOffice do restaurante - menu de gestao de ementas.

atraves do botao Show Order (Figura 4.17) que mostra as opcoes escolhidas pelo cliente e onde se

fara a alteracao do estado do pedido.

4.6 Resumo

Neste capıtulo, foi abordado todo o processo de implementacao do sistema SLOC, as principais tec-

nologias e as linguagens de desenvolvimento que foram utilizadas para a implementacao do sistema.

Foi apresentado o equipamento utilizado para desenvolver o sistema SLOC (Raspberry Pi), foram des-

critas as configuracoes efetuadas para transformar Raspberry Pi em um AP com as caracterısticas de

uma servidor web, que aproveitou o facto de que o sistema se baseia na tecnologia Wi-Fi para criar

uma rede wireless com o SSID (sloc) que identifica a rede do sistema e que serve como meio de

comunicacao entre as demais aplicacoes e o sistema SLOC.

E descrita a implementacao da API SLOC, a linguagem de programacao com a qual foi desenvolvida

e o processo de processamento dos pedidos dos cliente e resposta do sistema. E descrito como e que

os dados sao armazenados no sistema e o seu funcionamento utilizando pastas e ficheiros localizados

na diretoria raiz do servidor web (/home/pi/www).

Por fim, foram descritas as aplicacoes desenvolvidas para avaliar o sistema SLOC. Foi apresentado

46

Figura 4.16: Aplicacao: backoffice do restaurante - menu de gestao de pedidos.

Figura 4.17: Aplicacao: backOffice do restaurante - menu que mostra os detalhes do pedido do cliente.

47

o modo de funcionamento e objetivo de cada uma, assim como o processo de comunicacao com o

sistema de localizacao desenvolvido (SLOC).

48

5Avaliacao do Sistema

Conteudo

5.1 Metodologia e cenarios de avaliacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.3 Avaliacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.4 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

49

50

Para avaliar o sistema foi necessario criar um conjunto distinto de aplicacoes, de forma a que fosse

possıvel avaliar a compatibilidade e funcionalidade do SLOC. O sistema visa dar suporte a um conjunto

alargado de programas de valor acrescentado com base na localizacao dos seus utilizadores e de

modo a demonstrar a versatilidade do sistema foram desenvolvidas aplicacoes baseadas em alguns

dos cenarios anteriormente referidos.

A comunicacao com o SLOC e realizada com o auxilio de um Raspberry Pi com a funcionalidade de

AP, que permite obter dados necessarios para a avaliacao. Os dados a analisar tem como principais

metricas de avaliacao da eficacia e eficiencia do sistema, o tempo de resposta, a escalabilidade do

sistema e o correto armazenamento dos dados.

5.1 Metodologia e cenarios de avaliacao

A metodologia e cenarios de avaliacao para avaliar o sistema SLOC centrou-se na simulacao de

multiplos pedidos HTTP baseados em alguns dos pedidos efetuados pelas aplicacoes desenvolvidas.

Os tipos de pedidos simulados para avaliar o sistema foram os seguintes:

PA1 – pedido efetuado pela aplicacao de presenca nas aulas, a solicitar a confirmacao da presenca na

sala de aulas. O pedido HTTP utiliza o metodo POST e tem o numero de aluno como dados a

guardar no sistema SLOC. O pedido tem como resposta 1 caso o pedido tenha sido processado

corretamente, ou um warning no caso de erro.

PA2 – pedido referente a aplicacao de tabelas e grafico das presencas na sala de aulas. O pedido

HTTP consiste em solicitar informacao sobre o registo das presencas nas aulas. E utilizado

o metodo GET e tem como resposta a lista de presencas referente a um, ou mais turnos

previamente selecionados, assim como a lista de alunos inscritos a cadeira.

PA3 – referente a aplicacao de registo de pedidos num restaurante e que consiste em simular o

carregamento da aplicacao no dispositivo movel do cliente quando faz a solicitacao da ementa

do restaurante. E um pedido HTTP que utiliza o metodo GET e que recebe como resposta um

objeto JavaScript Object Notation (JSON) com todas as opcoes da ementa do restaurante.

Para analizar os tempos de resposta dos pedidos de teste, foi utilizada a aplicacao Postman®1 e um

portatil MacBook Pro® com o processador 2,3 GHz Intel Core i5, 4 GB de memoria Random Access

Memory (RAM), a correr o sistema operativo OS X Yosemite®. A aplicacao Postman® pode ser instalada

1Fonte: https://www.getpostman.com/ - Ultima Visita: 05/2015

51

de forma gratuita a partir da Chrome Web Store®2 e permite testar APIs web atraves da criacao e envio

de multiplos pedidos HTTP, como apresentam as Figuras 5.1 e 5.2. Depois de estar estabelecida a

ligacao entre o portatil e o sistema SLOC (Raspberry Pi) atraves da rede wireless com o SSID sloc e

utilizada a aplicacao Postman® para obter os tempos de resposta do sistema desenvolvido.

Figura 5.1: Criacao e envio de pedido HTTP.

De forma a avaliar o sistema num ambiente real, foram tambem realizados testes numa sala utili-

zando 13 dispositivos moveis com o objetivo de testar a capacidade do sistema em suportar ligacoes e

pedidos HTTP de diferentes dispositivos. Os dispositivos moveis utilizados foram 2 tablets, 7 smartpho-

nes e 5 computadores portateis.

5.2 Resultados

Os resultados obtidos tiveram como testes base os cenarios de avaliacao referidos na Seccao 5.1

para avaliar de uma forma critica o sistema SLOC.

2Fonte: https://chrome.google.com/webstore/category/apps?hl=pt-PT - Ultima Visita: 05/2015

52

Figura 5.2: Envio de multiplos pedidos HTTP.

5.2.1 Tempo de processamento

Na interacao entre as aplicacoes dos utilizadores e o sistema de localizacao, a comunicacao entre

ambas as partes foi um processo fundamental, tendo de ser eficiente e com um tempo de resposta

curto entre pedidos. A satisfacao dos utilizadores e a credibilidade dos resultados obtidos pelo SLOC

depende do intervalo de tempo entre um pedido efetuado por uma aplicacao e a resposta a esse pedido

pelo sistema.

Para avaliar a eficiencia do sistema em termos de velocidade de resposta aos pedidos feitos pelas

aplicacoes, foram efetuados testes aos tempos de processamento do sistema tendo em conta a latencia

de rede, uma vez que a velocidade de resposta nao depende apenas do tempo que o sistema demora

a processar o pedido, mas tambem da latencia da rede, visto que a comunicacao e efetuada atraves

da rede sem fios. O teste de latencia consiste em medir o tempo que um pacote de rede demora a

percorrer de um ponto da rede ate ao destino e voltar. Para que haja uma distincao entre o tempo

de latencia e o tempo que o sistema demora a processar um pedido foram feitos dois tipos de teste:

i) fazer ping da aplicacao utilizador para o servidor do sistema (medir a latencia e calcular a media);

53

ii) efetuar um conjunto de pedidos HTTP ao servidor de acordo com os cenarios apresentados na

Seccao 5.1 e utilizando a aplicacao Postman® (sabendo o tempo de latencia poder-se-a calcular o

tempo de processamento do sistema).

Para efetuar o teste de latencia descrito anteriormente foi utilizado o comando ping no terminal

do portatil, de forma a analisar os tempos de Round-Trip Time (RTT) obtidos. Como demonstra a

Figura 5.3, o teste consistiu em enviar 20 pacotes Internet Control Message Protocol (ICMP) e foi

obtido o valor aproximado de 62 ms como media de RTT, sendo esse o valor utilizado como latencia da

rede.

Figura 5.3: Comando ping de 20 pacotes ICMP ao sistema SLOC.

Como descrito anteriormente, para obter o tempo de processamento do sistema SLOC foi ne-

cessario medir o tempo que demora a responder aos pedidos efetuados pelas aplicacoes tendo em

conta a latencia da rede (62 ms), foi entao utilizada a seguinte formula:

T Processamento(n) = (avg(RTT (n))− T Latencia) ∗ n (5.1)

T Processamento(n) e o tempo de processamento do sistema SLOC para n pedidos HTTP.

n numero de pedidos HTTP.

avg(RTT(n)) e a media de RTT em n pedidos

T Latencia e valor da latencia da rede (62ms).

A Tabela 5.1 apresenta um teste que consistiu em efetuar 50 pedidos HTTP para cada cenario de

54

teste (PA1, PA2 e PA3), atraves da aplicacao Postman® e que teve o objetivo de perceber a influencia

dos diferentes cenarios, com tamanhos de pacotes diferentes, no tempo de processamento do sistema.

Tabela 5.1: Informacao sobre 50 pedidos HTTP efetuados para cada cenario de teste

Cenarios Media de RTT Tamanho dos Pacotes Tempo de ProcessamentoPA1 343 ms 180 Bytes 14.2 sPA2 376 ms 3.6 KBytes 15.6 sPA3 314 ms 364 Bytes 12.6 s

5.2.2 Escalabilidade

Uma mais valia para o sistema SLOC e a capacidade que tem em suportar um grande numero de

pedidos dos utilizadores sem deixar de responder e manter uma eficiencia de funcionamento constante.

Para testar a escalabilidade do sistema foram simulados varios pedidos de utilizadores, atraves da

aplicacao Postman®, de forma a analisar o comportamento do sistema a medida que o numero de

pedidos aumenta. E muito importante ter a nocao do ponto crıtico do sistema, relativo ao numero

maximo de pedidos que pode suportar. Foi tambem efetuado um teste numa sala em que um maximo

de 13 dispositivos estabeleceram ligacao de forma simultanea com o sistema SLOC com o objetivo de

avaliar o sistema em termos da capacidade de comunicacao com diferentes dispositivos moveis.

Com os valores obtidos atraves da formula descrita anteriormente, a Figura 5.4 apresenta a

diferenca do tempo de processamento do sistema SLOC em relacao ao numero de pedidos HTTP

efetuados.

Figura 5.4: Tempo de processamento do sistema SLOC.

Em relacao ao teste efetuado na sala com utilizadores reais, numa primeira experiencia apenas

foram utilizados 5 dispositivos para interacao com o sistema, em que todos os 5 conseguiram ligar-se a

rede wireless e efetuar um pedido de registo de presenca nas aulas atraves da interface web utilizando

55

a pagina de registo das presencas nas aulas baseada no projeto locDev referido na Seccao 4.5.1.

Na segunda experiencia aumentou-se o numero de dispositivos (13 dispositivos) a executar o mesmo

procedimento que na experiencia anterior e constatou-se que o resultado foi o mesmo; a ligacao ao

SLOC e o registo de presenca nas aulas foi efetuado com sucesso.

5.2.3 Correto armazenamento dos dados

Um dos elementos mais importantes no sistema SLOC e a componente base de dados. Pois e na

base de dados do sistema que sao armazenadas as estruturas de dados que contem a informacao

sobre todas localizacoes e da qual toda a funcionalidade do sistema de localizacao esta dependente.

Torna-se por isso fundamental testar o correto armazenamento dos dados de entrada e saıda do sis-

tema, de forma a que pedidos efetuados pelos utilizadores nao sejam respondidos com informacao

incorreta.

De modo a avaliar o comportamento e integracao da base de dados no sistema proposto, foram

efetuados alguns testes que consistiram em analisar o correto armazenamento dos seguintes dados:

i) registo da presenca de alunos na sala de aula; ii) registo de pedidos efetuados por clientes num

restaurante.

Teste i: foram efetuados 13 pedidos de registo de presencas atraves da interface web e aplicacao

Android de acordo com o teste realizado na sala, utilizando diferentes dispositivos moveis. Na

verificacao dos ficheiro onde os dados foram guardados constatou-se que o armazenamento de

dados no sistema foi realizado com sucesso sem perda de dados.

Teste ii: baseado no mesmo numero de pedidos que o cenario anterior, mas utilizando a aplicacao

de pedidos num restaurante para testar o armazenamento de dados e a aplicacao de gestao do

restaurante para verificar o correto armazenamento dos pedidos efetuados; verificou-se como no

primeiro teste que o armazenamento de dados no sistema foi efetuado com sucesso.

5.3 Avaliacao

Com a analise dos resultados obtidos atraves dos testes efetuados ao sistema SLOC foi possıvel

concluir que o tempo de latencia (62 ms) e um bom valor. O facto do servidor web estar instalado

no mesmo equipamento que serve de AP, faz com que os tempos de resposta sejam menores, uma

vez que nao existe encaminhamento do pedido para outras redes ou Internet. Em termos de tempo

de processamento do sistema foi possıvel observar que nao existe uma diferenca significativa entre os

tempos de resposta de pedidos com pacotes de diferentes tamanhos, como apresenta a Tabela 5.1.

Com o teste de 50 pedidos HTTP executados de acordo com os cenarios (PA1, PA2 e PA3), tambem

56

se verificou que o tempo medio de processamento do sistema e aproximadamente 14 segundos, sendo

que o aumento do numero de pedidos fez com que o tempo de processamento tambem aumentasse,

ou seja quanto maior e o numero de utilizadores a efetuar pedidos em simultaneo, maior sera o tempo

de processamento do sistema, aumentando o tempo de respostas dos pedidos utilizador.

Em relacao aos teste de escalabilidade, foi possıvel verificar que o sistema tem capacidade para

dar resposta a um elevado numero de pedidos HTTP e que o tempo de processamento foi proporcional

ao numero de pedidos, como referido anteriormente e como apresenta a Figura 5.4. Com os testes

efetuados com utilizadores reais foi possıvel verificar que o sistema tem a capacidade de comunicar

com diferentes dispositivos sem falhas nem perdas de informacao, ou seja, de forma efetiva.

Os testes efetuados para avaliar o correto armazenamento dos dados demonstram que os dados

foram corretamente armazenados no sistema sem sofrerem qualquer tipo de alteracoes ou perdas.

Em geral, os resultados obtidos demonstram o bom desempenho e a eficiencia do sistema desen-

volvido. No entanto, podem ser feitas algumas melhorias e testes em cenarios com interferencia de

outras redes wireless e com mais utilizadores reais.

5.4 Resumo

Neste capıtulo, foi apresentada a metodologia e os cenarios utilizados para testar varios aspetos

dos sistema SLOC, tais como a sua eficacia e desempenho. Foram efetuados testes de forma a avaliar

o tempo de processamento, a escalabilidade e o correto armazenamento de dados do sistema. Os

teste realizados dividiram-se em dois grupos, em que um consistiu em simular pedidos HTTP identicos

aos das aplicacoes desenvolvidas, atraves da aplicacao Postman® e o outro grupo foi realizado com

utilizadores reais atraves de diferentes dispositivos moveis. Com os resultados obtidos, foi possıvel

verificar o bom desempenho do sistema em termos de velocidade de resposta a pedidos a HTTP, de

comunicacao de diferentes dispositivos e do correto armazenamento de dados.

57

58

6Conclusao

Conteudo

6.1 Conclusoes finais e contribuicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

6.2 Limitacoes e trabalho futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

59

60

Neste capıtulo sera apresentado um resumo do trabalho desenvolvido e as conclusoes finais retira-

das da implementacao e avaliacao do sistema SLOC. Sera tambem apresentada as suas limitacoes e

possibilidades de trabalho futuro.

6.1 Conclusoes finais e contribuicoes

Nesta dissertacao foi apresentada a solucao do SLOC, um sistema de localizacao que juntamente

com a respetiva plataforma/middleware da suporte a uma gama alargada de aplicacoes que oferecem

servicos baseados na localizacao.

Os servicos baseados na localizacao estao a ter um crescimento exponencial e sao por isso cada

vez mais importantes para os utilizadores moveis. Para desenvolver um sistema de localizacao e ne-

cessario ter um conhecimento abrangente das tecnologias de posicionamento e dos atuais servicos

baseados na localizacao, assim como dos varios contextos em que se podem aplicar. E fundamen-

tal que novos sistemas de localizacao integrem diferentes tecnologias de posicionamento de forma a

disponibilizar um servico mais completo para os programadores de aplicacoes.

O sistema desenvolvido utilizou um equipamento de baixo custo (e.g. Raspberry Pi com adaptador

USB Wi-Fi) e recorreu a tecnologia de posicionamento Wi-Fi para obter informacao de contexto sobre

a localizacao do utilizador. O SLOC tem o objetivo de simplificar o desenvolvimento de aplicacoes

baseadas na localizacao, oferecendo uma API facil de utilizar pelo programador e que torne o sistema

eficaz e eficiente. A comunicacao entre o SLOC e as aplicacoes de localizacao sao realizadas atraves

da rede wireless criada pelo sistema e que tem o SSID sloc a que os dispositivos dos utilizadores tem

de estabelecer uma ligacao para trocarem mensagens. As mensagens trocadas entre aplicacoes e o

sistema sao pedidos e respostas HTTP que sao processados pela API SLOC que corre no servidor

web instalado no sistema.

Com o objetivo de fazer uma avaliacao do sistema desenvolvido, foi desenvolvido um conjunto

de aplicacoes baseadas na localizacao. A implementacao das aplicacoes teve em conta diferentes

cenarios de utilizacao e diferentes linguagens de desenvolvimento (PHP, HTML, CSS, JavaScript e

Java na implementacao da aplicacao Android). Foi tambem criado um conjunto de testes de simulacao

de multiplos pedidos HTTP efetuados pelas aplicacoes desenvolvidas e um teste em ambiente real com

o objectivo de avaliar o desempenho do sistema na interacao com diferentes dispositivos. Os resulta-

dos obtidos na avaliacao do sistema demonstraram que o tempo de processamento e proporcional ao

numero de pedidos que foram efetuado no sistema, ou seja, quando o numero de pedidos aumenta

tambem aumenta o tempo de processamento e de resposta do sistema. Este resultado demonstra que

o sistema pode ter alguns problemas de escalabilidade. Em relacao ao teste efetuado com utilizadores

reais foi possıvel verificar que o sistema teve um comportamento positivo, em que foi possıvel comu-

61

nicar com 13 dispositivos moveis sem que tenham ocorrido erros de ligacao ou de alteracao/perda de

dados. No entanto, seria necessario realizar testes com mais dispositivos para uma melhor avaliacao do

sistema em termos de capacidade de ligacao e comunicacao com um numero elevado de dispositivos.

Com a avaliacao realizada e com as diferentes aplicacoes desenvolvidas, verificou-se que o sis-

tema SLOC e compatıvel e permite implementar um conjunto alargado de aplicacoes baseadas na

localizacao para diferentes dispositivos com diferentes OS. Em geral, o sistema teve um bom desem-

penho na avaliacao que foi efetuada, no entanto foi possıvel observar que podem ser feitas algumas

importantes melhorias ao nıvel de escalabilidade e seguranca. De acordo com os requisitos e os obje-

tivos apresentados nas seccoes 1.2 e 1.3, foram feitas as seguintes contribuicoes:

• Desenvolvimento de um sistema de localizacao com suporte na tecnologia Wi-Fi, em que foi

utilizado um equipamento de baixo custo (Raspberry Pi e um adaptador USB Wi-Fi) e que em

geral, demonstrou um bom desempenho;

• Implementacao de uma plataforma/middeware que serve de canal de comunicacao e de API de

facil utilizacao pelo programador;

• Desenvolvimento de um conjunto de aplicacoes para testar e avaliar do sistema desenvolvido.

6.2 Limitacoes e trabalho futuro

O sistema desenvolvido tem o suporte da tecnologia de posicionamento Wi-Fi, mas tendo em vista

um trabalho futuro, podera ter a capacidade de obter informacao de localizacao atraves de outras tec-

nologias de posicionamento, para que isso seja possıvel e necessario alterar o grupo de servicos da

API, de forma a que o sistema consiga receber e manipular o novo tipo de informacao de localizacao.

Em relacao a seguranca, seria interessante a possibilidade de integrar um sistema de autenticacao

no sistema SLOC, de forma a verificar a autenticidade dos seus utilizadores; tornando-o num sistema

mais seguro com maior credibilidade e de confianca. Ainda em termos de seguranca, seria importante

que a comunicacao entre o SLOC e as aplicacoes utilizador, fossem feitas atraves de um canal seguro

em que a informacao trocada entre ambos nao fosse adquirida/revelada por terceiros mal intencionados.

Outra das limitacoes do sistema SLOC foi o armazenamento dos dados em ficheiros. Este metodo

de guardar a informacao trocada entre o sistema e as aplicacoes baseadas na localizacao na memoria

secundaria do equipamento utilizado para o desenvolvimento do sistema SLOC (Raspberry Pi utilizando

um cartao de memoria de 16GB), pode originar um problema de escalabilidade. Estando dependente

da disponibilidade de espaco de armazenamento dessa mesma memoria, uma vez que quantos mais

utilizadores interagem com o sistema, mais informacao sera armazenada em ficheiros na memoria

secundaria.

62

Bibliografia

[1] P. Fuhrer, D. Guinard, and O. Liechti, “RFID : From Concepts to Concrete Implementation Table of

Contents,” IPSI-2006 MARBELLA, February 10-13, 2006, Marbella, Spain, 2006.

[2] S. Burkard, “Near Field Communication in Smartphones,” Dep. of Telecommunication Systems,

Service-centric Networking Berlin Institute of Technology, Germany. [Online]. Available: http://www.

snet.tu-berlin.de/fileadmin/fg220/courses/WS1112/snet-project/nfc-in-smartphones burkard.pdf

[3] H. Kim and J. Song, “Real-time u-LBS system for mobile vehicle in 3G networks,” Proceedings of

the International Conference on Mobile Technology, Applications, and Systems, ACM, 2008.

[4] J. Hightower and G. Borriello, “Location Systems for Ubiquitous Computing,” Computer, IEEE, no.

August, 2001. [Online]. Available: http://ieeexplore.ieee.org/xpls/abs all.jsp?arnumber=940014

[5] S. Dobson, “Leveraging the subtleties of location,” Proceedings of the 2005 joint conference

on Smart objects and ambient intelligence: innovative context-aware services: usages

and technologies, ACM, no. october, pp. 189–193, 2005. [Online]. Available: http:

//dl.acm.org/citation.cfm?id=1107597

[6] S. Saroiu and A. Wolman, “Enabling new mobile applications with location proofs,” Proceedings

of the 10th workshop on Mobile Computing Systems and Applications - HotMobile ’09, pp. 1–6,

2009. [Online]. Available: http://portal.acm.org/citation.cfm?doid=1514411.1514414

[7] X. Ni, J. Luo, B. Zhang, J. Teng, and X. Bai, “MPSL: A Mobile Phone-Based

Physical-Social Location Verification System,” Wireless Algorithms, Systems, and Applications,

7th International Conference, WASA 2012, Yellow Mountains, China. [Online]. Available:

http://link.springer.com/chapter/10.1007/978-3-642-31869-6 42

[8] B. Carbunar and R. Potharaju, “You unlocked the Mt. Everest badge on foursquare! Countering

location fraud in Geosocial Networks,” 2012 IEEE 9th International Conference on Mobile

Ad-Hoc and Sensor Systems (MASS 2012), pp. 182–190, Oct. 2012. [Online]. Available:

http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=6502516

63

[9] L. Zhang, C. Tao, and G. Yang, “Wireless positioning: fundamentals, systems and state

of the art signal processing techniques,” InTech, Rijeka, Croatia, 2011. [Online]. Avai-

lable: http://www.intechopen.com/source/pdfs/14749/InTech-Wireless positioning fundamentals

systems and state of the art signal processing techniques.pdf

[10] A. Pathak and Y. C. Hu, “Fine Grained Energy Accounting on Smartphones with Eprof,” EuroSys,

2012.

[11] S. Steiniger, M. Neun, and A. Edwardes, “Foundations of location based services,” Lecture

Notes on LBS, pp. 1–28, 2006. [Online]. Available: http://ftp.jaist.ac.jp/pub/sourceforge/j/project/ju/

jump-pilot/w other freegis documents/articles/lbs lecturenotes steinigeretal2006.pdf

[12] M. Mohammadi and A. Naserasadi, “A Survey on Location based Servi-

ces and Positioning Techniques.” International Journal of Computer Applica-

tions (0975 – 8887), vol. 24, no. 5, pp. 1–5, 2011. [Online]. Availa-

ble: http://search.ebscohost.com/login.aspx?direct=true&profile=ehost&scope=site&authtype=

crawler&jrnl=09758887&AN=74099376&h=tNQwhCqLNXcRaWrKh3WYefkOcPciNbmOurz%

2BaS84mN6dh7Bct5ujTbJmuMm%2FiBZ3e1huEm2LaUG4RZpKgG8I0w%3D%3D&crl=c

[13] G. Gomes, “Sistema RFID com tecnologia ZigBee,” Ph.D. dissertation, 2008.

[14] P. Bahl and V. Padmanabhan, “RADAR: an in-building RF-based user location and tracking system,”

INFOCOM 2000. Nineteenth Annual Joint Conference of the IEEE Computer and Communications

Societies. Proceedings. IEEE (Volume:2 ), 2000.

[15] S. Beauregard and H. Haas, “Pedestrian Dead Reckoning : A Basis for Personal

Positioning,” PROCEEDINGS OF THE 3rd WORKSHOP ON POSITIONING, NAVIGATION AND

COMMUNICATION, pp. 27–36, 2006. [Online]. Available: http://www.wpnc.net/fileadmin/WPNC06/

Proceedings/33 Pedestrian Dead Reckoning.pdf

[16] J. Lourenco, “A moda dos servicos baseados na localizacao do

utilizador,” 2013. [Online]. Available: http://pplware.sapo.pt/tutoriais/networking/

a-moda-dos-servicos-baseados-na-localizacao-do-utilizador/

[17] J. Han, J. Lee, T. T. Kwon, D. Jo, T. Ha, and Y. Choi, “How to Mitigate Signal Dragging during

Wardriving,” IEEE Pervasive Computing, vol. 9, no. 1, pp. 20–27, Jan. 2010. [Online]. Available:

http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5370803

[18] J. Chon and H. Cha, “Lifemap: A smartphone-based context provider for location-

based services,” Pervasive Computing, IEEE, pp. 58–67, 2011. [Online]. Available: http:

//ieeexplore.ieee.org/xpls/abs all.jsp?arnumber=5686873

64

[19] G. Stevenson, S. Dobson, and P. Nixon, “LOC8: A Location Model and Extensible Framework for

Programming with Location,” Pervasive Computing, IEEE, pp. 28–37, 2010.

[20] A. Ranganathan and J. Al-Muhtadi, “Middlewhere: a middleware for location awareness in

ubiquitous computing applications,” Proceedings of the 5th ACM/IFIP/USENIX international

conference on Middleware, 2004. [Online]. Available: http://dl.acm.org/citation.cfm?id=1045686

[21] J. Roth, “Flexible positioning for location-based services,” IADIS International Journal

on WWW/Internet, 2003. [Online]. Available: http://deposit.fernuni-hagen.de/2243/1/Flexible

Positioning for Location-based Services.pdf

[22] BlueBroadcaster, “Proximity Marketing,” 2014. [Online]. Available: http://www.bluebroadcaster.com/

[23] BLIPsystems, “BlipTrack,” 2014. [Online]. Available: http://www.bliptrack.com/

[24] Google-Development, “The Google Maps Geolocation API,” 2014. [Online]. Available: https:

//developers.google.com/maps/documentation/business/geolocation/

[25] Android-Developer, “Location & Places,” 2014. [Online]. Available: https://developer.android.com/

google/play-services/location.html#

[26] V. Chitre, D. Amritansh, and D. Pandey, “Trendsetter: Location Service using Android,” Department

of Computer Engineering, Bharati Vidyapeeth College of Engineering Navi Mumbai-400614,

vol. 2, no. 4, pp. 431–436, 2013. [Online]. Available: http://www.advanceresearchlibrary.com/temp/

downloads/ijair/april2013/t81.pdf

[27] B. Ferris, K. Watkins, and a. Borning, “Location-Aware Tools for Improving Public Transit

Usability,” IEEE Pervasive Computing, vol. 9, no. 1, pp. 13–19, Jan. 2010. [Online]. Available:

http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5339120

[28] C. Fischer and H. Gellersen, “Location and navigation support for emergency responders:

A survey,” IEEE Pervasive Computing, vol. 9, no. 1, pp. 38–47, 2010. [Online]. Available:

http://comp.eprints.lancs.ac.uk/2259/

[29] L. Barkuus, A. Dey, and L. Barkhuus, “Location-Based Services for Mobile Telephony: a Study

of Users’ Privacy Concerns,” Proceedings of the INTERACT 2003, 9TH IFIP TC13 International

Conference on Human-Computer Interaction, 2003.

[30] J. Simao, C. Ribeiro, P. Ferreira, and L. Veiga, “Jano: specification and enforcement of location

privacy in mobile and pervasive environments,” Proceedings of the 2nd International Workshop

on Middleware for Pervasive Mobile and Embedded Computing, ACM, 2010. [Online]. Available:

http://dl.acm.org/citation.cfm?id=1890793

65

[31] C. Ribeiro, A. Zuquete, P. Ferreira, and P. Guedes, “SPL: An Access Control Language

for Security Policies and Complex Constraints.” NDSS Symposium, 2001. [Online]. Avai-

lable: http://www.researchgate.net/publication/221655503 SPL An Access Control Language for

Security Policies and Complex Constraints/file/e0b49526675377122d.pdf

[32] J. Hong and J. Landay, “An architecture for privacy-sensitive ubiquitous computing,” Proceedings

of the 2nd international conference on Mobile systems, applications, and services, ACM,

p. 177, 2004. [Online]. Available: http://portal.acm.org/citation.cfm?doid=990064.990087http:

//dl.acm.org/citation.cfm?id=990087

[33] M. Langheinrich, “A privacy awareness system for ubiquitous computing environments,” UbiComp

2002: Ubiquitous Computing, 2002. [Online]. Available: http://link.springer.com/chapter/10.1007/

3-540-45809-3 19

[34] R. P. Headquarters, “How-To : Turn a Raspberry Pi into a WiFi router,” 2014. [Online]. Available:

http://raspberrypihq.com/how-to-turn-a-raspberry-pi-into-a-wifi-router/

[35] G. Sims, “How to Set up a Raspberry Pi as a Wireless Access Point,” 2014. [Online]. Available:

http://www.maketecheasier.com/set-up-raspberry-pi-as-wireless-access-point/

[36] Matt, “How To Setup A Web Server On Your Raspberry Pi,” 2013. [Online]. Available:

http://www.raspberrypi-spy.co.uk/2013/06/how-to-setup-a-web-server-on-your-raspberry-pi/

[37] J. a. Amaral and R. Bruno, “locDev Client Presence Detection,” Mobile Computing, IST(Instituto

Superior Tecnico), 2013.

[38] Android-Developer, “HttpURLConnection,” 2015. [Online]. Available: http://developer.android.com/

reference/java/net/HttpURLConnection.html

66

ACodigo do Projeto

Listagem A.1: API SLOC slocAPI.php.

1 <?php

2

3 /*

4 * SLOC API

5 */

6

7 // set time zone

8 date_default_timezone_set('Europe/Lisbon ');

9

10 // get the function parameter from URL

11 $params = $_REQUEST;

12

13 switch ($params['func']) {

67

14 case 'createAccount ':

15 createAccount($params);

16 break;

17 case 'signUp ':

18 signUp($params);

19 break;

20 case 'signUpAndMetaInfo ':

21 signUpAndMetaInfo($params);

22 break;

23 case 'metaInfo ':

24 metaInfo($params);

25 break;

26 case 'createDataFile ':

27 createDataInFile($params);

28 break;

29 case 'checkIn ':

30 checkIn($params);

31 break;

32 case 'setLocationData ':

33 setLocationData($params);

34 break;

35 case 'updateLocationData ':

36 updateLocationData($params);

37 break;

38 case 'getLocationDataDir ':

39 getLocationDataDir($params);

40 break;

41 case 'getLocationDataFile ':

42 getLocationDataFile($params);

43 break;

44 case 'pushLocationData ':

45 pushData($params);

46 break;

47 case 'deleteLocationData ':

48 deleteContent($params);

49 break;

50 default :

51 echo ''func_error ''

68

52 break;

53 }

54

55 function createAccount($param) {

56 $userId = $param["id"];

57 $userPass = $param["pass"];

58 $app = $param["app"];

59 $path = $param["path"];

60

61 if (file_exists($app . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR

. $userId)) {

62 echo "0";

63 } else {

64 file_put_contents($app . DIRECTORY_SEPARATOR . $path .

DIRECTORY_SEPARATOR . $userId , $userPass);

65 echo "1";

66 }

67 }

68

69 function signUp($param) {

70 $userId = $param["id"];

71 $userPass = $param["pass"];

72 $app = $param["app"];

73 $path = $param["path"];

74

75 if (file_exists($app . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR

. $userId)) {

76 $buffer = file_get_contents($app . DIRECTORY_SEPARATOR . $path .

DIRECTORY_SEPARATOR . $userId);

77 if (strcmp($buffer , $userPass) == 0) {

78 echo "1";

79 } else {

80 echo "2";

81 }

82 } else {

83 echo "0";

84 }

85 }

69

86

87 function signUpAndMetaInfo($param) {

88 $today = getdate ();

89 $userId = $param["id"];

90 $userPass = $param["pass"];

91 $app = $param["app"];

92 $path1 = $param["path1"];

93 $path2 = $param["path2"];

94 $metaInfo = array();

95

96 $loginFile = $app . DIRECTORY_SEPARATOR . $path1 . DIRECTORY_SEPARATOR .

$userId;

97 $metaFile = $app . DIRECTORY_SEPARATOR . $path2 . DIRECTORY_SEPARATOR .

"meta-info";

98

99 if (file_exists($loginFile)) {

100 $buffer = file_get_contents($loginFile);

101 if (strcmp($buffer , $userPass) == 0) {

102 $metaData = file($metaFile);

103 $metaInfo["today"] = $today[mday] . ";" . $today[mon] . ";" .

$today[year] .

104 ";" . $today[weekday] . ";" . $today[hours] . ";" .

$today[minutes ];

105 $metaInfo["metainfo"] = $metaData;

106 unset($today);

107 echo json_encode($metaInfo);

108 } else {

109 echo "2";

110 }

111 } else {

112 echo "0";

113 }

114 }

115

116 function createDataInFile($param) {

117 $app = $param["app"];

118 $path = $param["path"];

119 $filename = $param["filename"];

70

120 $data = $param["data"];

121

122 $file = $app . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR .

$filename;

123

124 if (file_exists($file)) {

125 $content = $data;

126 } else {

127 $content = ";" . $data;

128 }

129 file_put_contents($file , $content , FILE_APPEND | LOCK_EX);

130 echo "1";

131 }

132

133 function metaInfo($param) {

134 $today = getdate ();

135 $app = $param["app"];

136 $path = $param["path"];

137 $metaInfo = array();

138

139 $metaData = file($app . DIRECTORY_SEPARATOR . $path .

DIRECTORY_SEPARATOR . "meta-info");

140

141 $metaInfo["today"] = $today[mday] . ";" . $today[mon] . ";" . $today[

year] .

142 ";" . $today[weekday] . ";" . $today[hours] . ";" . $today[

minutes ];

143 $metaInfo["metainfo"] = $metaData;

144

145 unset($today);

146 echo json_encode($metaInfo);

147 }

148

149 function checkIn($param) {

150 $today = getdate ();

151 $app = $param["app"];

152 $path = $param["path"];

153 $data = $param["data"];

71

154 $hour = $param["hour"];

155 $minutes = $param["min"];

156

157 $format = '%s/%d-%d-%d-%d-%d/';

158 $folder = sprintf($format , $app . DIRECTORY_SEPARATOR . $path , $today[

year], $today[mon], $today[mday], $hour , $minutes);

159 // $folder = sprintf($format , $form[3], 2015, 3, 13, $hour , $minutes);

160 $file = $folder . 'attendances.dat ';

161

162 if (file_exists($file)) {

163 $content = ';' . $data;

164 } else {

165 $content = $data;

166 }

167 file_put_contents($file , $content , FILE_APPEND | LOCK_EX);

168

169 unset($today);

170 echo "1";

171 }

172

173 function setLocationData($param) {

174 $app = $param["app"];

175 $path = $param["path"];

176 $d = $param["data"];

177

178 $file = $app . DIRECTORY_SEPARATOR . $path;

179

180 if (file_exists($file)) {

181 file_put_contents($file , "");

182 }

183 $data = json_decode($d);

184

185 $firstLine = true;

186 foreach ($data as $value) {

187 if ($firstLine) {

188 $content = $value;

189 $firstLine = false;

190 } else {

72

191 $content = $content . ';' . $value;

192 }

193 }

194 file_put_contents($file , $content , FILE_APPEND | LOCK_EX);

195

196 echo "1";

197 }

198

199 function updateLocationData($param) {

200 $app = $param["app"];

201 $path = $param["path"];

202 $data = $param["data"];

203

204 $file = $app . DIRECTORY_SEPARATOR . $path;

205

206 if (file_exists($file)) {

207 $content = ';' . $data;

208 } else {

209 $content = $data;

210 }

211 file_put_contents($file , $content , FILE_APPEND | LOCK_EX);

212

213 echo "1";

214 }

215

216 function getLocationDataDir($param) {

217 $app = $param["app"];

218 $path = $param["path"];

219

220 $locData = array();

221 $folders = split(",", $path);

222

223 foreach ($folders as $value) {

224 $dir = $app . DIRECTORY_SEPARATOR . $value;

225

226 $locData[$value] = getDataFromDir($dir , $value);

227 }

228 echo json_encode($locData);

73

229 }

230

231 function getLocationDataFile($param) {

232 $app = $param["app"];

233 $path = $param["path"];

234 $filepath = $app . DIRECTORY_SEPARATOR . $path;

235

236 if (file_exists($filepath)) {

237 $content = getDataFromFile($filepath);

238 } else {

239 $content = "0";

240 }

241 echo json_encode($content);

242 }

243

244 function getDataFromDir($directory) {

245 $currentDir = getcwd ();

246 $dirData = array();

247

248 if ($dh = opendir($directory)) {

249 chdir($directory);

250 while (false !== ($filename = readdir($dh))) {

251 if (is_dir($filename) && $filename != "." && $filename != "..")

{

252 chdir($currentDir);

253 $dirData[$filename] = getData($directory .

DIRECTORY_SEPARATOR . $filename);

254 chdir($directory);

255 } else if ($filename != "." && $filename != ".." && $filename !=

".DS_Store") {

256 chdir($currentDir);

257 $dirData[$filename] = getDataFromFile($directory .

DIRECTORY_SEPARATOR . $filename);

258 chdir($directory);

259 }

260 }

261 }

262 chdir($currentDir);

74

263 closedir($dh);

264 return $dirData;

265 }

266

267 function getDataFromFile($filePath) {

268 //$file = fopen($filePath , "r") or die(" Unable to open file !");

269 $fileD = file($filePath);

270 //fread($file , filesize($filePath));

271 // fclose($file);

272 return $fileD;

273 }

274

275 function getData($directory) {

276

277 if (file_exists($directory . DIRECTORY_SEPARATOR . "attendances.dat")) {

278 $info = getDataFromFile($directory . DIRECTORY_SEPARATOR . "

attendances.dat");

279 return $info;

280 } elseif (file_exists($directory . DIRECTORY_SEPARATOR . "data.dat")) {

281 $info = getDataFromFile($directory . DIRECTORY_SEPARATOR . "data.dat

");

282 return $info;

283 } else {

284 return null;

285 }

286 }

287

288 function pushData($param) {

289 $app = $param["app"];

290 $path = $param["path"];

291 $directory = $app . DIRECTORY_SEPARATOR . $path;

292

293 if (file_exists($directory)) {

294 $dataInfo = file($directory);

295 unlink($directory);

296 echo json_encode($dataInfo);

297 } else {

298 echo "2";

75

299 }

300 }

301

302 function deleteContent($param) {

303 $app = $param["app"];

304 $path = $param["path"];

305

306 $toDelete = $app . DIRECTORY_SEPARATOR . $path;

307

308 if (is_dir($toDelete)) {

309 foreach (glob($toDelete . DIRECTORY_SEPARATOR . "*") as $file) {

310 unlink($file);

311 }

312 } else if (file_exists($toDelete)) {

313 unlink($toDelete);

314 }

315

316 echo "1";

317 }

Listagem A.2: Script wifi.sh.1 #!/ bin/bash2

3 ### BEGIN INIT INFO4 # Provides: wifi5 # Required -Start: $local_fs $syslog $remote_fs dbus6 # Required -Stop: $local_fs $syslog $remote_fs7 # Default -Start: 2 3 4 58 # Default -Stop: 0 1 69 # Short -Description: Get time and start AP

10 # Description: enable hostapd and isc -dhcp -server11 ### END INIT INFO12

13 sudo service hostapd stop14 sudo service isc -dhcp -server stop15 sudo ifdown wlan016 sudo service networking stop17 sudo cp /etc/network/interfaces_net /etc/network/interfaces18 sudo service networking start19 sudo ifup wlan020 ( /etc/init.d/ntp stop21 until ping -nq -c3 8.8.8.8; do22 echo "Whating for network ..."23 done24 ntpdate -s time.nist.gov25 /etc/init.d/start )&26 sudo service networking stop27 sudo cp /etc/network/interfaces_static /etc/network/interfaces28 sudo service networking start29 sudo ifup wlan030 sudo service hostapd start31 sudo service isc -dhcp -server start

76