"""
web cam controller for tracking slime molds
University of Applied Sciences Potsdam (Germany) @idpotsdam
author: fabiantheblind
license: MIT
"""
import sys # we need this to exit if the GPIO lib is not present
import time # just for testing purpose
import datetime # for timestamps
import os # for path checking
import subprocess # for calling the fswebcam
# change these if you like
IMAGEFOLDER = "/home/pi/fhp/images/"
IMAGENAME = "slime"
# leave this alone
TIMESTAMP = 0
# Check if the libraries exist on this system
# if not throw a warning
try:
subprocess.call(["fswebcam", "--version"])
except OSError as e:
if e.errno == os.errno.ENOENT:
# handle file not found error.
#
print "fswebcam not present"
print "please install via:"
print "sudo apt-get install fswebcam"
sys.exit()
else:
# Something else went wrong while trying to run `wget`
raise
#Add more LEDs as arguments
#
def setup():
"""Setup all that stuff"""
global TIMESTAMP
if not os.path.exists(IMAGEFOLDER):
print "folder does not exists. Create it"
os.makedirs(IMAGEFOLDER)
ts = time.time()
TIMESTAMP = datetime.datetime.fromtimestamp(ts).strftime("%Y-%m-%d_%H-%M-%S")
# now run all of that
if __name__ == '__main__':
try:
setup()
print "all set up"
# this is just for testing
# the max resolution is
# 2592 x 1944
# there cant be a preview when working remote via ssh
# but if you are in the GUI you can preview the image
# camera.start_preview()
# time.sleep(5)
filename = IMAGEFOLDER + IMAGENAME + TIMESTAMP + ".jpg"
# time.sleep(0.2)
#fswebcam -i 0 -d /dev/video0 --no-title --no-subtitle --no-info --no-banner -r 640x480 /home/pi/Desktop/fswebcam-test-eye-toy-02.jpg
cmd = "fswebcam -i 0 -d /dev/video0 --no-title --no-subtitle --no-info --no-banner -r 640x480 " + filename
os.system(cmd)
# if res == 0:
# print "everything went fine"
# else:
# print "some error while"
# time.sleep(0.2)
print "made a picture and wrote it to ", filename
# now set the permissions on the file so user pi can edit it
# os.chmod(filename, 0777)
# camera.stop_preview()
# GPIO.cleanup()
except KeyboardInterrupt:
# here you put any code you want to run before the program
# exits when you press CTRL+C
print "KeyboardInterrupt"
# except:
# this catches ALL other exceptions including errors.
# You won't get any error messages for debugging
# so only use it once your code is working
# print "Other error or exception occurred!"
finally:
print "end. clean up GPIO"