reimplement start/stop of timelapse from gui
This commit is contained in:
parent
c13cb3355e
commit
416f6ec2a6
2 changed files with 37 additions and 27 deletions
|
@ -60,18 +60,25 @@ class CameraWorker(object):
|
|||
with open(self.fifo, 'w') as fh:
|
||||
fh.write(cmd)
|
||||
|
||||
def timelapse(self, interval = 0):
|
||||
def start_timelapse(self, interval = 0):
|
||||
if self.status == CameraStatus.IDLE:
|
||||
self.send_cmd('tl {}'.format(str(interval)))
|
||||
self.status = CameraStatus.TIMELAPSE
|
||||
elif self.status == CameraStatus.TIMELAPSE:
|
||||
else:
|
||||
raise CameraActionError('Camera not idle!')
|
||||
|
||||
def stop_timelapse(self):
|
||||
if self.status == CameraStatus.TIMELAPSE:
|
||||
self.send_cmd('tl 0')
|
||||
self.status == CameraStatus.IDLE
|
||||
else:
|
||||
raise CameraActionError('Camera neither idle nor in timelapse mode!')
|
||||
raise CameraActionError('Camera not in timelapse mode!')
|
||||
|
||||
def get_frame(self, thumbnail=False):
|
||||
output = io.BytesIO()
|
||||
img = Image.open('/dev/shm/mjpeg/cam.jpg')
|
||||
return img
|
||||
img.save(output, format='JPEG')
|
||||
output.seek(0, 0)
|
||||
return output.getvalue()
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
from flask import render_template, Response, flash, jsonify, request, stream_with_context, send_file
|
||||
|
||||
from phytopi.camera.camera import CameraWorker
|
||||
from phytopi.camera.camera import CameraWorker, CameraStatus
|
||||
from phytopi.forms import CameraSettingsForm
|
||||
|
||||
from phytopi import app
|
||||
|
@ -12,7 +12,6 @@ import zipstream
|
|||
|
||||
camera = CameraWorker(app=app)
|
||||
camera.start()
|
||||
# camera = app.camera
|
||||
save_frames = False
|
||||
|
||||
@app.route('/')
|
||||
|
@ -23,34 +22,38 @@ def index():
|
|||
|
||||
@app.route('/toggle_timelapse', methods=['GET', 'POST'])
|
||||
def start_stop_timelapse():
|
||||
global save_frames
|
||||
# global save_frames
|
||||
global current_dataset
|
||||
global camera
|
||||
if save_frames:
|
||||
save_frames = False
|
||||
timelapse_interval = None
|
||||
btn_text = "Start"
|
||||
btn_class = 'btn-primary'
|
||||
camera.current_dataset = None
|
||||
camera.last_saved = None
|
||||
print(" > switched off timelapse mode")
|
||||
else:
|
||||
save_frames = True
|
||||
timelapse_interval = 1200
|
||||
btn_text = "Stop"
|
||||
btn_class = 'btn-danger'
|
||||
dataset = Dataset()
|
||||
db.session.add(dataset)
|
||||
db.session.commit()
|
||||
camera.current_dataset = dataset.id
|
||||
print(" > switched on timelapse mode")
|
||||
# if save_frames:
|
||||
# save_frames = False
|
||||
# timelapse_interval = None
|
||||
# btn_text = "Start"
|
||||
# btn_class = 'btn-primary'
|
||||
# camera.current_dataset = None
|
||||
# camera.last_saved = None
|
||||
# print(" > switched off timelapse mode")
|
||||
# else:
|
||||
# save_frames = True
|
||||
# timelapse_interval = 1200
|
||||
# btn_text = "Stop"
|
||||
# btn_class = 'btn-danger'
|
||||
# dataset = Dataset()
|
||||
# db.session.add(dataset)
|
||||
# db.session.commit()
|
||||
# camera.current_dataset = dataset.id
|
||||
# print(" > switched on timelapse mode")
|
||||
|
||||
# camera.set_timelapse_interval(timelapse_interval)
|
||||
if camera.status == CameraStatus.IDLE:
|
||||
camera.start_timelapse(1200)
|
||||
elif camera.status == CameraStatus.TIMELAPSE:
|
||||
camera.stop_timelapse()
|
||||
|
||||
camera.set_timelapse_interval(timelapse_interval)
|
||||
return jsonify(btn_text=btn_text, btn_class=btn_class)
|
||||
|
||||
|
||||
def gen(camera):
|
||||
# def gen():
|
||||
"""Video streaming generator function."""
|
||||
while True:
|
||||
frame = camera.get_frame(thumbnail=True)
|
||||
|
|
Loading…
Add table
Reference in a new issue