#!/usr/local/bin/python2.7 """ A simple script to generate guuplot data from meter history """ __author__ = "Peter Shipley" __version__ = "0.1.7" import RainEagle import time from pprint import pprint from RainEagle import Eagle, to_epoch_1970 import json last_delivered = 0 last_received = 0 max_delta_received = 0 max_delta_delivered = 0 day_delta_received = 0 day_delta_delivered = 0 curr_day = -1 def main(eg) : print_data(eg) exit(0) def print_data(eg) : rh = eg.get_history_data() #+ # endtime=None, frequency=None) : for dat in rh['HistoryData']['CurrentSummation'] : print_currentsummation(dat) print "# day_delta_received={0:0.4f}\t" \ + " day_delta_delivered={1:0.4f} : {2:0.4f}".format( day_delta_received, day_delta_delivered, (day_delta_delivered - day_delta_received)) print "# max_delta_received={0:0.4f}\t" \ + " max_delta_delivered={1:0.4f}".format( max_delta_received, max_delta_delivered) def print_currentsummation(cs) : global last_delivered global last_received global max_delta_received global max_delta_delivered global day_delta_received global day_delta_delivered global curr_day time_stamp = to_epoch_1970(cs['TimeStamp']) multiplier = int(cs['Multiplier'], 16) divisor = int(cs['Divisor'], 16) delivered = int(cs['SummationDelivered'], 16) received = int(cs['SummationReceived'], 16) # print "Multiplier=", multiplier, "Divisor=", divisor, "Demand=", demand if multiplier == 0 : multiplier = 1 if divisor == 0 : divisor = 1 reading_received = received * multiplier / float(divisor) delta_received = (reading_received - last_received) last_received = reading_received if (delta_received > max_delta_received and delta_received < 1000) : max_delta_received = delta_received #print "new max_delta_received :", max_delta_received reading_delivered = delivered * multiplier / float(divisor) delta_delivered = (reading_delivered - last_delivered) last_delivered = reading_delivered if (delta_delivered > max_delta_delivered and delta_delivered < 1000) : max_delta_delivered = delta_delivered #print "\t\tnew max_delta_delivered :", max_delta_delivered time_struct = time.localtime(time_stamp) if curr_day != time_struct.tm_mday : curr_day = time_struct.tm_mday print "# day_delta_received={0:0.4f}\tday_delta_delivered={1:0.4f}" \ + ": {2:0.4f}".format(day_delta_received, day_delta_delivered, (day_delta_delivered - day_delta_received)) day_delta_received = 0 day_delta_delivered = 0 day_delta_received += delta_received day_delta_delivered += delta_delivered print "{0}\t{1:.4f}\t{2:0.4f}\t{3:.4f}\t{4:0.4f}".format( time.strftime("%Y-%m-%d %H:%M:%S", time_struct), reading_received, delta_received, reading_delivered, delta_delivered) if __name__ == "__main__": # import __main__ # print(__main__.__file__) # print("syntax ok") reagle = RainEagle.Eagle(debug=0) main(reagle) exit(0)