diff --git a/phytopi/camera/camera.py b/phytopi/camera/camera.py index 3c84759..24aef09 100644 --- a/phytopi/camera/camera.py +++ b/phytopi/camera/camera.py @@ -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() \ No newline at end of file diff --git a/phytopi/routes.py b/phytopi/routes.py index a85074f..d2818fc 100644 --- a/phytopi/routes.py +++ b/phytopi/routes.py @@ -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)