#!/bin/bash # Run all necessary processing on NilmDB data. # Bail out on errors set -e # Ensure only one copy of this code runs at a time: LOCKFILE="/tmp/nilmdb-process.lock" exec 99>"$LOCKFILE" if ! flock -n -x 99 ; then echo "NilmDB processing already running, giving up..." exit 0 fi trap 'rm -f "$LOCKFILE"' 0 # redirect stdout/stderr to log, but keep it on the console too exec > >(tee /home/nilm/data/process.log) exec 2> >(tee -a /home/nilm/data/process.log >&2) echo "sinefit on phase A voltage" nilm-sinefit -c 5 /sharon/raw /sharon/sinefit echo "prep on A, B, C with appropriate rotations" nilm-prep -c 1 -r 0 /sharon/raw /sharon/sinefit /sharon/prep-a nilm-prep -c 2 -r 120 /sharon/raw /sharon/sinefit /sharon/prep-b nilm-prep -c 3 -r 240 /sharon/raw /sharon/sinefit /sharon/prep-c echo "decimate raw and prep data" nilm-decimate-auto /sharon/raw /sharon/prep* echo "run cleanup" nilm-cleanup --yes /home/nilm/data/cleanup.cfg