Segunda-feira, 20 de Dezembro de 2010
Scrapper

Horários

Para obter os horários foi feito web crawling, armazenando os dados numa base de dados (após parsing dos mesmos) e permitindo pesquisa sobre esta a partir de um Web service (SOAP).


Crawling

Para fazer web crawling foi utilizada a ferramenta Scrapy. Este permite fazer web crawling e extracção de dados estruturados, que depois poderá ser usado para um vasto tipo de aplicações. Foi desenvolvido em Python.

Para começar é preciso criar um novo projecto scrapy usando o comando “scrapy startproject horarios”.

Isto cria os ficheiros e pastas necessários.

 

  1. scrapy.cfg (ficheiro de configuração do projecto)

  2. horarios/ (módulo de python do projecto)

  3. horarios/items.py (define os items a construir)

  4. horarios/pipelines.py (ficheiro de pipelines do projecto)

  5. horarios/settings.py (ficheiro de propriedades do projecto)

  6. horarios/spiders/ (directório no qual são colocados os “spiders” criados)

 

Os Items são “containers” que irão guardar a informação obtida. Os itens são definidos em item.py.

A classe que vai percorrer as páginas e extrair a informação é chamada spider. É definida inicialmente uma lista de hiperligações a pesquisar, das quais vão ser extraídos os itens.

Um spider tem que ter obrigatoriamente três atributos:

 

O spider é o que vai fazer crawling às páginas da MoveAveiro chama-se horario_spider.py.

Este ficheiro trata de ler o conteúdo das páginas, fazer o parsing deste e guardar os dados na base de dados.

Para iniciar o processo de crawling usa-se o comando: scrapy crawl hor.org, sendo hor.org o nome do spider.

 

Parsing

Neste exemplo são seleccionadas todas as colunas pertencentes à classe “excel” e é extraído o seu conteúdo/texto.


Base de Dados

Para a base de dados foi usado o SQLite. SQLite é uma biblioteca open-source de software que permite construir uma base de dados SQL que não necessita de servidor ou configurações complicadas.

 

Actualização da Base de Dados

Para evitar a leitura constante da página, é agendado o crawling para as 17h de cada dia. Para isso é usado o ficheiro crontab do linux:

 

00 17 * * * linda sh /home/linda/ua/es/horarios/s.sh

 

O ficheiro s.sh inicia o processo de crawling. O spider obtém o hash da página e guarda numa base de dados só com uma tabela para esse fim. Cada vez que é executado compara o novo hash com o guardado anteriormente, extraindo apenas a nova informação se o hash for diferente. Desta forma é apenas actualizada a base de dados dos horários se a página tiver sido alterada.


Web Service SOAP

Para a pesquisa na base de dados foi implementado um web service SOAP, utilizando a biblioteca do python soaplib. Este Web service obtém a hora actual e retorna a hora do próximo autocarro para a paragem pretendida.

 

 

 

 




Domingo, 28 de Novembro de 2010
Geo Localização - Concluído

 A versão final do que será o serviço de localização geográfica encontra-se disponível hoje. Como já foi esclarecido no post anterior relacionado com este tema, o cliente portador do terminal Android desloca-se pelas ruas, e quando a distância entre a sua posição actual e a posição anterior for maior que 100 metros, a sua actualização é actualizada no servidor.

Está a ser utilizado o protocolo XMPP para o envio da mensagem do terminal para o servidor. Esta mensagem consiste num campo IMEI (número de identificação único do terminal) e de dois campos, latitude e longitude. Optou-se pela utilização do serviço Openfire como servidor, pois facilita consideravelmente a sua configuração e possui uma interface web bastante intuitiva para a sua manipulação.

Sempre que o servidor recebe uma nova mensagem de um terminal, são validados os campos desta. É efectuada uma pesquisa na base de dados para determinar se o IMEI já se encontra presente. Caso afirmativo, a posição é refrescada; caso contrário, é criada uma nova entrada com o novo IMEI e as respectivas coordenadas.

A informação da localização de um determinado utilizador pode ser adquirida utilizando o RESTful web service criado para esse efeito. Para adquirir os dados me formato JSON, basta fazer um GET para

http://localhost:8080/DriveMeGeoServerWeb/rest/restapi, onde localhost:8080 é o hostname do servidor. Por exemplo, para o IMEI 000000000000000, um acesso a http://localhost:8080/DriveMeGeoServerWeb/rest/restapi/imei=000000000000000 resulta por defeito num objecto JSON com os respectivos dados. Caso se pretenda os formatos em formato XML, basta para isso acresentar &report=xml.

