-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathraspiLapseCamLED.py
executable file
·117 lines (91 loc) · 4.8 KB
/
raspiLapseCamLED.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/env python
#
# raspiLapseCam.py
#
# Created by James Moore on 28/07/2013.
# Copyright (c) 2013 Fotosyn. All rights reserved.
#
# Raspberry Pi is a trademark of the Raspberry Pi Foundation.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.>
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of the FreeBSD Project.
# This script sets up and runs a Python Script which, at intervals invokes a capture
# command to the Raspberry Pi camera, and stores those files locally in a dynamically
# named folder.
# To invoke, copy this script to an easy to find file location on your Raspberry Pi
# (eg. /home/pi/), log into your Raspberry Pi via terminal and type:
#
# sudo python /your/file/location/raspiLapseCam.py (add &) if you wish to run as a
# background task. A process ID will be shown which can be ended with
# sudo kill XXXX (XXXX = process number)
# Based on your settings the application will no begin capturing images
# saving them to your chose file location (same as current location of this file as default.
# Import some frameworks
import os
import time
import RPi.GPIO as GPIO
from datetime import datetime
import shutil
from gpiozero import LED
led = LED(17)
# Grab the current datetime which will be used to generate dynamic folder names
d = datetime.now()
initYear = "%04d" % (d.year)
initMonth = "%02d" % (d.month)
initDate = "%02d" % (d.day)
initHour = "%02d" % (d.hour)
initMins = "%02d" % (d.minute)
# Define the location where you wish to save files. Set to HOME as default.
# If you run a local web server on Apache you could set this to /var/www/ to make them
# accessible via web browser.
folderToSave = "/home/pi/timelapse_" + str(initYear) + "-" + str(initMonth) + "-" + str(initDate) + "_" + str(initHour) + "-" + str(initMins)
os.mkdir(folderToSave)
# Set the initial serial for saved images to 1
fileSerial = 1
# Run a WHILE Loop of infinitely
while True:
d = datetime.now()
if d.hour > 2:
# Set FileSerialNumber to 000X using four digits
fileSerialNumber = "%04d" % (fileSerial)
# Capture the CURRENT time (not start time as set above) to insert into each capture image filename
hour = "%02d" % (d.hour)
mins = "%02d" % (d.minute)
# Define the size of the image you wish to capture.
imgWidth = 2592 # Max = 2592
imgHeight = 1944 # Max = 1944
print " ====================================== Saving file at " + hour + ":" + mins
# set the output file name
outputfile = str(folderToSave) + "/" + str(fileSerialNumber) + "_" + str(hour) + "-" + str(mins) + ".jpg"
print "output file is " + outputfile
# Capture the image using raspistill. Set to capture with added sharpening, auto white balance and average metering mode
# Change these settings where you see fit and to suit the conditions you are using the camera in
led.on()
os.system("raspistill -w " + str(imgWidth) + " -h " + str(imgHeight) + " -o " + outputfile + " -sh 40 -awb auto -mm average -v")
led.off()
# copy it to web dir, will over write the previous one
shutil.copyfile(outputfile, '/var/www/html/timelapse.jpg')
# Increment the fileSerial
fileSerial += 1
# Wait 10 seconds before next capture
#time.sleep(1)
else:
# Just trapping out the WHILE Statement
print " ====================================== Doing nothing at this time"