Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Estou desenvolvendo um aplicativo em php, que irá se conectar a um Arduino para coletar informações do tempo e fornecer a sensação térmica do corpo humano.
Porém, eu não tenho o sensor de velocidade do vento, tal que seria uma variável importante no cálculo que determina a sensação térmica.
Para isso, estou tentando coletar a informação da velocidade do vento online, através de sites direcionado para previsões climáticas.
Meu objetivo é coletar essa informação, para então usar no meu programa para calcular a sensação térmica. O problema é que eu não sei como coletar informações de sites externos.
Alguém poderia me passar algum exemplo de como fazer isso? Coletar uma informação específica de um site usando php?
>
Olá Sow,
de uma olhada neste link: http://ferrari.eti.br/pegando-a-temperatura-de-qualquer-cidade/
Obrigada Galliane, mas esse exemplo não está funcionando com o site tempoeagora, justamente por que ele não pertence mais ao UOL e sim ao R7.
Como eu não entendo de Expressões regulares, não consegui mudar as informações.
Estou usando este site, que tem servidor próprio.
http://www.climatempo.com.br/previsao-do-tempo/cidade/361/passofundo-rs
Quero coletar somente a informação do vento.
Ao invés de criar gambiarras, obtenha os dados de forma adequada usando serviços que fornecem API própria para isso.
Veja a API do Yahoo Weather:
http://developer.yahoo.com/weather/
O parâmetro: yweather:wind, possui o atributos chill, direction e speed...
Speed (velocidade) é o que vc precisa.
Obrigada, vou dar uma estudada nisso, mas eu não faço ideia de como funciona xml. Por isso queria fazer algo com php
??
com o php vc faz a leitura do xml..
então basta pegar os atributos..
Olá Sow, usa essa função aí que resolve!
<?php
//pega variavel ou função de uma página sem dar include, depois chame a variável ex.: //echo $stone;
ob_start(); // inicia o buffer de memória
include '../index.php'; //página alvo
$conteudo = ob_get_contents(); // guarda o conteúdo do arquivo na variável (parseado normal).
ob_end_clean(); // limpa a memória.
echo $stone; //Depois é só chamar a variável ou função individualmente!
?>
Espero ter ajudado, até mais...
Olá Maquias,
Eu quero trazer os dados dessa url: http://api.openweathermap.org/data/2.5/weather?q=Passo Fundo,br
Os dados dela não estão em XML, mas sim em Json. Quero captar e trazer esses dados, mais especificamente o Speed.
Tentei com o exemplo que você me passou:
//pega variavel ou função de uma página sem dar include, depois chame a variável ex.: //echo $stone;
ob_start(); // inicia o buffer de memória
include 'http://api.openweathermap.org/data/2.5/weather?q=Passo Fundo,br'; //página alvo
$conteudo = ob_get_contents(); // guarda o conteúdo do arquivo na variável (parseado normal).
ob_end_clean(); // limpa a memória.
echo $conteudo; //Depois é só chamar a variável ou função individualmente!
Mas aparecerem os seguintes erros:
Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 C:\wamp\www\arduinoApp\teste1.php on line 41
Warning: include(http://api.openweathermap.org/data/2.5/weather?q=Passo Fundo,br): failed to open stream: no suitable wrapper could be found in C:\wamp\www\arduinoApp\teste1.php on line
Warning: include(): Failed opening 'http://api.openweathermap.org/data/2.5/weather?q=Passo Fundo,br' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\arduinoApp\teste1.php on line 41
include é apenas para arquivos que estão hospedados na mesma máquina que a sua aplicação, e que vc tenha acesso a eles.
vc precisa ler o conteudo da url, ai pode usar um file_get_contents() e para ler o json facilmente, tem o json_decode() para transformar ele num objeto
#7 ??
:upset:
Eu consegui trazer da seguinte forma:
<?php
// Inicia o cURL acessando uma URL
$cURL = curl_init('http://api.openweathermap.org/data/2.5/weather?q=Passo%20Fundo,br'); // Define a opção que diz que você quer receber o resultado encontrado curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
// Executa a consulta, conectando-se ao site e salvando o resultado na variável $resultado
$resultado = curl_exec($cURL);
echo $resultado;
// Encerra a conexão com o site curl_close($cURL);
?>
O problema agora é o seguinte, como trazer apenas a informação do Speed.
com o json_decode() como eu disse ali em cima.
ai vc acessa a informação que quer.
Ok. Você tem algum exemplo, de como eu faço isso?
meu app retorna isso:
>
{"coord":{"lon":-52.41,"lat":-28.26},"sys":{"message":0.298,"country":"BR","sunrise":1386750356,"sunset":1386800434},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"base":"gdps stations","main":{"temp":298.023,"temp_min":298.023,"temp_max":298.023,"pressure":954.39,"sea_level":1025.27,"grnd_level":954.39,"humidity":65},"wind":{****"speed":4.95****,"deg":129.5},"clouds":{"all":44},"dt":1386780422,"id":3454857,"name":"Passo Fundo","cod":200}
Eu quero retornar só o speed e seu valor.
<?php
$str = '{"coord":{"lon":-52.41,"lat":-28.26},"sys":{"message":0.298,"country":"BR","sunrise":1386750356,"sunset":1386800434},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"base":"gdps stations","main":{"temp":298.023,"temp_min":298.023,"temp_max":298.023,"pressure":954.39,"sea_level":1025.27,"grnd_level":954.39,"humidity":65},"wind":{"speed":4.95,"deg":129.5},"clouds":{"all":44},"dt":1386780422,"id":3454857,"name":"Passo Fundo","cod":200}';
$json = json_decode($str);
echo $json->wind->speed;>
<?php
$str = '{"coord":{"lon":-52.41,"lat":-28.26},"sys":{"message":0.298,"country":"BR","sunrise":1386750356,"sunset":1386800434},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"base":"gdps stations","main":{"temp":298.023,"temp_min":298.023,"temp_max":298.023,"pressure":954.39,"sea_level":1025.27,"grnd_level":954.39,"humidity":65},"wind":{"speed":4.95,"deg":129.5},"clouds":{"all":44},"dt":1386780422,"id":3454857,"name":"Passo Fundo","cod":200}';
$json = json_decode($str);
echo $json->wind->speed;
Eu implementei esse exemplo no meu código.
<?php
// Inicia o cURL acessando uma URL
$cURL = curl_init('http://api.openweathermap.org/data/2.5/weather?q=Passo%20Fundo,br');
// Define a opção que diz que você quer receber o resultado encontrado
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
// Executa a consulta, conectando-se ao site e salvando o resultado na variável $resultado
$resultado = curl_exec($cURL);
$json = json_decode($str);
echo $json->wind->speed;
// Encerra a conexão com o site
curl_close($cURL);
?>
Mas aparecem esses erros... =\
Undefined variable: str in C:\wamp\www\arduinoApp\teste1.php on line 9 ( ! ) Notice: Trying to get property of non-object in C:\wamp\www\arduinoApp\teste1.php on line 11 ( ! ) Notice: Trying to get property of non-object in C:\wamp\www\arduinoApp\teste1.php on line 11
Tem que trocar aqui:
$json = json_decode($str);Por isso:
$json = json_decode($resultado);
>
Tem que trocar aqui:
$json = json_decode($str);Por isso:
$json = json_decode($resultado);
Não acredito que não tinha visto isso. Noooooossa, estou muuuuuuuuuuuuuuuuuuuito Agradecida! Obrigada mesmo!
Agradeço a todos que ajudaram, mesmo!
Deixo o código abaixo caso alguém precise utilizar algo semelhante um dia.
<?php
// Inicia o cURL acessando uma URL
$cURL = curl_init('http://api.openweathermap.org/data/2.5/weather?q=Passo%20Fundo,br');
// Define a opção que diz que você quer receber o resultado encontrado
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
// Executa a consulta, conectando-se ao site e salvando o resultado na variável $resultado
$resultado = curl_exec($cURL);
$json = json_decode($resultado);
echo $json->wind->speed;
// Encerra a conexão com o site
curl_close($cURL);
?>
Olá Sow,
de uma olhada neste link: http://ferrari.eti.br/pegando-a-temperatura-de-qualquer-cidade/