mirror of
https://github.com/eddyem/small_tel.git
synced 2026-06-19 02:16:23 +03:00
178 lines
4.8 KiB
Bash
Executable File
178 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
RA="17:17:08.86"
|
|
DEC="+67:57:11.4"
|
|
OBJ="GALEX171708.5"
|
|
# now exptime in seconds!
|
|
EXPTIME=40
|
|
FLATTIME=40
|
|
OBS="Emelianov E.V."
|
|
DATEEND=$(sunrise 14)
|
|
# focus each N seconds
|
|
FOCUST=7200
|
|
|
|
FNO=1
|
|
FDATE=0
|
|
|
|
#
|
|
# NOTE: THIS IS A NEW VERSION OF THE OBSERVATION SCRIPT!
|
|
# CHAGLELOG:
|
|
# Oct 2024: replace focussing algorithm (T. Fatkhullin)
|
|
# At the night start the first focussing run
|
|
# uses of two-step algorithm:
|
|
# 1) rough focus astimation along full season-to-season
|
|
# focus range (as it was implemented in the old obs. script)
|
|
# 2) precise focussing along narrow range computed from
|
|
# previous rough estimation
|
|
# Next focussing runs compute range from the current focus value.
|
|
# (new function 'focustel_new')
|
|
#
|
|
# May 2025: rewrite detection of running this script process (T. Fatkhullin)
|
|
# (use of '-c' commandline option for 'pgrep' command)
|
|
|
|
function focustel_new(){
|
|
rm focus*.fit 2>/dev/null
|
|
echo "Focussing..."
|
|
|
|
let fno=$1
|
|
if [[ $fno -gt 1 ]]; then
|
|
let curr_foc=`fli_control | grep FOCPOS | cut -d "=" -f 2`
|
|
lowf=$(echo "$curr_foc - 0.3" | bc -l)
|
|
highf=$(echo "$curr_foc + 0.3" | bc -l)
|
|
focus_seq_FLI.py -v -c focus$(printf "%02d" $1).jpg $lowf $highf 0.1
|
|
retcode=$?
|
|
if [[ $retcode -ne 0 ]]; then
|
|
echo -e "\nFOCUSSING SCRIPT RETURNED: $retcode"
|
|
echo -e "SOMETHING WAS WRONG IN FOCUSSING SEQUENCE!!! SET FOCUS TO PREVIOUS VALUE!!\n"
|
|
fli_control -g $curr_foc
|
|
return $retcode
|
|
fi
|
|
else
|
|
focus_seq_FLI.py --guess -v -N 7 -c focus$(printf "%02d" $1).jpg 4.25 5.75 0.25
|
|
return $?
|
|
fi
|
|
}
|
|
|
|
function sendcmd(){
|
|
echo $1 | nc localhost 10001 -q2
|
|
}
|
|
|
|
function point_tel(){
|
|
touch lastpointing
|
|
send_coords -r $1 -d $2
|
|
}
|
|
|
|
#c=$(pgrep run_full | wc -l)
|
|
# $ will run another run_full, so c=2 for single run
|
|
#if [[ $c -gt 1 ]]; then
|
|
# echo "Another process is running; exiting"
|
|
# exit 1
|
|
#fi
|
|
|
|
if [[ $(pgrep -c run_full) -gt 1 ]]; then
|
|
echo "Another process is running! Exit!"
|
|
exit 1
|
|
fi
|
|
|
|
unset http_proxy
|
|
unset https_proxy
|
|
|
|
# set lower limit to 5degr
|
|
send_command2mount ":So5#"
|
|
|
|
echo "Time diff: $(($DATEEND-$(date +%s)))"
|
|
if [ $(($DATEEND-$(date +%s))) -lt 3600 ]; then
|
|
echo "There's less an hour for observation!"
|
|
exit 2
|
|
fi
|
|
|
|
if [ $(($DATEEND-$(date +%s))) -gt 53200 ]; then
|
|
echo "There's more than 12 hours till closing, check script data!"
|
|
exit 3
|
|
fi
|
|
|
|
#STARTobs
|
|
|
|
#send_coords
|
|
#echo "Wait a little"
|
|
#sleep 10
|
|
|
|
echo "GoTo object: ${RA} ${DEC}"
|
|
send_coords -r${RA} -d${DEC}
|
|
|
|
echo "Start taking object"
|
|
|
|
badweather=0
|
|
while true; do
|
|
now=$(date +%s)
|
|
ANS=$(curl localhost:55555/status 2>/dev/null | grep status | cut -d "=" -f2)
|
|
echo "Dome status: $ANS"
|
|
if [[ $ANS != "opened" ]]; then
|
|
echo -e "\n\nBREAK by Closed Dome\n\n"
|
|
curl localhost:55555/weather 2>/dev/null > DomeClosed
|
|
curl localhost:55555/status 2>/dev/null >> DomeClosed
|
|
break;
|
|
fi
|
|
WLVL=0
|
|
chkweather | sed 's/\[.*//' > lastweather && badweather=0 || WLVL=$?
|
|
[[ $x -gt 1 ]] && badweather=$((badweather+1))
|
|
eval $(cat lastweather)
|
|
[[ $badweather -gt 5 ]] && (echo -e "\n\nBREAK by BAD WEATHER\n\n"; break)
|
|
[[ $ForceOFF == 1 ]] && (echo -e "\n\nBREAK by FORCE OFF\n\n"; break)
|
|
[[ -f stopobs ]] && (echo -e "\n\nBREAK by STOP OBS\n\n"; break)
|
|
[[ -f exitjob ]] && (echo -e "\n\nEXIT JOB\n\n"; exit 0)
|
|
if [[ "$now" -lt "$DATEEND" ]]; then
|
|
est=$(sendcmd ":Gmte#"|sed -e 's/^0*//' -e 's/#//')
|
|
echo -e "\n\nEstimated time to flip: $est minutes\n"
|
|
if [[ ("x$est" == "x") || ($est -lt 3) ]]; then
|
|
echo -e "\n\nRepointing: approaching flip\n\n"
|
|
point_tel "${RA}" "${DEC}"
|
|
continue
|
|
fi
|
|
ST=$(send_coords | awk '{print $4}')
|
|
[[ "x$ST" == "x" ]] && (echo -e "\n\nBREAK: have no answer from `send_coords`\n\n"; break)
|
|
if [[ $ST -ne "0" ]]; then
|
|
echo -e "\n\nRepoint: Mount status is not 'tracking'\n\n"
|
|
point_tel "${RA}" "${DEC}"
|
|
continue
|
|
else
|
|
if [[ $(($(date +%s) - $FDATE)) -gt $FOCUST ]]; then
|
|
echo -e "\n\nREFOCUSING by timeout\n\n"
|
|
focustel_new $((FNO++)) && FDATE=$(date +%s) || FNO=$((--FNO))
|
|
echo "FDATE: $FDATE, FNO: $FNO"
|
|
fi
|
|
preflash
|
|
fli_control -x $EXPTIME -N "${OBS}" -O "${OBJ}" "$OBJ"
|
|
fi
|
|
else
|
|
echo -e "\n\nBREAK: night is over\n\n"
|
|
break
|
|
fi
|
|
done
|
|
|
|
echo "Dome closed @ $(date)" >> closed
|
|
curl localhost:55555/close
|
|
|
|
park_telescope
|
|
Flat on
|
|
|
|
for x in $(seq 1 10); do
|
|
preflash
|
|
fli_control -r /tmp/10micron.fitsheader -x1 -N "${OBS}" -O "bias" -d bias
|
|
preflash
|
|
fli_control -r /tmp/10micron.fitsheader -x $EXPTIME -N "${OBS}" -O "dark" -d dark
|
|
preflash
|
|
fli_control -r /tmp/10micron.fitsheader -n3 -x $FLATTIME -N "${OBS}" -O "flat" flat
|
|
done
|
|
|
|
Flat off
|
|
echo "Closed @ $(date)" >> closed
|
|
|
|
STOPobs || true
|
|
|
|
DIR=$(basename $PWD)
|
|
echo "TAR: $DIR"
|
|
cd ..
|
|
./copy_and_xz.sh $DIR
|
|
echo "Archived, end"
|
|
echo "$DIR archived @ $(date)" >> archived
|