1ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos#!/usr/bin/python 2ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 3ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosimport sys 4ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosimport getopt 5ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 6ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosdef usage(): 7ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos print "powersum.py [OPTIONS] HZ VOLTAGE [FILE]" 8ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos print "OPTIONS: " 9ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos print "-o OFFSET: subtract OFFSET from all data points" 10ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos print "\nHZ: samples per second in FILE or stdin" 11ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sys.exit(0) 12ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 13ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosoffset = 0.0 14ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosvoltage = 4.3 15ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 16ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosparsedargv,argvrem = getopt.getopt(sys.argv[1:], "vo:w:l:h", ["help"]) 17ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfor o,a in parsedargv: 18ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if o == '-o': offset = float(a) 19ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if o == '-h' or o == '--help': usage() 20ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 21ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoshz = float(argvrem[0]) 22ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosvoltage = float(argvrem[1]) 23ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif len(argvrem) > 1: 24ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos f = open(argvrem[2], "r") 25ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoselse: 26ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos f = sys.stdin 27ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 28ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjostotalpower = 0.0 29ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjossamplectr = 0 30ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 31ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfor line in f: 32ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos try: 33ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos val = float(line.split(" ")[1]) # xxx take 2nd arg in line 34ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos val -= offset 35ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos except: 36ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos print "Can't parse data line, did you remember the timestamp?" 37ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos print "data was: %s" % line 38ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sys.exit(1) 39ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 40ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos samplectr+=1 41ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos totalpower += val/hz 42ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 43ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosavecurrent = totalpower * hz *1000 / samplectr 44ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosavepower = avecurrent * voltage 45ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 46ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosprint "%.3f %.3f" % (avecurrent, avepower) 47