|
|
#!/bin/bash |
|
|
|
|
|
# SEPARATOR |
|
|
# ============================================================================== |
|
|
# This script takes the lm1-exhibition-all.csv and lm2-exhibition-all.csv files |
|
|
# and splits the readings down into daily and hourly segments. The breakdowns |
|
|
# are placed in their own directories and should look like the following: |
|
|
|
|
|
# data |
|
|
# ├── light-meter-1 |
|
|
# | │ ├── hourly readings directory (E.G. 2021-07-14/) |
|
|
# | │ | └──hourly reading files (E.G. 2021-07-14--14.csv) |
|
|
# | │ └── hourly readings directory (E.G. 2021-07-15/) |
|
|
# | │ └── hourly reading files (E.G. 2021-07-15--17.csv) |
|
|
# │ └── daily readings files (E.G 2021-07-14.csv) |
|
|
# │ └── daily readings files (E.G 2021-07-15.csv) |
|
|
# ├── light-meter-2 |
|
|
# | └── repeats light-meter-1 structure... |
|
|
# ├── lm1-exhibiton-all.csv |
|
|
# └── lm2-exhibiton-all.csv |
|
|
# |
|
|
# 2 directories, 2 files (I've shorted the list for brevity) |
|
|
|
|
|
# Note: Naming Format for Hourly Breakdowns (YYYY-MM-DD--HH) |
|
|
# ============================================================================== |
|
|
# The last part of the file name specifies the hour the readings were taken |
|
|
# from. So, '2021-07-15--17.csv' means the readings for that file were taken on |
|
|
# the 15th July 2021 between 17:00 and 18:00 (5pm and 6pm). |
|
|
|
|
|
hourBreakdown () { |
|
|
d="$1"; # Day |
|
|
m="$2"; # Month |
|
|
mtr="$3"; # Light Meter (either 1 or 2) |
|
|
mkdir -p "data/light-meter-$mtr/2021-$m-$d"; |
|
|
for hour in {0..24}; do |
|
|
if [[ $hour -lt 10 ]]; then |
|
|
echo "time,reading" \ |
|
|
> "data/light-meter-$mtr/2021-$m-$d/2021-$m-$d--0$hour.csv"; |
|
|
rg "2021-$m-$d 0$hour:" "data/light-meter-$mtr/2021-$m-$d.csv" \ |
|
|
>> "data/light-meter-$mtr/2021-$m-$d/2021-$m-$d--0$hour.csv"; |
|
|
else |
|
|
echo "time,reading" \ |
|
|
> "data/light-meter-$mtr/2021-$m-$d/2021-$m-$d--$hour.csv"; |
|
|
rg "2021-$m-$d $hour:" "data/light-meter-$mtr/2021-$m-$d.csv" \ |
|
|
>> "data/light-meter-$mtr/2021-$m-$d/2021-$m-$d--$hour.csv"; |
|
|
fi |
|
|
done |
|
|
} |
|
|
|
|
|
dailyBreakdown () { |
|
|
lm=$1; # Light Meter (either 1 or 2) |
|
|
mkdir -p "data/light-meter-$lm"; |
|
|
for month in {6..7} ; do |
|
|
for day in {1..31} ; do |
|
|
# June is 30 days long, hence the check (and skip). |
|
|
if [[ $day != 31 ]] && [[ $month != "06" ]]; then |
|
|
if [[ $day -lt 10 ]]; then |
|
|
touch "data/light-meter-$lm/2021-0$month-0$day.csv"; |
|
|
echo "time,reading" \ |
|
|
> "data/light-meter-$lm/2021-0$month-0$day.csv"; |
|
|
rg "2021-0$month-0$day" "data/lm$lm-exhibiton-all.csv" \ |
|
|
>> "data/light-meter-$lm/2021-0$month-0$day.csv"; |
|
|
if [[ $month -lt 10 ]]; then |
|
|
hourBreakdown "0$day" "0$month" $lm; |
|
|
else |
|
|
hourBreakdown "0$day" $month $lm; |
|
|
fi |
|
|
else |
|
|
touch "data/light-meter-$lm/2021-0$month-$day.csv"; |
|
|
echo "time,reading" \ |
|
|
> "data/light-meter-$lm/2021-0$month-$day.csv"; |
|
|
rg "2021-0$month-$day" "data/lm$lm-exhibiton-all.csv" \ |
|
|
>> "data/light-meter-$lm/2021-0$month-$day.csv"; |
|
|
if [[ $month -lt 10 ]]; then |
|
|
hourBreakdown $day "0$month" $lm; |
|
|
else |
|
|
hourBreakdown $day $month $lm; |
|
|
fi |
|
|
fi |
|
|
fi |
|
|
done |
|
|
done |
|
|
} |
|
|
|
|
|
removeExcessData () { |
|
|
for day in {1..12}; do |
|
|
if [[ $day -lt 10 ]]; then d="0$day"; else d=$day; fi |
|
|
rm -r "data/light-meter-1/2021-06-$d" |
|
|
rm "data/light-meter-1/2021-06-$d.csv" |
|
|
rm -r "data/light-meter-2/2021-06-$d" |
|
|
rm "data/light-meter-2/2021-06-$d.csv" |
|
|
done |
|
|
} |
|
|
|
|
|
dailyBreakdown "1"; # Light Meter 1 |
|
|
dailyBreakdown "2"; # Light Meter 2 |
|
|
removeExcessData;
|
|
|
|