I recently started a new job so I will not be posting as much now unfortunately. I am trying to decide how I want the script that uses at to function. The problem is that if the power was consistent that script that is the last one in this post would work beautifully. However since power may not be on 100% of the time because of a snow storm or something else knocks the power out, this script may not function the way it should. If the power is off when the script was scheduled to run, it will run whenever the system starts up, not at the correct time. And this is a major problem. So my next idea was to set all of the times that the camera would take a picture for the whole year. This script accomplishes that.
# this script will set all of the times when
# the camera should take a picture.
# set some variables
# test how many times this script should execute
# I chose 400 because there is 365 days in a year
# and this is a little more than that
while [ $count -lt 400 ]
# set what time at should execute the script
at -f /root/camera_1443min now + $min’min’
# add 1 day and 3 minutes to the last time
# 1440min = 1day
min=$((min + 1443))
# increment the count by one
count=$((count + 1))
The main problem with this script is that if the power is off, and it misses one or more of these scheduled time, it will execute them when the computer boots. The problem with this is that I will have pictures in the folder along with all of the rest of them that were not taken at the right time. Still trying to figure out how to deal with that. If at had configuration files that would turn “execute old jobs at boot” on and off that would be nice! The other option is to assume that the power will only go out once or twice, and that I should not worry about it, and write a script that executes at startup to put the date and time into a file. Then I could get the date and time from that file and go find the images that were taken at the wrong time.
I ask this question on the Unix/Linux Stack Exchange forum and I am waiting to see if there are any answers that will work.
NOTE: This is kinda complicated to explain in text so I did my best. Leave a comment below if you have questions!
Now that I have my Raspberry Pi I wrote and tested the script to set the time on the Raspberry Pi using my Canon Powershot A510. This is a follow up of my previous post. This is tested and works with a Canon Powershot A510 but it may work with other Canon Cameras, however some may require a little modification to the script.
# this script works with the Canon Powershot A510
# other models may or may not work
# use gphoto2 to get the camera time
camera_time=`gphoto2 –summary | grep -i “unix time” | cut -d ” ” -f4`
# for some reason I had to subtract some time to get it to be correct
camera_time=$(($camera_time – 3592))
# convert UNIX time to readable time
time=`date -d @$camera_time`
# the next four (4) lines cut the timestamp into specific parts so
# that it can be used when setting the time
b=`echo $time | cut -d ” ” -f2`
c=`echo $time | cut -d ” ” -f3`
d=`echo $time | cut -d ” ” -f4`
f=`echo $time | cut -d ” ” -f6`
# this sets the variable real_time equal to the values from gphoto2
# and puts them in the correct order
real_time=`echo $c $b $f $d`
# set the system time equal to the time from gphoto2
date -s “$real_time”
And this script is put into a cron job that is set to run at startup using these details here.
If the power goes out and the camera and the Raspberry Pi shut down, when the power comes back the camera should startup faster than the Raspberry Pi and when the script runs it can set the time correctly. The camera has a small battery to keep time, and it will last for a long time with no power and still keep time.
Everything is setup outside my window taking pictures of our garden today. This is my chance to test and get all of the bugs worked out before I setup for a long period of time. Already I have changed several things and I updated the scripts post to reflect these changes.
I will probably post pictures of the setup tomorrow along with the time lapse that it is taking today.
The good news is that the enclosure for my project arrived. However the bad news is that it is smaller than the product dimensions stated it was. So the problem now is that the camera will not fit into the enclosure with the data and power cord plugged in… It will just barely fit with nothing plugged into the camera. And I need permanent power to the camera, and I need a data cable plugged into the camera and these plugin on the side of the camera. Not sure how this will turn out….
Any tips on how to shorten the length of a camera?