Postagem em destaque

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte I

Este post é o primeiro de uma série de seis que escrevi tratando de controle de potência e PID (controle proporcional, integral e derivativo...

domingo, 15 de março de 2015

Intel Edison - acessando dados do Yahoo Weather a respeito do clima via Temboo

Como no Yún não deu muito certo a ideia de acessar o Yahoo Weather pelo Python, surgiu a ideia: será que funciona  no Edison? Boralá!

Roteiro para usar a python-weather-api no Edison:

1) Faça o download dos arquivos necessários. Para isso, o Edison deve estar conectado à internet e vc deve acessá-lo via algum programa de terminal, por exemplo o Putty. Para ver como fazer isso, clique aqui.

2) Primeiro, crie um diretório para colocar os arquivos de instalação:

mkdir pywapiinstall
cd pywapiinstall

3) Baixe o arquivo contendo os arquivos de instalação:

wget --no-check-certificate 'https://launchpad.net/python-weather-api/trunk/0.3.8/+download/pywapi-0.3.8.tar.gz'

4) Descompacte o arquivo

tar -xvf pywapi-0.3.8.tar.gz

5) Mude para o dir onde foram descompactados os arquivos

cd pywapi-0.3.8 

6) Instale os arquivos

python setup.py build
python setup.py install

7) Em seguida, entre no python e faça o teste:

import pywapi
pywapi.get_weather_from_yahoo('BRXX0228')

E... não é que funcionou de prima? Veja aí o resultado:

{'html_description': u'\n<img src="http://l.yimg.com/a/i/us/we/52/30.gif"/><br />\n<b>Current Conditions:</b><br />\nPartly Cloudy, 30 C<BR />\n<BR /><b>Forecast:</b><BR />\nSun - Thunderstorms. High: 28 Low: 20<br />\nMon - PM Thunderstorms. High: 31 Low: 21<br />\nTue - Thunderstorms. High: 27 Low: 21<br />\nWed - Thunderstorms. High: 29 Low: 20<br />\nThu - PM Thunderstorms. High: 28 Low: 20<br />\n<br />\n<a href="http://us.rd.yahoo.com/dailynews/rss/weather/Sao_Jose_Dos_Campos__BR/*http://weather.yahoo.com/forecast/BRXX0228_c.html">Full Forecast at Yahoo! Weather</a><BR/><BR/>\n(provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/>\n', 'atmosphere': {'pressure': u'1015.92', 'rising': u'0', 'visibility': u'9.99', 'humidity': u'58'}, 'title': u'Yahoo! Weather - Sao Jose Dos Campos, BR', 'condition': {'date': u'Sun, 15 Mar 2015 1:01 pm BRT', 'text': u'Partly Cloudy', 'code': u'30', 'temp': u'30', 'title': u'Conditions for Sao Jose Dos Campos, BR at 1:01 pm BRT'}, 'forecasts': [{'code': u'4', 'text': u'Thunderstorms', 'high': u'28', 'low': u'20', 'date': u'15 Mar 2015', 'day': u'Sun'}, {'code': u'38', 'text': u'PM Thunderstorms', 'high': u'31', 'low': u'21', 'date': u'16 Mar 2015', 'day': u'Mon'}, {'code': u'4', 'text': u'Thunderstorms', 'high': u'27', 'low': u'21', 'date': u'17 Mar 2015', 'day': u'Tue'}, {'code': u'4', 'text': u'Thunderstorms', 'high': u'29', 'low': u'20', 'date': u'18 Mar 2015', 'day': u'Wed'}, {'code': u'38', 'text': u'PM Thunderstorms', 'high': u'28', 'low': u'20', 'date': u'19 Mar 2015', 'day': u'Thu'}], 'link': u'http://us.rd.yahoo.com/dailynews/rss/weather/Sao_Jose_Dos_Campos__BR/*http://weather.yahoo.com/forecast/BRXX0228_c.html', 'location': {'city': u'Sao Jose Dos Campos', 'region': u'', 'country': u'BR'}, 'units': {'distance': u'km', 'speed': u'km/h', 'temperature': u'C', 'pressure': u'mb'}, 'astronomy': {'sunset': u'6:19 pm', 'sunrise': u'6:05 am'}, 'geo': {'lat': u'-23.23', 'long': u'-45.83'}, 'wind': {'direction': u'220', 'speed': u'3.22', 'chill': u'30'}}

O código BRXX0228 corresponde a São José dos Campos. E como eu descobri isso? Nessa lista: https://www.edg3.uk/snippets/weather-location-codes/brazil/

Também é possível acessar outros serviços de previsão de tempo, bem como obter uma determinada informação em vez de toda essa string aí em cima. Abaixo, um exemplo:

# -*- coding: cp1252 -*-
import  pywapi
import string

weather_com_result = pywapi.get_weather_from_weather_com('BRXX0228')
yahoo_result = pywapi.get_weather_from_yahoo('BRXX0228')

print "Weather.com diz que agora o tempo esta " + string.lower(weather_com_result['current_conditions']['text']) + " e " + weather_com_result['current_conditions']['temperature'] + "C agora em Sao Jose dos Campos.\n\n"

print "Yahoo diz que agora o tempo esta " + string.lower(yahoo_result['condition']['text']) + " e " + yahoo_result['condition']['temp'] + "C agora em Sao Jose dos Campos."

O resultado? Abaixo:

Weather.com diz que agora o tempo esta partly cloudy e 30C agora em Sao Jose dos Campos.


Yahoo diz que agora o tempo esta partly cloudy e 30C agora em Sao Jose dos Campos.

Bom, é isso! Enjoy!