X-Git-Url: https://git.toastfreeware.priv.at/toast/airingbutler.git/blobdiff_plain/cf26fcd56b445bf8e4cb1121408a1706fcd1009c..d6f99b9cb83e0506b1cef2e076dbd4715923c620:/plot_mhz19.py diff --git a/plot_mhz19.py b/plot_mhz19.py index 0e68605..defb0da 100755 --- a/plot_mhz19.py +++ b/plot_mhz19.py @@ -1,11 +1,12 @@ #!/usr/bin/python3 import csv +import argparse from datetime import datetime, date, timedelta from matplotlib import pyplot as plt -filename = 'log.csv' ''' +filename = 'log.csv' Time,TS,CO2,Temp 21:02:02,0,661,24 21:02:08,5021,657,24 @@ -16,24 +17,39 @@ def parsedatetime(timevalue, currentdate): dt = datetime.strptime(timevalue, '%H:%M:%S') return datetime.combine(currentdate, dt.time()) -with open(filename) as f: - reader = csv.reader(f) - headers = next(reader) - - time = [] - co2 = [] - startdate = date(2020, 10, 22) - for row in reader: - dt = parsedatetime(row[0], startdate) - if len(time) > 0 and dt - time[-1] < timedelta(hours=-2): # DST switch! - startdate += timedelta(days=1) - dt += timedelta(days=1) - time.append(dt) - co2.append(int(row[2])) - - plt.plot(time, co2, c = 'red') - plt.title('CO₂') - plt.xlabel('time') - plt.ylabel('ppm') - plt.tick_params(axis = 'both', which = 'major') - plt.show() +def main(): + parser = argparse.ArgumentParser('Plot log.csv.') + parser.add_argument('filename', nargs='?', default='log.csv', help='Name of csv file') + parser.add_argument('-s', '--startdate', nargs='?', default='2020-10-22', help='First date in csv file') + parser.add_argument('-t', '--temperature', action='store_true', help='Include temperature plot') + args = parser.parse_args() + startdate = datetime.strptime(args.startdate, '%Y-%m-%d').date() + + with open(args.filename) as f: + reader = csv.reader(f) + headers = next(reader) + + time = [] + co2 = [] + temp = [] + for row in reader: + dt = parsedatetime(row[0], startdate) + if len(time) > 0 and dt - time[-1] < timedelta(hours=-2): # DST switch! + startdate += timedelta(days=1) + dt += timedelta(days=1) + time.append(dt) + co2.append(int(row[2])) + temp.append(int(row[3])) + + plt.plot(time, co2, c = 'red') + plt.title('CO₂') + plt.xlabel('time') + plt.ylabel('ppm') + plt.tick_params(axis = 'both', which = 'major') + if args.temperature is True: + plt.gca().twinx() + plt.plot(time, temp, c = 'blue') + plt.show() + +if __name__ == '__main__': + main()