commit
32ea1bab32
23
lib/oven.py
23
lib/oven.py
@ -327,6 +327,8 @@ class Oven(threading.Thread):
|
||||
self.totaltime = 0
|
||||
self.target = 0
|
||||
self.heat = 0
|
||||
self.heat_rate = 0
|
||||
self.heat_rate_temps = []
|
||||
self.pid = PID(ki=config.pid_ki, kd=config.pid_kd, kp=config.pid_kp)
|
||||
|
||||
@staticmethod
|
||||
@ -339,6 +341,24 @@ class Oven(threading.Thread):
|
||||
startat = 0
|
||||
return startat
|
||||
|
||||
def set_heat_rate(self,runtime,temp):
|
||||
'''heat rate is the heating rate in degrees/hour
|
||||
'''
|
||||
# arbitrary number of samples
|
||||
# the time this covers changes based on a few things
|
||||
numtemps = 60
|
||||
self.heat_rate_temps.append((runtime,temp))
|
||||
|
||||
# drop old temps off the list
|
||||
if len(self.heat_rate_temps) > numtemps:
|
||||
self.heat_rate_temps = self.heat_rate_temps[-1*numtemps:]
|
||||
time2 = self.heat_rate_temps[-1][0]
|
||||
time1 = self.heat_rate_temps[0][0]
|
||||
temp2 = self.heat_rate_temps[-1][1]
|
||||
temp1 = self.heat_rate_temps[0][1]
|
||||
if time2 > time1:
|
||||
self.heat_rate = ((temp2 - temp1) / (time2 - time1))*3600
|
||||
|
||||
def run_profile(self, profile, startat=0, allow_seek=True):
|
||||
log.debug('run_profile run on thread' + threading.current_thread().name)
|
||||
runtime = startat * 60
|
||||
@ -426,6 +446,8 @@ class Oven(threading.Thread):
|
||||
temp = 0
|
||||
pass
|
||||
|
||||
self.set_heat_rate(self.runtime,temp)
|
||||
|
||||
state = {
|
||||
'cost': self.cost,
|
||||
'runtime': self.runtime,
|
||||
@ -433,6 +455,7 @@ class Oven(threading.Thread):
|
||||
'target': self.target,
|
||||
'state': self.state,
|
||||
'heat': self.heat,
|
||||
'heat_rate': self.heat_rate,
|
||||
'totaltime': self.totaltime,
|
||||
'kwh_rate': config.kwh_rate,
|
||||
'currency_type': config.currency_type,
|
||||
|
||||
@ -575,6 +575,10 @@ $(document).ready(function()
|
||||
}
|
||||
|
||||
$('#act_temp').html(parseInt(x.temperature));
|
||||
heat_rate = parseInt(x.heat_rate)
|
||||
if (heat_rate > 9999) { heat_rate = 9999; }
|
||||
if (heat_rate < -9999) { heat_rate = -9999; }
|
||||
$('#heat_rate').html(heat_rate);
|
||||
$('#heat').html('<div class="bar" style="height:'+x.pidstats.out*70+'%;"></div>')
|
||||
if (x.cool > 0.5) { $('#cool').addClass("ds-led-cool-active"); } else { $('#cool').removeClass("ds-led-cool-active"); }
|
||||
if (x.air > 0.5) { $('#air').addClass("ds-led-air-active"); } else { $('#air').removeClass("ds-led-air-active"); }
|
||||
@ -608,6 +612,7 @@ $(document).ready(function()
|
||||
|
||||
$('#act_temp_scale').html('º'+temp_scale_display);
|
||||
$('#target_temp_scale').html('º'+temp_scale_display);
|
||||
$('#heat_rate_temp_scale').html('º'+temp_scale_display);
|
||||
|
||||
switch(time_scale_profile){
|
||||
case "s":
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
<div class="ds-title-panel">
|
||||
<div class="ds-title">Sensor Temp</div>
|
||||
<div class="ds-title">Target Temp</div>
|
||||
<div class="ds-title">Heat Rate</div>
|
||||
<div class="ds-title">Cost</div>
|
||||
<div class="ds-title ds-state pull-right" style="border-left: 1px solid #ccc;">Status</div>
|
||||
</div>
|
||||
@ -36,6 +37,7 @@
|
||||
<div class="ds-panel">
|
||||
<div class="display ds-num"><span id="act_temp">25</span><span class="ds-unit" id="act_temp_scale" >°C</span></div>
|
||||
<div class="display ds-num ds-target"><span id="target_temp">---</span><span class="ds-unit" id="target_temp_scale">°C</span></div>
|
||||
<div class="display ds-num ds-heat-rate"><span id="heat_rate">---</span><span class="ds-unit" id="heat_rate_temp_scale">°C</span></div>
|
||||
<div class="display ds-num ds-cost"><span id="cost">0.00</span><span class="ds-unit" id="cost"></span></div>
|
||||
<div class="display ds-num ds-text" id="state"></div>
|
||||
<div class="display pull-right ds-state" style="padding-right:0"><span class="ds-led" id="heat">\</span><span class="ds-led" id="cool">l</span><span class="ds-led" id="air">[</span><span class="ds-led" id="hazard">I</span><span class="ds-led" id="door">♨</span></div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user