3 # Date: 2020-03-30T02:13Z
4 # Author: Steven Baltakatei Sandoval
6 #== Variable Initialization ==
8 #== Global constants ==
9 PATH
="/usr/local/bin/:$PATH" # Add default OpenTimestamps path to PATH (necessary if cron used to call this script)
10 PATH
="/opt/bktei:$PATH" # Add default baltakatei script install directory to PATH (necessary for other bk scripts)
11 SCRIPT_HOSTNAME
=$
(hostname
) # Save hostname of system running this script.
12 SCRIPT_VERSION
="bkgpslog 0.0.1" # Define version of script.
13 SCRIPT_TIME_SHORT
="$(date +%Y%m%dT%H%M%S%z)" # Save current date & time in ISO-8601 format.
14 SCRIPT_DATE_SHORT
="$(date +%Y%m%d)" # Save current date in ISO-8601 format.
15 #DIROUT1="/home/pi/Sync/Evanescent_Location" # Define output directory.
17 #== Function Definitions ==
19 echo "$@" 1>&2; # Define stderr echo function.
20 } # Define stderr message function.
23 echoerr
" bkgpslog.sh [ options ]"
27 echoerr
" Display help information."
30 echoerr
" Display script version."
32 echoerr
" -v, --verbose"
33 echoerr
" Display debugging info."
35 echoerr
" -o, --output [ directory ]"
36 echoerr
" Specify output directory to save logs."
37 } # Display information on how to use this script.
39 echoerr
"$SCRIPT_VERSION"
40 } # Display script version.
42 if [ $OPTION_VERBOSE -eq "true" ]; then
45 } # Verbose message display function.
47 while [ ! $# -eq 0 ]; do # While number of arguments ($#) is not (!) equal to (-eq) zero (0).
48 echoerr
"DEBUG:Starting processArguments while loop."
49 echoerr
"DEBUG:Provided arguments are:""$@"
51 --h |
--help) showUsage
; exit 1;; # Display usage.
52 --version) showVersion
; exit 1;; # Show version
53 --v |
--verbose) OPTION_VERBOSE
="true"; vbm
"DEBUG:Verbose mode enabled.";; # Enable verbose mode.
54 --o |
--output) if [ -d "$2" ]; then DIROUT1
="$2"; fi ;; # Define output directory.
55 *) echoerr
"ERROR: Unrecognized argument."; exit 1;; # Handle unrecognized options.
59 } # Argument Processing
62 } # Check that certain executables exist.
65 processArguments
# Process arguments.
66 checkExecutables
"gpspipe" # Confirm that executables necessary to run are available.
74 if [[ -d "$DIROUT1" ]] && command -v "gpspipe" 1>/dev
/null
2>/dev
/null
; then
76 #echoerr "DEBUG:Starting while loop."
77 # Update time constants
78 TIME_CURRENT
="$(date --iso-8601=seconds)" ;
79 #echoerr "DEBUG:TIME_CURRENT is:""$TIME_CURRENT" ;
80 TIME_CURRENT_SHORT
="$(date -d "$TIME_CURRENT" +%Y%m%dT%H%M%S%z)"
81 #echoerr "DEBUG:TIME_CURRENT_SHORT is""$TIME_CURRENT_SHORT"
82 DATE_CURRENT
="$(date -d "$TIME_CURRENT" --iso-8601=date)" ;
83 #echoerr "DEBUG:DATE_CURRENT is:""$DATE_CURRENT" ;
84 DATE_CURRENT_SHORT
="$(date -d "$TIME_CURRENT" +%Y%m%d)" ;
85 #echoerr "DEBUG:DATE_CURRENT is:""$DATE_CURRENT_SHORT" ;
86 DATE_TOMORROW
="$(date -d "$TIME_CURRENT next day
" --iso-8601=date)" ;
87 #echoerr "DEBUG:DATE_TOMORROW is:""$DATE_TOMORROW" ;
88 TIME_NEXT_MIDNIGHT
="$(date -d "$DATE_TOMORROW" --iso-8601=seconds)" ;
89 #echoerr "DEBUG:TIME_NEXT_MIDNIGHT is:""$TIME_NEXT_MIDNIGHT" ;
90 SECONDS_UNTIL_NEXT_MIDNIGHT
="$(( $(date +%s -d "$TIME_NEXT_MIDNIGHT") - $(date +%s -d "$TIME_CURRENT") ))" ;
91 #echoerr "DEBUG:SECONDS_UNTIL_NEXT_MIDNIGHT is:""$SECONDS_UNTIL_NEXT_MIDNIGHT" ;
92 if [ "$SECONDS_UNTIL_NEXT_MIDNIGHT" -eq 0 ]; then echoerr
"WARNING:Is it exactly midnight?" ; continue; fi ; # Exit loop early if equal to 0 because "timeout 0s" never ends.
93 if [ "$SECONDS_UNTIL_NEXT_MIDNIGHT" -lt 0 ]; then echoerr
"ERROR:Time until midnight error." ; exit 1; fi ; # Exit script if equal to 0 because "timeout 0s" never ends.
95 # Update output file names.
97 FILEOUTN
="$DATE_CURRENT_SHORT""..""$(hostname)""_location.nmea" ;
99 # Append location log until midnight.
100 timeout
"$SECONDS_UNTIL_NEXT_MIDNIGHT""s" gpspipe
-r 1>> "$DIROUTN"/"$FILEOUTN" 2>>/dev
/null
; # log raw nmea data
103 #gpspipe -r -d -l -o "$DIROUT1"/"$FILEOUT1" ;
106 echo "$SCRIPT_TIME_SHORT"">gpspipe or $DIROUT1 not found." >> ~
/"$SCRIPT_DATE_SHORT"..error.log
;