• Welcome to LusoRobótica - Robótica em Português.
 

Retirar informação de site atraves de ethernet shield

Started by Wolfz, 05 de July de 2012, 23:02

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Wolfz

Boas pessoal, ultimamente ando a aprofundar os meus conhecimentos sobre o ethernet shield, tal como já devem ter percebido com os outros tópicos que coloquei.

Eu vi num vide do youtube um Sr que conseguia através do ethernet shield retirar informação do twiter, no meu caso queria apenas retirar por exemplo a hora que aparece neste site: http://www.horadomundo.com/

Alguma sugestão? ;)

Wolfz

Não há ninguém que me possa ajudar? Que me possa dizer ao menos como posso procurar (o que procurar no google)...

zedlav

Boas.

Tens de usar EthernetClient tens aqui um exemplo que faz um pedido ao google.

http://arduino.cc/en/Reference/EthernetClient

Para "sacares" a hora vais ter de implementar á tua maneira uma forma de tirar do html que vais receber esta linha que lá vem "<input type="hidden" name="miliSegundos" value="1341540522837" />" onde diz value="1341540522837" é onde está a data mas num formato diferente vê o link em baixo.

http://www.epochconverter.com/





tiagogala

O outro site que deste está carregado de javascript, processar isso num arduino não é tarefa fácil, em todo o caso vê se há algum sítio onde haja um número perto de 1341580386 (unix time para a  altura em que estou a escrever isto), esse número é o número de segundos desde 1 de Janeiro de 1970, é só fazer as contas :)

amando96

Poderias era alojar um script em PHP ou assim noutro sítio teu, e mandas o arduino ir buscar o resultado já parseado.

Wolfz

Obrigado zedlav, tiagogala =)

Obrigado amando96 inicialmente estava a pensar fazer como tu dizes, mas não consegui arranjar informação sobre como fazer isso. Se Já fizeste isso ou sabes de algum "tutorial" agradecia a tua ajuda.

Wolfz

Já consigo aceder ao site e ver "as informações" =D

O que recebo na Serial é isto:
Quoteconnecting...
connected
HTTP/1.1 404 Not Found
Date: Fri, 06 Jul 2012 17:10:04 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Last-Modified: Fri, 07 Jan 2005 23:09:11 GMT
ETag: "a8002c-2a6-3ed1e4e7193c0"
Accept-Ranges: bytes
Content-Length: 678
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html

<HTML><HEAD><TITLE> Wait ... </TITLE>
<META HTTP-EQUIV="refresh" CONTENT="0;URL=/">
</HEAD><BODY><FONT FACE="verdana,arial" SIZE=2>
<!-- This page doensn't exist anymore -->
Click  <A HREF="/">here</A> to continue ...
</FONT>
<!-- adding to get to 512 bytes 000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
</BODY></HTML>

disconnecting.

Há alguma maneira de guardar isto ("Date: Fri, 06 Jul 2012 17:10:04 GMT") numa variavel?

amando96

Mas só queres saber as horas? ou é para uma demonstração de ir buscar algo à net? é que os recursos que estás a gastar são imensos, há relógios em forma DIP de 8 pinos baratos e fáceis de usar.

Experimentei usar o DOMDocument mas o site está mal feito, repetem o mesmo id várias vezes... html inválido.

Wolfz

Obrigado mais uma vez amando96 :)

O que eu queria fazer mesmo era retirar informação dos sites, por exemplo, retirar informações deste site (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040)

Gostava de fazer com o retirar da Internet, pois no futuro poderá servir-me para outras coisas.

senso

Retirar a informação é relativamente simples, lês a página linha a linha e passas por um sscanf, e procuras por Date, depois é retirar a informação campo a campo, o problema é se alteram a notação/formatação e se tiveres de ler o site todo para ram, podes esquecer que não vai caber na ram de um arduino.
Avr fanboy

Wolfz

 :-X pois é tens razão

Já agora como posso saber qual o "ip" para o arduino " ler este site (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040)

Obrigado senso ;)

Wolfz

Boas Senso, tive a pensar e o que me dizes de em vez de retirar a informação de um site "exterior" alojar uma pagina html com um javascript para "gerar" as horas no SD e ir buscar as horas através do arduino?

senso

Isso parece-me o trabalho perfeito para um router de 25 ou 30€ a correr openWrt ou DD-WRT, a tirar informação da internet do que for preciso e depois envia o essencial por serial para o arduino.
Avr fanboy

Wolfz

Agora é que me baralhas-te todo  :o

Não tenho bases para isso xD

GnGz

Olá,

Deixo-te aqui uma solução para Data + Hora:
Arranjas um webhost e escreves um simples ficheiro php como o debaixo


<?php
date_default_timezone_set
('UTC');
echo
date('l jS \of F Y h:i:s A');
?>


Onde está UTC metes a timezone que desejas e na string do argumento da função date alteras o formato para como queres receber a hora. As letras têm significados escritos aqui: http://php.net/manual/en/function.date.php

Ele não vai gerar um site html mas vai gerar apenas só a data no formato que escolheste.

Com o shield de ethernet deverá te gerar um coisa assim:


HTTP/1.1 200 OK
Date: Sat, 07 Jul 2012 15:32:05 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html

Saturday 7th of July 2012 03:32:06 PM



Depois com o Arduino fazes só o parsing da ultima linha...
Para obteres o Endereço Ip arranja-se uma coisa parecida...

P.S:

O Código em PHP para o Endereço de IP:


<?php
echo $_SERVER['REMOTE_ADDR'];
?>


Cumprimentos,
GnGz