#! /bin/bash
# -*- sh -*-
cat <
RPiRENA Data
Live plots of CHAOS-Jr on $(hostname)
EOT
exec 2>&1
if [ -x ./rpirena.py ]
then
data=./data
else
data=../../www/data
cd /home/$(hostname)/stephan/rpirena || exit
fi
lf=${data}/rpirena-cgi.log
lkf=${data}/rpirena-cgi.lock
declare -a QUERY=(${QUERY_STRING//&/ })
ACTION=${QUERY[0]}
[ -z "$ACTION" ] && TARGET="" || TARGET=${QUERY[-1]}
[ "$TARGET" = "$ACTION" ] && TARGET=""
[ -z "$ACTION" ] && ACTION=old
echo "$REMOTE_ADDR $HTTP_USER_AGENT $QUERY_STRING $ACTION $TARGET" >>$lf
[ -f "$lkf" ] && cat "$lkf" 2>/dev/null
[ -z "$TARGET" ] || cat <Actions for the selected old data file:
plot
old
trigger
replot
nomake
EOF
cat <Beware of the fake hwclock of the Raspberry Pi, the times in the filenames may be fake.
You may need to reload the page in your browser to see the latest plots (Ctrl-Shift-R).
EOF
if [ "$ACTION" = "trigger" ]
then
export QUERY_STRING="replot&$TARGET"
nohup ../../www/cgi/rpirena > ${data}/rpirena-trigger.log 2>&1 &
ACTION="old"
fi
if [ "$ACTION" = "restart" ]
then
echo restart > auto-run
export ACTION="old"
fi
if [ "$ACTION" = "stop" ]
then
echo stop > auto-run
export ACTION="old"
fi
fn=${data}/$TARGET
[ -f $fn ] || fn=$(ls -1 ${data}/20??-??-??T??:??:??Z.EI | tail -1)
bfn=$(basename $fn .EI)
pfn=${data}/$bfn
sfn=${pfn}-spectra.png
hfn=${pfn}-hk.png
cfn=${pfn}-counts.png
ffn=${pfn}-fish.png
REPLOT=$ACTION
[ -f "$fn" -a "$fn" -nt "$sfn" -a "$ACTION" = "plot" ] && REPLOT=replot
if [ -f "$fn" -a "$REPLOT" = "replot" ] && dotlockfile -r 0 $lkf
then
trap "rm $lkf" EXIT
date +"Processing $bfn since %Y-%m-%d %H:%M:%S UTC" > $lkf
date +"Plot $bfn %Y-%m-%d %H:%M:%S" >>$lf
[ "$ACTION" = "nomake" ] || make UNIT=CHAOS ${pfn}.EmV ${pfn}.hist ${pfn}.HK ${pfn}.CP ${pfn}.FISH >>$lf 2>&1
cat <>$lf 2>&1
print "plot fish"
set title "$(hostname) RPiRENA $bfn" noenh
set xrange [3:7]
set yrange [-2:2]
set cbrange [0.5:*]
set log cb
set xlab "E_{BGO}"
set ylab "E_A/E_C"
set grid front
set timestamp "%Y-%m-%d %H:%M:%S"
set term png size 1024,768
set out "${ffn}-new"
set xtics ("1MeV" 3, "10 MeV" 4, "100MeV" 5, "1GeV" 6, "10GeV" 7)
set ytics ("0.01" -2, "0.1" -1, "1" 0, "10" 1, "100" 2)
plot "${pfn}.FISH" nonuniform matrix not with image
unset out
reset
print "plot spectra"
set title "$(hostname) RPiRENA $bfn" noenh
set xrange [-10:160]
set yrange [-10:160]
set y2range [0.9:*]
set log y2
set ytics nomirror
set y2tics
set xlab "pulse height [mV]"
set ylab "pulse height [mV]"
set y2lab "[counts/mV]"
set grid
set timestamp "%Y-%m-%d %H:%M:%S"
set term png size 1024,768
set out "${sfn}-new"
plot \
"$pfn.EmV" u "AA":"CC" tit "A vs C" with d, \
"$pfn.EmV" u "B1":"B2" tit "B_1 vs B_2" with d, \
for [c in "AA CC B1 B2"] "$pfn.hist" u "mV":c axis x1y2 tit c w histeps
unset out
print "plot HK"
set xrange [*:*]
set xtics timedate
set format x "%d.%m.\n%Hh%M" time
set yrange [0:10<*<100]
set y2range [*:*]
unset log y2
set xlab "time [UTC]"
set ylab "[V] [10nA]"
set y2lab "[°C]"
set term png
set out "${hfn}-new"
array HN[8] = [ "V_{CORE}", "V_{CC}", "V_{IO}", "V_{PRIM}", "T_{FPGA}", "T_{OUT}", "T_{EBOX}", "I_{BIAS}" ]
plot \
for [c=8:8] ">$lf 2>&1
mv -v $hfn-new $hfn >>$lf 2>&1
mv -v $cfn-new $cfn >>$lf 2>&1
mv -v $ffn-new $ffn >>$lf 2>&1
rm -f $lkf
trap EXIT
fi
cat <File: $bfn
Older Spectra:
EOT
cd ${data}
ls -r1 20??-??-??T??:??:??Z.EI | xargs -i echo '- {}'
cat <