|
|
@@ -0,0 +1,136 @@ |
|
|
|
#!/usr/local/bin/python2.7 |
|
|
|
""" |
|
|
|
A simple script to generate guuplot data from meter history |
|
|
|
""" |
|
|
|
|
|
|
|
__author__ = "Peter Shipley" |
|
|
|
|
|
|
|
|
|
|
|
import sys |
|
|
|
sys.path.append('/usr/home/shipley/Projects/Eagle') # temp |
|
|
|
|
|
|
|
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_header() |
|
|
|
print_data(eg) |
|
|
|
# print_footer() |
|
|
|
exit(0) |
|
|
|
|
|
|
|
def print_header() : |
|
|
|
print """ |
|
|
|
set terminal png size 2600,500 |
|
|
|
set datafile separator "\t" |
|
|
|
set xlabel "time" |
|
|
|
set ylabel "power" |
|
|
|
set grid |
|
|
|
set key off |
|
|
|
set pointsize 0.5 |
|
|
|
set xtics 3600 |
|
|
|
set xdata time |
|
|
|
set timefmt "%Y-%m-%d %H:%M:%S" |
|
|
|
set format x "%a %b %d %H:%M" |
|
|
|
#set xrange [ "2014-03-04 00:00:00" : ] |
|
|
|
# set xrange [ "2014-03-04 00:00:00" : "2014-03-09 17:20:00" ] |
|
|
|
set style data lines |
|
|
|
set autoscale y |
|
|
|
set title "Power Use" |
|
|
|
set output "poweruse.png" |
|
|
|
plot "-" using 1:3 t "inbound" w lines, "-" using 1:5 t "outbound" |
|
|
|
""" |
|
|
|
|
|
|
|
def print_footer() : |
|
|
|
pass |
|
|
|
|
|
|
|
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}\tday_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}\tmax_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 , addr="10.1.1.39") |
|
|
|
main(reagle) |
|
|
|
exit(0) |