def createimages(self, currentTime=None): if currentTime is None: currentTime = int(time.time()) if os.path.isfile(self.rrdfile): myRRD = rrd.RRD(self.rrdfile, mode='r') def1 = DEF(rrdfile=myRRD.filename, vname='Watt', dsName='power') def2 = DEF(rrdfile=myRRD.filename, vname='Wh', dsName='energy') vdef1 = VDEF(vname='maxpower', rpn='%s,MAXIMUM' % def1.vname) vdef2 = VDEF(vname='avgpower', rpn='%s,AVERAGE' % def1.vname) vdef3 = VDEF(vname='maxenergy', rpn='%s,MAXIMUM' % def2.vname) cdef1 = CDEF(vname='Joule', rpn='%s,3600,*' % def2.vname) area1 = AREA(defObj=def1, color='#006600', legend='Our Power') area2 = AREA(defObj=cdef1, color='#006600', legend='Our Energy') line1 = LINE(defObj=vdef1, color='#660000', legend='Our Maximum') line2 = LINE(defObj=vdef2, color='#009900', legend='Our Average') gprint1 = GPRINT(vdef2,'average power %6.0lf watt') gprint2 = GPRINT(vdef1,'maximum power %6.0lf watt') # setup the labels and definitions also setup # the different file sizes labels = ['power\ in\ Watt','energy\ in\ Joule'] definitions = [ [def1, vdef1, vdef2, area1, gprint1, gprint2, line1, line2], [def2,cdef1, area2]] #setup a dummpy image g = Graph('dummpy.png', end=currentTime, color=self.colors, imgformat='png') for num in range(0, len(labels)): g.vertical_label = labels[num] g.data = definitions[num] for t in self.times: g.start = (currentTime - (t[0] * 60)) for size in self.sizes: g.width = size[0][0] g.height = size[0][1] g.filename = self.graphfile+'_%s_%s_%s.png' % ( labels[num].split('\ ',1)[0], t[1], size[1] ) g.write(debug=False)
area3 = AREA(defObj=def3, color='#BD4902', legend='Raw Data 2') area4 = AREA(defObj=def4, color='#A32001', legend='Raw Data 1') line1 = LINE(defObj=vdef1, color='#01FF13', legend='Average', stack=True) # Let's configure some custom colors for the graph ca = ColorAttributes() ca.back = '#333333' ca.canvas = '#333333' ca.shadea = '#000000' ca.shadeb = '#111111' ca.mgrid = '#CCCCCC' ca.axis = '#FFFFFF' ca.frame = '#AAAAAA' ca.font = '#FFFFFF' ca.arrow = '#FFFFFF' # Now that we've got everything set up, let's make a graph startTime = endTime - 3 * month g = Graph(graphfile, start=startTime, end=endTime, vertical_label='data', color=ca) g.data.extend([def1, def2, def3, def4, vdef1, area4, area3, area2, area1]) g.write() g.filename = graphfileLg g.width = 800 g.height = 400 g.write()
ca.shadea = "#000000" ca.shadeb = "#111111" ca.mgrid = "#CCCCCC" ca.axis = "#FFFFFF" ca.frame = "#AAAAAA" ca.font = "#FFFFFF" ca.arrow = "#FFFFFF" # Now that we've got everything set up, let's make a graph g = Graph("dummy.png", end=endTime, vertical_label="Bits", color=ca) g.data.extend([def1, def2, cdef1, cdef2, area2, area1]) g.title = '"In- and Out-bound Traffic Across Local Router"' # g.logarithmic = ' ' # Iterate through the different resoltions for which we want to # generate graphs. for time, step in times: # First, the small graph g.filename = graphfile % (exampleNum, time) g.width = 400 g.height = 100 g.start = endTime - time g.step = step g.write(debug=False) # Then the big one g.filename = graphfileLg % (exampleNum, time) g.width = 800 g.height = 400 g.write()
def4 = DEF(rrdfile=myRRD.filename, vname='mydementia', dsName=ds4.name) vdef1 = VDEF(vname='myavg', rpn='%s,AVERAGE' % def1.vname) area1 = AREA(defObj=def1, color='#FFA902', legend='Raw Data 4') area2 = AREA(defObj=def2, color='#DA7202', legend='Raw Data 3') area3 = AREA(defObj=def3, color='#BD4902', legend='Raw Data 2') area4 = AREA(defObj=def4, color='#A32001', legend='Raw Data 1') line1 = LINE(defObj=vdef1, color='#01FF13', legend='Average', stack=True) # Let's configure some custom colors for the graph ca = ColorAttributes() ca.back = '#333333' ca.canvas = '#333333' ca.shadea = '#000000' ca.shadeb = '#111111' ca.mgrid = '#CCCCCC' ca.axis = '#FFFFFF' ca.frame = '#AAAAAA' ca.font = '#FFFFFF' ca.arrow = '#FFFFFF' # Now that we've got everything set up, let's make a graph startTime = endTime - 3 * month g = Graph(graphfile, start=startTime, end=endTime, vertical_label='data', color=ca) g.data.extend([def1, def2, def3, def4, vdef1, area4, area3, area2, area1]) g.write() g.filename = graphfileLg g.width = 800 g.height = 400 g.write()
ca.shadea = '#000000' ca.shadeb = '#111111' ca.mgrid = '#CCCCCC' ca.axis = '#FFFFFF' ca.frame = '#AAAAAA' ca.font = '#FFFFFF' ca.arrow = '#FFFFFF' # Now that we've got everything set up, let's make a graph g = Graph('dummy.png', end=endTime, vertical_label='Bits', color=ca) g.data.extend([def1, def2, cdef1, cdef2, area2, area1]) g.title = '"In- and Out-bound Traffic Across Local Router"' #g.logarithmic = ' ' # Iterate through the different resoltions for which we want to # generate graphs. for time, step in times: # First, the small graph g.filename = graphfile % (exampleNum, time) g.width = 400 g.height = 100 g.start = endTime - time g.step = step g.write(debug=False) # Then the big one g.filename = graphfileLg % (exampleNum, time) g.width = 800 g.height = 400 g.write()
def GenerateGraph(): data = db.GetDataHumidityRrd(10000) #print len(data) filename = 'humidity.rrd' graphfile = 'humidity.png' graphfileLg = 'humidity-large.png' day = 24 * 60 * 60 week = 7 * day month = day * 30 quarter = month * 3 half = 365 * day / 2 year = 365 * day startTime = data[0][0] -1 endTime = data[-1][0] step = 1000 maxSteps = int((endTime-startTime)/step) # Let's create and RRD file and dump some data in it dss = [] ds1 = DS(dsName='humidity', dsType='GAUGE', heartbeat=60) dss.extend([ds1]) #week: RA:AVERAGE:0.5:6:336 #For Daily Graph, every 5 minute average for 24 hours: #RRA:AVERAGE:0.5:1:288 rra1 = RRA(cf='AVERAGE', xff=0.5, steps=1, rows=1440) #For Weekly Graph, every 30 minute average for 7 days: #RRA:AVERAGE:0.5:6:336 #rra1 = RRA(cf='AVERAGE', xff=0.5, steps=6, rows=336) #For Monthly Graph, every 2 hour average for 30 days: #RRA:AVERAGE:0.5:24:360 #rra1 = RRA(cf='AVERAGE', xff=0.5, steps=32, rows=1080) #For Yearly Graph, every 1 day average for 365 days: #RRA:AVERAGE:0.5:288:365 #rra1 = RRA(cf='AVERAGE', xff=0.5, steps=96, rows=365) rras = [] #rra1 = RRA(cf='AVERAGE', xff=0.5, steps=24, rows=1460) rras.append(rra1) myRRD = RRD(filename, ds=dss, rra=rras, start=startTime) myRRD.create() # let's generate some data... currentTime = startTime i = 0 for row in data: timestamp = row[0] value1 = row[1] # lets update the RRD/purge the buffer ever 100 entires i = i + 1 if i % 100 == 0: myRRD.update(debug=False) # when you pass more than one value to update buffer like this, # they get applied to the DSs in the order that the DSs were # "defined" or added to the RRD object. myRRD.bufferValue(timestamp, value1) # add anything remaining in the buffer myRRD.update() # Let's set up the objects that will be added to the graph def1 = DEF(rrdfile=myRRD.filename, vname='anturi1', dsName=ds1.name) vdef1 = VDEF(vname='myavg', rpn='%s,AVERAGE' % def1.vname) sensor1 = LINE(defObj=def1, color='#4544FC', legend='anturi1') line1 = LINE(defObj=vdef1, color='#01FF13', legend='Average', stack=True) # Let's configure some custom colors for the graph ca = ColorAttributes() ca.back = '#000000' ca.canvas = '#000000' ca.shadea = '#000000' ca.shadeb = '#111111' ca.mgrid = '#CCCCCC' ca.axis = '#FFFFFF' ca.frame = '#AAAAAA' ca.font = '#FFFFFF' ca.arrow = '#FFFFFF' # Now that we've got everything set up, let's make a graph #startTime = endTime - 3 * month g = Graph(graphfile, start=startTime, end=endTime, vertical_label='kosteus', color=ca) g.data.extend([def1, vdef1, sensor1]) g.write() g.filename = graphfileLg g.width = 690 g.height = 300 g.write()