kopia lustrzana https://github.com/botheredbybees/kilnController
backlog
rodzic
86b86c4a41
commit
b85fa912f3
|
@ -1,9 +1,13 @@
|
|||
import threading,logging,json,time
|
||||
|
||||
import threading,logging,json,time,datetime
|
||||
from oven import Oven
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
class OvenWatcher(threading.Thread):
|
||||
def __init__(self,oven):
|
||||
self.last_profile = None
|
||||
self.last_log = []
|
||||
self.started = None
|
||||
self.recording = False
|
||||
self.observers = []
|
||||
threading.Thread.__init__(self)
|
||||
self.daemon = True
|
||||
|
@ -14,13 +18,38 @@ class OvenWatcher(threading.Thread):
|
|||
def run(self):
|
||||
while True:
|
||||
oven_state = self.oven.get_state()
|
||||
self.notifyAll(oven_state)
|
||||
|
||||
if oven_state.get("state") == Oven.STATE_RUNNING:
|
||||
self.last_log.append(oven_state)
|
||||
else:
|
||||
self.recording = False
|
||||
self.notify_all(oven_state)
|
||||
time.sleep(0.5)
|
||||
|
||||
def record(self, profile):
|
||||
self.last_profile = profile
|
||||
self.last_log = []
|
||||
self.started = datetime.datetime.now()
|
||||
self.recording = True
|
||||
|
||||
def addObserver(self,observer):
|
||||
def add_observer(self,observer):
|
||||
backlog = {
|
||||
'type': "backlog",
|
||||
'profile': self.last_profile,
|
||||
'log': self.last_log,
|
||||
#'started': self.started
|
||||
}
|
||||
print backlog
|
||||
backlog_json = json.dumps(backlog)
|
||||
try:
|
||||
print backlog_json
|
||||
observer.send(backlog_json)
|
||||
except:
|
||||
log.error("Could not send backlog to new observer")
|
||||
|
||||
self.observers.append(observer)
|
||||
|
||||
def notifyAll(self,message):
|
||||
def notify_all(self,message):
|
||||
message_json = json.dumps(message)
|
||||
log.debug("sending to %d clients: %s"%(len(self.observers),message_json))
|
||||
for wsock in self.observers:
|
||||
|
|
|
@ -55,6 +55,7 @@ def handle_control():
|
|||
profile_json = json.dumps(profile_obj)
|
||||
profile = Profile(profile_json)
|
||||
oven.run_profile(profile)
|
||||
ovenWatcher.record(profile_json)
|
||||
elif msgdict.get("cmd") == "STOP":
|
||||
log.info("Stop command received")
|
||||
oven.abort_run()
|
||||
|
@ -101,7 +102,7 @@ def handle_storage():
|
|||
@app.route('/status')
|
||||
def handle_status():
|
||||
wsock = get_websocket_from_request()
|
||||
ovenWatcher.addObserver(wsock)
|
||||
ovenWatcher.add_observer(wsock)
|
||||
log.info("websocket (status) opened")
|
||||
while True:
|
||||
try:
|
||||
|
|
Ładowanie…
Reference in New Issue