class WeatherHourly(object): url_base = "http://api.wunderground.com/api/" url_service = {"hourly": "/hourly/q/"} def __init__(self, api_key): super(WeatherHourly, self).__init__() self.api_key = api_key self.result = [] self.pp = Prediction() def hourly(self, location, country): url = WeatherHourly.url_base + self.api_key + \ WeatherHourly.url_service["hourly"] + country + "/" + location + ".json" f = requests.get(url) data_json = json.loads(f.text) return self.process_data(data_json) def process_data(self, data_json): for values in data_json["hourly_forecast"]: listatemp = [] listatemp.append("Date: " + values["FCTTIME"]["pretty"]) listatemp.append("Temperature: " + values["temp"]["metric"] + " Celsius" + " / " + values["temp"]["english"] + " fahrenheit") listatemp.append("Sensation of temperature: " + values["feelslike"]["metric"] + " Celsius" + " / " + values["feelslike"]["english"] + " fahrenheit") listatemp.append("Weather Condition: " + values["condition"]) listatemp.append("Humidity: " + values["humidity"] + "%") listatemp.append("Liquid precipitation: " + values["qpf"]["metric"] + "mm") listatemp.append("Advice: " + self.pp.get_prediction(values["condition"])) self.result.append(listatemp) return self.result
values = '[ "' + str(temperature) + '" ]' request_str = 'http://' + server_addr + ':' + port + \ '/' + auth_token + '/update/' + SET_TEMP_PIN request = Request(request_str, data=values, headers=HEADERS) request.get_method = lambda: 'PUT' print 'Temperature', str(temperature), 'sent to', request_str response_body = urlopen(request).read() print response_body + '\n' prediction = Prediction() prediction.load_backup() while True: # Get the predicted temperature set_point = prediction.get_prediction(False) # Tell the server about it update_temperature(set_point) # Backup the model prediction.backup() # Sleep for 30min print 'Sleeping for 30min...' time.sleep(60 * 30)