custom-scripts/timelapse
2024-06-28 09:51:18 -04:00
..
install.sh Remove tl-clean as it's been implemented in tl-control 2024-06-25 09:59:40 -04:00
README.md Move the log after stopping so there's one lapse per entry. 2024-06-25 18:18:35 -04:00
tl-capture Add command line arguments and usage info 2024-06-28 09:51:18 -04:00
tl-control Move the log after stopping so there's one lapse per entry. 2024-06-25 18:18:35 -04:00
tl-process First functioning commit 2024-06-25 20:06:35 -04:00

Linux Webcam Time Lapse Script

This is a simple set of scripts to easily capture images on a set interval using a webcam attached to a Linux machine. For my use case I have built and tested this on a Raspberry Pi 3 with a Logitech C90 1080p webcam.

How it works

  • This script depends on fswebcam and rsync to work. An image is captured with fswebcam and stored locally, then synced to a remote device (ie. NAS).
  • Everything should be easily configurable from variables at the top of each file.
  • The install script just copies the script files to an install directory of your choice and does chmod +x on them.
  • Right now the script needs root/sudo permission as it syncs the files to a device that requires root for me. An adaptation of the script would negate the need for root permissions.
  • tl-control creates a cron file in /etc/cron.d named timelapse with a job that runs tl-capture as root and redirects the output to /var/log/timelapse.log

Explanation of Variables

install.sh

INSTALL_DIR -- Directory to install the script files to
FILE_LIST -- List of file names to be installed, shouldn't change unless you're modifying the script or names

tl-control

INSTALL_DIR -- Directory that the script files were installed to, must match install.sh
FILE_LIST -- List of file names installed as part of the script, must match install.sh
IMG_DIR -- Directory to save timelapse images to before syncing
SYNC_DES_PATH -- Complete path to sync destination directory
# Cron
CRON_DIR -- Complete path to your system's cron.d directory
CRON_FILE -- What to name the cron job file.
CRON_FREQUENCY -- Will get set by the script when starting a time lapse
CRON_LOG_FILE -- Complete path to output log location, including filename
CRON_JOB -- Text of the cron job, starting with the user, do not include frequency here

tl-capture

IMG_DIR -- Directory to save timelapse images to before syncing. Must match tl-control
NAS_MOUNT_DIR -- Path to root mount of remote device
SYNC_DES_PATH -- Path on remote device to sync images to
RESOLUTION -- Resolution of image, given to fswebcam as -r
DEVICE -- Device file, given to fswebcam as -d
FRAMES -- Number of frames to capture, given to fswebcam as -F
SKIPS -- Number of frames to skip, given to fswebcam as -S

# Pre-script configurations
# Generate the date for the filename
DATE=$(date +"%Y-%m-%d_%H-%M")
# Form the filename
FILENAME="TL-$DATE.jpg"