reimplement start/stop of timelapse from gui

This commit is contained in:
Alexander Minges 2019-02-01 13:18:13 +01:00
parent c13cb3355e
commit 416f6ec2a6
2 changed files with 37 additions and 27 deletions

View file

@ -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()

View file

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