kopia lustrzana https://github.com/jbruce12000/kiln-controller
add pause and resume to api
rodzic
8c9d3881dc
commit
df7ee9e234
|
@ -18,3 +18,11 @@ post a memo
|
||||||
stats for currently running schedule
|
stats for currently running schedule
|
||||||
|
|
||||||
curl -X GET http://0.0.0.0:8081/api/stats
|
curl -X GET http://0.0.0.0:8081/api/stats
|
||||||
|
|
||||||
|
pause a run (maintain current temperature until resume)
|
||||||
|
|
||||||
|
curl -d '{"cmd":"pause"}' -H "Content-Type: application/json" -X POST http://0.0.0.0:8081/api
|
||||||
|
|
||||||
|
resume a paused run
|
||||||
|
|
||||||
|
curl -d '{"cmd":"resume"}' -H "Content-Type: application/json" -X POST http://0.0.0.0:8081/api
|
||||||
|
|
|
@ -84,6 +84,14 @@ def handle_api():
|
||||||
oven.run_profile(profile, startat=startat, allow_seek=allow_seek)
|
oven.run_profile(profile, startat=startat, allow_seek=allow_seek)
|
||||||
ovenWatcher.record(profile)
|
ovenWatcher.record(profile)
|
||||||
|
|
||||||
|
if bottle.request.json['cmd'] == 'pause':
|
||||||
|
log.info("api pause command received")
|
||||||
|
oven.state = 'PAUSED'
|
||||||
|
|
||||||
|
if bottle.request.json['cmd'] == 'resume':
|
||||||
|
log.info("api resume command received")
|
||||||
|
oven.state = 'RUNNING'
|
||||||
|
|
||||||
if bottle.request.json['cmd'] == 'stop':
|
if bottle.request.json['cmd'] == 'stop':
|
||||||
log.info("api stop command received")
|
log.info("api stop command received")
|
||||||
oven.abort_run()
|
oven.abort_run()
|
||||||
|
|
10
lib/oven.py
10
lib/oven.py
|
@ -541,6 +541,14 @@ class Oven(threading.Thread):
|
||||||
self.automatic_restart()
|
self.automatic_restart()
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
continue
|
continue
|
||||||
|
if self.state == "PAUSED":
|
||||||
|
self.start_time = self.get_start_time()
|
||||||
|
self.update_runtime()
|
||||||
|
self.update_target_temp()
|
||||||
|
self.heat_then_cool()
|
||||||
|
self.reset_if_emergency()
|
||||||
|
self.reset_if_schedule_ended()
|
||||||
|
continue
|
||||||
if self.state == "RUNNING":
|
if self.state == "RUNNING":
|
||||||
self.update_cost()
|
self.update_cost()
|
||||||
self.save_automatic_restart_state()
|
self.save_automatic_restart_state()
|
||||||
|
@ -806,7 +814,7 @@ class PID():
|
||||||
log.info("kiln outside pid control window, max heating")
|
log.info("kiln outside pid control window, max heating")
|
||||||
output = 1
|
output = 1
|
||||||
if config.throttle_below_temp and config.throttle_percent:
|
if config.throttle_below_temp and config.throttle_percent:
|
||||||
if ispoint <= config.throttle_below_temp:
|
if setpoint <= config.throttle_below_temp:
|
||||||
output = config.throttle_percent/100
|
output = config.throttle_percent/100
|
||||||
log.info("max heating throttled at %d percent below %d degrees to prevent overshoot" % (config.throttle_percent,config.throttle_below_temp))
|
log.info("max heating throttled at %d percent below %d degrees to prevent overshoot" % (config.throttle_percent,config.throttle_below_temp))
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -502,9 +502,6 @@ $(document).ready(function()
|
||||||
|
|
||||||
ws_status.onmessage = function(e)
|
ws_status.onmessage = function(e)
|
||||||
{
|
{
|
||||||
console.log("received status data")
|
|
||||||
console.log(e.data);
|
|
||||||
|
|
||||||
x = JSON.parse(e.data);
|
x = JSON.parse(e.data);
|
||||||
if (x.type == "backlog")
|
if (x.type == "backlog")
|
||||||
{
|
{
|
||||||
|
@ -528,11 +525,11 @@ $(document).ready(function()
|
||||||
if(state!="EDIT")
|
if(state!="EDIT")
|
||||||
{
|
{
|
||||||
state = x.state;
|
state = x.state;
|
||||||
|
|
||||||
if (state!=state_last)
|
if (state!=state_last)
|
||||||
{
|
{
|
||||||
if(state_last == "RUNNING")
|
if(state_last == "RUNNING" && state != "PAUSED" )
|
||||||
{
|
{
|
||||||
|
console.log(state);
|
||||||
$('#target_temp').html('---');
|
$('#target_temp').html('---');
|
||||||
updateProgress(0);
|
updateProgress(0);
|
||||||
$.bootstrapGrowl("<span class=\"glyphicon glyphicon-exclamation-sign\"></span> <b>Run completed</b>", {
|
$.bootstrapGrowl("<span class=\"glyphicon glyphicon-exclamation-sign\"></span> <b>Run completed</b>", {
|
||||||
|
@ -579,7 +576,9 @@ $(document).ready(function()
|
||||||
if (heat_rate > 9999) { heat_rate = 9999; }
|
if (heat_rate > 9999) { heat_rate = 9999; }
|
||||||
if (heat_rate < -9999) { heat_rate = -9999; }
|
if (heat_rate < -9999) { heat_rate = -9999; }
|
||||||
$('#heat_rate').html(heat_rate);
|
$('#heat_rate').html(heat_rate);
|
||||||
$('#heat').html('<div class="bar" style="height:'+x.pidstats.out*70+'%;"></div>')
|
if (typeof x.pidstats !== 'undefined') {
|
||||||
|
$('#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.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"); }
|
if (x.air > 0.5) { $('#air').addClass("ds-led-air-active"); } else { $('#air').removeClass("ds-led-air-active"); }
|
||||||
if (x.temperature > hazardTemp()) { $('#hazard').addClass("ds-led-hazard-active"); } else { $('#hazard').removeClass("ds-led-hazard-active"); }
|
if (x.temperature > hazardTemp()) { $('#hazard').addClass("ds-led-hazard-active"); } else { $('#hazard').removeClass("ds-led-hazard-active"); }
|
||||||
|
|
Ładowanie…
Reference in New Issue