#!/usr/bin/env python3 """Import CSV Green Button usage files from PG&E and emit them in Influx format Nelson Minar """ import csv, sys, gzip import pendulum def parse(fn: str): fp = gzip.open(fn, mode='rt', encoding='utf8') if fn.endswith('.gz') else open(fn) for _ in range(5): fp.readline() rows = csv.DictReader(fp) for row in rows: assert row['TYPE'] == 'Electric usage' assert row['UNITS'] == 'kWh' dt = pendulum.parse(f'{row["DATE"]} {row["END TIME"]}', tz='America/Los_Angeles') ts = dt.int_timestamp * 1_000_000_000 kwh = row["USAGE"] cost = float(row["COST"].replace('$', '')) print(f'pge kwh={kwh},cost={cost:.4} {ts}') if __name__ == '__main__': for fn in sys.argv[1:]: parse(fn)