Moved brewfiles to source folder & add /source to sys path from __init__
This commit is contained in:
49
source/brewCamera.py
Normal file
49
source/brewCamera.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import os
|
||||
import time
|
||||
import picamera
|
||||
import threading
|
||||
from datetime import datetime
|
||||
|
||||
from logger import logger
|
||||
|
||||
class BrewCamera():
|
||||
def __init__(self, interval=10):
|
||||
self.lastCaptureTimestamp = None
|
||||
self.interval = interval
|
||||
self.warmupTime = 0.3
|
||||
|
||||
def spawnBackgroundCapture(self):
|
||||
thread = threading.Thread(target=self.captureOnIntervalForever, args=())
|
||||
thread.daemon = True
|
||||
thread.start()
|
||||
logger.info("spawned camera capture daemon at interval: {}".format(self.interval))
|
||||
|
||||
def captureOnIntervalForever(self):
|
||||
while True:
|
||||
time.sleep(self.interval - self.warmupTime)
|
||||
self.capture()
|
||||
|
||||
def capture(self):
|
||||
try:
|
||||
logger.debug('Capturing image')
|
||||
with picamera.PiCamera() as camera:
|
||||
camera.resolution = (1297, 972)
|
||||
camera.rotation = 180
|
||||
camera.annotate_background = picamera.Color('black')
|
||||
camera.annotate_text_size = 50 # (values 6 to 160, default is 32)
|
||||
camera.annotate_text = datetime.now().strftime('%A %d %b %Y %H:%M:%S')
|
||||
|
||||
# Camera warm-up time
|
||||
time.sleep(self.warmupTime)
|
||||
camera.capture('assets/foo.jpg')
|
||||
self.lastCaptureTime = datetime.now()
|
||||
os.replace('assets/foo.jpg', 'assets/capture.jpg')
|
||||
|
||||
except picamera.exc.PiCameraMMALError as error:
|
||||
logger.error('Picamera MMAL exception. Retrying picture in 1 second', es={
|
||||
error: str(error),
|
||||
exception: error.__class__.__name__
|
||||
})
|
||||
time.sleep(1)
|
||||
self.capture()
|
||||
|
||||
Reference in New Issue
Block a user