Files
brewLogger/source/brewCamera.py

50 lines
1.6 KiB
Python

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