def calcHeatLoss(): global gVirtualInteriorSensor, gVirtualHeatgainSensor, gTotalAirWeightInPounds size = len( gVirtualInteriorSensor.tempHistory ) # we can't calculate heatloss if we don't have history if size<2: return workingHistory = gVirtualInteriorSensor.tempHistory[:] arrayops.sanitize(workingHistory) # if len(workingHistory) >= 3: # arrayops.smooth_gauss(workingHistory, 3) interiorDerivList = arrayops.getDeltas(workingHistory) #arrayops.smooth_gauss(interiorDerivList, 3) print "Interior temperature changes: ", str(interiorDerivList) scale = 60 / gSampleIntervalMin; # 5 minute samples, but we need BTU/h celsiusToFahrenheit = 1.8 averageHeatGain = 0.0 size = len( interiorDerivList ) for idx in range(0, size): dv1i = interiorDerivList[idx] * celsiusToFahrenheit heatloss = 0.24*gTotalAirWeightInPounds*dv1i * scale averageHeatGain += heatloss averageHeatGain /= size gVirtualHeatgainSensor.update(averageHeatGain)
def plotGraphs(): global gDateStr, gTimeStr print "Plotting..." print "temperatures" filename = "./data/" + gDateStr + "_temperatures.csv"; r = mlab.csv2rec(filename, delimiter=',') fig = Figure(figsize=(6,6)) canvas = FigureCanvas(fig) ax = fig.add_subplot(111) ax.set_title('Temperatures '+gDateStr,fontsize=14) ax.set_xlabel('Time',fontsize=6) ax.set_ylabel('Temperature (C)',fontsize=6) ax.grid(True,linestyle='-',color='0.75') # run two sanitize passes over the data r[r.dtype.names[1]] = arrayops.sanitize( r[r.dtype.names[1]] ) r[r.dtype.names[2]] = arrayops.sanitize( r[r.dtype.names[2]] ) # Generate the plot. ax.plot(r[r.dtype.names[0]],r[r.dtype.names[1]],color='tomato'); ax.plot(r[r.dtype.names[0]],r[r.dtype.names[2]],color='green'); # plot pump on times print "pump on" filename = "./data/" + gDateStr + "_pumpON.csv"; if os.path.exists(filename): r = mlab.csv2rec(filename, delimiter=',') ax.scatter(r[r.dtype.names[0]],r[r.dtype.names[1]],color='orange'); # plot pump off times print "pump off" filename = "./data/" + gDateStr + "_pumpOFF.csv"; if os.path.exists(filename): r = mlab.csv2rec(filename, delimiter=',') ax.scatter(r[r.dtype.names[0]],r[r.dtype.names[1]],color='blue'); for tick in ax.xaxis.get_major_ticks(): tick.label.set_fontsize(6) for tick in ax.yaxis.get_major_ticks(): tick.label.set_fontsize(6) ax.set_ylim(-5, 35) # Save the generated Plot to a PNG file. filename = "/var/www/Prometheus/data/"+gDateStr+"_temperatures.png" canvas.print_figure(filename,dpi=100) os.system('ln -sf '+filename+' /var/www/Prometheus/data/current_temperatures.png')