Sow 0 Denunciar post Postado Dezembro 10, 2013 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? Compartilhar este post Link para o post Compartilhar em outros sites
Galliani 6 Denunciar post Postado Dezembro 10, 2013 Olá Sow, de uma olhada neste link: http://ferrari.eti.br/pegando-a-temperatura-de-qualquer-cidade/ Compartilhar este post Link para o post Compartilhar em outros sites
Sow 0 Denunciar post Postado Dezembro 10, 2013 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. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Dezembro 11, 2013 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. Compartilhar este post Link para o post Compartilhar em outros sites
Sow 0 Denunciar post Postado Dezembro 11, 2013 Obrigada, vou dar uma estudada nisso, mas eu não faço ideia de como funciona xml. Por isso queria fazer algo com php Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Dezembro 11, 2013 ?? com o php vc faz a leitura do xml.. então basta pegar os atributos.. Compartilhar este post Link para o post Compartilhar em outros sites
miqueiasrafael 1 Denunciar post Postado Dezembro 11, 2013 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... Compartilhar este post Link para o post Compartilhar em outros sites
Sow 0 Denunciar post Postado Dezembro 11, 2013 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 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 11, 2013 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 Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Dezembro 11, 2013 #7 ?? :upset: Compartilhar este post Link para o post Compartilhar em outros sites
Sow 0 Denunciar post Postado Dezembro 11, 2013 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. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 11, 2013 com o json_decode() como eu disse ali em cima. ai vc acessa a informação que quer. Compartilhar este post Link para o post Compartilhar em outros sites
Sow 0 Denunciar post Postado Dezembro 11, 2013 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. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 11, 2013 <?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; Compartilhar este post Link para o post Compartilhar em outros sites
Sow 0 Denunciar post Postado Dezembro 12, 2013 <?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 Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Dezembro 12, 2013 Tem que trocar aqui: $json = json_decode($str);Por isso: $json = json_decode($resultado); Compartilhar este post Link para o post Compartilhar em outros sites
Sow 0 Denunciar post Postado Dezembro 13, 2013 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); ?> Compartilhar este post Link para o post Compartilhar em outros sites