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')