#!/usr/bin/env python3 """Get a solar forecast from forecast.solar and emit it in Influx format Nelson Minar """ import json, sys, urllib.request import pendulum forecast_url = 'https://api.forecast.solar/estimate/watts/39.2/-121.1/35/70/11.5' def parse(fp): data = json.load(fp) tz_name = data['message']['info']['timezone'] for date, watts in data.get('result', {}).items(): dt = pendulum.parse(date, tz=tz_name) ts = dt.int_timestamp * 1_000_000_000 kw = watts / 1000.0 print(f'forecast_dot_solar kw={kw:.4} {ts}') if __name__ == '__main__': if len(sys.argv) == 1: parse(urllib.request.urlopen(forecast_url, timeout=120)) for fn in sys.argv[1:]: parse(open(fn))