Um possível futuro passo consiste em adicionar segurança a este tipo de pedidos, visto que desta forma basta o conhecimento do IMEI para a obtenção da localização.

Terminal adquire nova posição.

 

Servidor actualiza a posição na base de dados MySQL.

 

Utilizando o web service para adquirir o objecto JSON.

 

Utilizando o web service para adquirir a localização em formato XML.




Segunda-feira, 1 de Novembro de 2010
OpenIMS <-> Sailfin

Neste momento já se conseguiu colocar o OpenIMS a redireccionar as mensagens SIP INVITE para o Sailfin, sendo assim possivel desviar a chamada para a Media Gateway.

"Next steps:"

António Pinho

Carlos Guimarães




Quinta-feira, 21 de Outubro de 2010
Geo Localização - Cliente XMPP

Um dos requisitos para o sistema do DriveMe corresponde ao conhecimento da posição geográfica do utilizador num dado momento. Só assim será possível agregar a informação que realmente interessa, no que respeita à filtração de horários.

Foi escolhido o sistema operativo Android 2.2 para desenvolver esta aplicação visto ser OpenSource e facilitar o acesso ao hardware do dispositivo, neste caso o GPS. Para tal recorreu-se ao emulador disponível em http://developer.android.com/sdk/index.html.

Para a implementação optou-se pelo uso do protocolo XMPP para o envio das coordenadas, assim como do IMEI que permite associar ao dispositivo. A biblioteca utilizada foi a Smack. Numa primeira fase tentou-se sem sucesso o uso da biblioteca em http://www.igniterealtime.org/projects/smack/, mas pelos vistos é incompatível com o SO. Felizmente existe a biblioteca alterada ASmack (http://code.google.com/p/asmack/).

Assim sendo, uma ligação ao "talk.google.com" é realizada com um id definido (neste caso uma conta GMail activa). São adquiridas as coordenadas e o IMEI, e colocadas numa string XML. Esta string é enviada posteriormente para o endereço destino.

Na imagem seguinte o emulador adquire a nova posição, e a mensagem é enviada logo de seguida para o chat do GMail.




Quinta-feira, 14 de Outubro de 2010
Estou? Hey Bob é a Alice!

após algum esforÁo foi possÌvel finalmente efectuar uma chamada entre 2 clientes SIP IMS, com o open-ims core a correr.
Foram utilizados 2 computadores ( um deles tinha uma máquina virtual a correr o open-ims ) e cada um deles tinha um cliente Sip IMS instalado ( MONSTER e Mercuro Bronze).
No final a alice e o bob conseguiram falar um com o outro!

Arquitectura

HoSS a correr

FHoSS a correr

 

Portal WEB de configuração do FHoSS

 

ICSCF a correr

 

PCSCF a correr

 

SCSCF a correr

 

Mercuro com a chamada já estabelecida

 

MONSTER a receber o pedido de chamada

 

MONSTER com a chamada estabelecida


António Pinho

Carlos Guimarães
 


tags: ,


Segunda-feira, 4 de Outubro de 2010
Equipa e atribuição de tarefas

Para a elaboração deste projecto, foi constituída a seguinte equipa:

Serviço de chamadas - Carlos Guimarães e António Pinho; 
Geo-localização - José Melo; 
Serviços SMS - Diogo Teles; 
Consulta dos horários dos autocarros (Scrapper) - Linda Velte.




Arquitectura do Sistema

 




Hello World

 “DriveMe” um projecto a ser desenvolvido na cadeira de "Engenharia de Serviços". Este projecto tem como objectivo facilitar o acesso a transportes públicos por pessoas invisuais. Para apresentar este serviço e a sua arquitectura foi feita uma pequena apresentação, onde são apresentados os objectivos, a arquitectura e os serviços da solução encontrada:

 

DriveMe
View more presentations from Diogo.



.mais sobre mim
.pesquisar neste blog
 
.Dezembro 2010
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4

5
6
7
8
9
10
11

12
13
14
15
16
17
18

19
21
22
23
24
25

26
27
28
29
30
31


.posts recentes

. Scrapper

. Geo Localização - Concluí...

. OpenIMS <-> Sailfin

. Geo Localização - Cliente...

. Estou? Hey Bob é a Alice!

. Equipa e atribuição de ta...

. Arquitectura do Sistema

. Hello World

.arquivos

. Dezembro 2010

. Novembro 2010

. Outubro 2010

.tags

. todas as tags

.participar

. participe neste blog

blogs SAPO
.subscrever feeds