Donate Share

Time-lapse DCS-1000W

File Release Notes and Changelog

Release Name: 1.00

Notes:
History:

Date: 2004-04-03
Summary: Stable release!

This is the first stable release.  Some minor changes
were made since the last release candidate to insure that
data is never lost:

1. The ffmpeg.log file is now always created, in the movie
   directory.  In addition, after the movie processing is
   completed, the ffmpeg.log is scanned for the number of
   images processed.  This allows you to confirm that the
   processing was successful.  For example:

   Creating: 20040402-20040403000033.mpg from 12594 images
   Movie creation completed, 12594 images processed

   The first message (from the /var/log/dcs1000w.log) lists
   12594 image captures that are being provided to ffmpeg as
   input for the movie creation.  The second message lists
   the same number of images processed, extracted from the
   ffmpeg.log file.

2. Instead of erasing the images after each day's processing,
   they are moved to a 'yesterday' subdirectory in the image
   capture directory.  This allows full quality frames to be
   extracted if needed, or to be used for local processing.

3. Since ffmpeg will stop processing when it finds a missing
   image in the sequence, the script now scans the images to 
   insure there are no gaps prior to invoking ffmpeg.  Any 
   gaps are backfilled with the prior frame.  This prevents
   premature termination of the movie creation and prevents
   loss of data.


Date: 2004-03-11
Summary: Bug fix update, version 0.91

This is the second release candidate.  If no additional
problems are encountered, this release will be renamed
1.0, and become the first stable release.  Changes:

1. An additional hole in the date change detection was
   corrected.

2. Better handling of restart processing, when movie
   creation was in progress at the time of the interrupt.

3. A temporary "Please Standby" image is now created during
   image file cleanup.  The current.jpg symlink is pointed
   at this file, so image viewers don't see the symlink
   as broken for a few seconds.  Opera, for example,
   complained (error dialog) when this happened.

4. I added a good amount of debug code, to find the next
   bug.  Rather than remove it, I added a 'debug' option
   which you can add as the last parameter on the command
   line (see the new syntax).  If you turn this on, the
   script will generate considerable detail on its activity.
   In addition, the ffmpeg processing messages will be
   written to /var/log/ffmpeg.log.

5. Occasionally, ffmpeg would terminate after only a
   brief period of processing.  This would cause loss of
   the days images, because the captures would be erased
   when ffmpeg finished.  This was finally traced to a
   condition that could cause the image number to be
   incremented twice, causing an image number to be
   skipped in the sequence.  When ffmpeg encountered the
   gap, it thought it had run out of images and ended
   normally.  Fixed.


Date: 2004-02-28
Summary: Major feature update, version 0.90

The version number jump reflects that this release is a 1.0
release candidate.  Significant changes:

1. Continuous capture is now performed.  The daily creation
   of the movie is now a low priority background process and
   it occurs concurrent with the image captures.  On slow
   machines, the movie creation can take over an hour, which
   would create a gap in the captures.  This no longer occurs.

2. Robust recovery in the event processing is interrupted
   during image capture or movie creation.  In either case
   proper recovery action occurs.

3. The trigger for the movie creation is now when the
   filesystem date on the captured image changes.  This
   allows for shutting down the system for days, and still
   having proper recovery.

4. A symlink to the most current image captured is maintained
   as 'current.jpg' in the image capture directory.  This allows
   you to use an image viewer that can reload the images
   periodically (like the Opera web browser) to monitor the
   camera, without incurring any additional bandwidth load
   on the camera itself.  You can also use the ImageMagick
   display command, for example:

   display -update 5 -size 320x240 /camera/current.jpg &

5. The user error recovery routine, dcs1000w-error, can now be
   anywhere in the path.  It previously had to be in
   /usr/local/bin.  Note that since the default PATH (at least
   on my distribution) doesn't include /usr/local/bin, I still
   look there if I can't find dcs1000w-error in the PATH.

6. Directory paths are now used on all file references.

7. General cleanup and optimization all over the place.
   More comments, and clearer explanations in comments.
   Sleep in one second increments, so that response to an
   interrupt is more timely.  Better error messages.
   Checks for things that shouldn't happen.  The usual.


Date: 2004-02-07
Summary: Bug fix, cleanup, version 0.55

1. Reformatted long lines for readability

2. If an image capture results in a corrupted JPEG (RF noise
   or premature termination due to firmware error), skip the
   corrupted image.  The next successful image capture will 
   take its place.  This corrects the problem ffmpeg had when
   an image was missing from the sequence.


Date: 2004-01-25
Summary: Bug fix, Feature addition, version 0.54

1. A misplaced option on the ffmpeg command caused the
   created movies to only contain one frame per minute
   of the original captures.

2. Support for a user exit on an error retrieving images
   has been added.  The program '/usr/local/bin/dcs1000w-error'
   will be executed when an error is detected and logged if
   it exists.  A sample routine that uses X10 units to power
   cycle the camera is included.


Date: 2004-01-15
Summary: Overall improvements, version 0.53

1. Remove movie creation on interrupt
   This was unnecessary with the restart code.

2. Display version on startup
   Useful to make sure you're running the correct release

3. Write messages to system log too
   That way, log monitors (like swatch) can perform automated
   recovery operations, page you, whatever.

4. Intercept additional signals
   No matter how the script is killed, it should clean up
   the temporary files it creates.

5. Check for midnight processing during error delay
   If we were in the original error handler when midnight
   arrived, the code skipped the movie creation.  Duh.

6. Improve wget error recovery
   I managed to lock-up the camera firmware a couple of times,
   by pounding it with too fast retries.  This code has been
   working very reliably.  The firmware in the camera still
   reboots occassionally (reported as a bug to D-Link),
   but it recovers automatically in a few seconds.


Date: 2004-01-05
Summary: Initial public release, version 0.52

I had purchased the D-Link DCS-1000W as a present for myself.  Since
I only use Linux, the included software was of no value.  I wanted to
use the camera for security, and occasionaly for other projects.  For
example, I had recently watched a caterpillar metamorphize into a 
Luna moth.  It would have been neat to capture the whole process in
time-lapse.  Since I couldn't find any existing software to do this
I created this Bash script.


Changes: # Changelog: # # 1.00 - Always create the ffmpeg.log in the movies directory # Note the number of images processed in the ffmpeg.log # Move the day's images to a yesterday subdirectory in the # image capture directory, so they can be reprocessed # in the event of a discrepency in the image counts. # Add a protective scan of the images to insure there are # no missing sequence numbers. Backfill with the image # immediately preceding the missing image if needed. # 0.91 - Further improvement in day change detection # Further improvement in restart recovery # Maintain a valid current.jpg symlink during post-midnight # processing cleanup # Debugging support added with option 'debug' # Correct a bug that occasionally caused an image to be skipped # which in turn caused a premature termination of ffmpeg # 0.90 - Maintain a symlink to the current image as current.jpg # Change call to dcs1000w-error to use PATH vs hard location # Allow continuous capture during movie creation # Use proper path qualifiers on file references # Many small enhancements # 0.55 - Split long lines to prevent wrap # Skip corrupted images that won't convert # 0.54 - Correct misleading comment # Correct misplaced ffmpeg option # Call '/usr/local/bin/dcs1000w-error' on an image retrieval # error, if it exists # 0.53 - Remove movie creation on interrupt # Display version on startup # Write messages to system log too # Intercept additional signals # Check for midnight processing during error delay # Improve wget error recovery # 0.52 - Initial public release