#!/usr/bin/env python3 # # Pulls out only the required pieces for the esp_time.ino arduino program # the ESP8266 doesn't have enough RAM to parse the whole JSON object. # substitue in api_key, run this and place the output at a web server # adjust ds_url in esp_time.ino to point at that web server! import json import urllib.request ds_url = "https://api.darksky.net/forecast/"; ds_ll = "/-35.135,149.61"; ds_opts = "?units=auto" api_key = "PUT YOUR API KEY HERE" contents = urllib.request.urlopen(ds_url + api_key + ds_ll + ds_opts) d = json.load(contents) new = {} current = d['currently'] today = d['daily']['data'][0] tomorrow = d['daily']['data'][1] day_after = d['daily']['data'][2] new['current'] = {} new['current']['temp'] = current['temperature'] new['current']['icon'] = current['icon'] new['today'] = {} new['today']['max'] = today['temperatureMax'] new['today']['icon'] = today['icon'] new['tomorrow'] = {} new['tomorrow']['max'] = tomorrow['temperatureMax'] new['tomorrow']['icon'] = tomorrow['icon'] new['day_after'] = {} new['day_after']['max'] = day_after['temperatureMax'] new['day_after']['icon'] = day_after['icon'] with open('darksky.json', 'w') as output: output.write(json.dumps(new)) output.close() # OWM # for forecast in d['list']: # utcDate = datetime.datetime.strptime(forecast['dt_txt']+"+0000", "%Y-%m-%d %H:%M:%S%z") # utcDate.replace(tzinfo=UTC) # print("********") # print(utcDate) # print(utcDate.astimezone(local)) # print(forecast['weather'][0]['description'], forecast['weather'][0]['icon'], forecast['main']['temp'])