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.
It was a little disappointing yesterday because my Raspberry Pi was supposed to ship from Newark/Element14 and it didn’t happen. The new ship date is
July 5th July 12. But since this is the second third (or third fourth? I am losing track…) time they have moved the ship date I am not expecting it to ship on the 5th 12th of July.
An update on the Canon Powershot A510 is necessary as well. When the camera arrived it would not keep the date/time when the batteries were removed. This lead me to believe that the date/time battery was dead. After searching online I confirmed my suspicions. So I bought a pack of them from Amazon. It is really important that the camera can keep time when the power is off so when the Raspberry Pi starts it can get the time from the camera. And now with the new battery that will be possible.
Really looking forward to getting the Raspberry Pi and start testing! (Maybe someday I will get one….)
EDIT (June 02) – Just finished an online chat with Newark/Element 14 asking about the ship date being moved farther and farther back. His reply was that there was an unexpected development issue and it pushed ship dates back about 1-2 weeks.
The Raspberry Pi does not have a battery to keep time when it is powered off. This means that every time the Raspberry Pi starts up, it has to get the time from a network server or from the user at boot time. Here is a Raspberry Pi forum confirming that there is no System Clock and how to set the time using NTP (Network Time Protocol). Unfortunately this is a major problem for my time lapse project and using NTP will not work because I will not be connected to the network/Internet. If you have internet a good tutorial on how to use NTP for RedHat/Fedora based systems is here, and a good tutorial for Debian/Ubuntu based systems is here. Over the course of a year there is a very good chance that the power will be off or flicker enough cause the Raspberry Pi to reboot at least once or multiple times. Since it is very important that the pictures be taken at the right time each day, if this is messed up it could cause major problems.
One option would be to connect the Raspberry Pi to a battery of some sort to provide power while the main source of power is down. I do not want to go that route because that adds expense and complexity. The other problem with a battery is what if the power is off long enough to drain the battery? If this happens then the Raspberry Pi would power down and time would be lost.
After some searching online, I think I have found a solution. And that solution is to set the Canon Powershot A510 time and then when the Raspberry Pi starts it will get the time from the camera to set the system time. The camera has a small battery to keep the system time, and it should last for several days without power.
So why did they build the Raspberry Pi without a System Clock? The reason is because that added cost and complexity and they were trying to keep the design cheap and simple. And most people are going to be using their Raspberry Pi’s where there is a network easily available, or where time is not critical.
After I receive the camera I will post my script on how to get the system time from the camera and set the system clock using that time. However, all cameras function a little different so it may not work for all cameras.