Bi-monthly release with minor bug fixes and improvements
indiserver -p 7625 indi_asi_ccd &>/dev/null &
(sleep 15s;
while true; do
tic=$(date +%s.%N);
/home/pi/capture.sh 55 50 2>&1;
toc=$(date +%s.%N);
slp=$(echo 60-$toc+$tic | bc -l);
echo $slp;
if [ $(echo "$slp > 0.0001" | bc -l) -eq 1 ]; then
sleep "$slp"s;
fi
done)>/home/pi/sky.log &
#!/bin/bash
date
shift=${1:-1}
shift0=$(echo $shift-1 | bc)
cd /home/pi/Sky
d=$(date -d "-$shift day 12:00:00" +"%Y-%m-%d-%H%M%S")
echo date $d
echo shift $shift
echo shift0 $shift0
files=$(find . -maxdepth 1 -type f -name 'Sky*.jpg' -newermt "-$shift day 12:00:00" ! -newermt "-$shift0 day 11:59:59" -exec ls -rt -dlist{} +)
nf=$(echo $files | wc -w)
echo $nf
if [ "$nf" -gt "0" ]; then
cat $files | avconv -f image2pipe -codec:v mjpeg -i - -loglevel warning -r 25 -an videos/Sky-$d.mp4
mkdir $d
mv $files $d/
fi
cd
#!/bin/bash
date
port=7625
ExpMax=${1:-55}
gain=${2:-50}
solEle=$(/home/pi/solElevation.py | cut -d ' ' -f 3 | cut -d '=' -f 2)
#AltMax=15 previously
exp=$(echo $solEle $ExpMax | awk '{ExpMin=0.00001; ExpMax=$2; AltMin=-16; AltMax=9; if ($1<=AltMax && $1>AltMin) {print ExpMin*exp(log(ExpMin/ExpMax)/(AltMax - AltMin)*($1-AltMax))} else {if ($1>AltMax) {print ExpMin} else {print ExpMax}}}')
exp=$(echo $exp | awk '{printf "%.6f\n",$1}')
echo solEle=$solEle, exp=$exp, gain=$gain
expMin=0.0003
gainMin=10
if [ $(echo $exp '<' $expMin | bc -l) == 1 ]; then
exp=$(echo $exp/$expMin | bc -l)
gain=$(echo $gainMin*\(1-$exp\)+$gain*$exp | bc -l | awk '{printf "%.0f\n",$1}')
exp=$expMin
fi
moon=$(/home/pi/moon.py)
moonAlt=$(echo $moon | cut -d ' ' -f 2 | cut -d '=' -f 2)
moonPhase=$(echo $moon | cut -d ' ' -f 3 | cut -d '=' -f 2)
if [ $(echo $moonAlt '>' 0 | bc -l) == 1 ]; then
moonAltMax=20
gain2=$(echo "("$gain"-1)"*"(100-"$moonPhase")/100+1" | bc -l | awk '{printf "%.0f\n",$1}')
m=$(echo $moonAlt/$moonAltMax | bc -l)
if [ $(echo $m '>' 1 | bc -l) == 1 ]; then
gain=$gain2
else
gain=$(echo $gain*\(1-$m\)+$gain2*$m | bc -l | awk '{printf "%.0f\n",$1}')
fi
fi
echo solEle=$solEle, exp=$exp, gain=$gain, moonAlt=$moonAlt, moonPhase=$moonPhase
#if [ $(echo $solEle '>' -5 | bc -l) == 1 ]; then
# echo "Sun To High, exiting..."
# exit
#fi
indi_setprop -p $port "ZWO CCD ASI120MC.CONNECTION.CONNECT=On"
indi_setprop -p $port "ZWO CCD ASI120MC.CCD_CONTROLS_MODE.AUTO_Gain=Off"
indi_setprop -p $port "ZWO CCD ASI120MC.CCD_CONTROLS.Gain=$gain"
indi_setprop -p $port "ZWO CCD ASI120MC.UPLOAD_MODE.UPLOAD_LOCAL=On"
indi_setprop -p $port "ZWO CCD ASI120MC.CCD_COMPRESSION.CCD_RAW=Off"
indi_setprop -p $port "ZWO CCD ASI120MC.CCD_COMPRESSION.CCD_COMPRESS=Off"
indi_setprop -p $port "ZWO CCD ASI120MC.CCD_VIDEO_FORMAT.ASI_IMG_RGB24=On"
indi_setprop -p $port "ZWO CCD ASI120MC.CCD_CONTROLS.HighSpeedMode=0"
indi_setprop -p $port "ZWO CCD ASI120MC.FPS.AVG_FPS=1"
indi_setprop -p $port "ZWO CCD ASI120MC.FPS.EST_FPS=1"
Name=$(date +%s)
indi_setprop -p $port "ZWO CCD ASI120MC.UPLOAD_SETTINGS.UPLOAD_DIR=/home/pi/Sky"
indi_setprop -p $port "ZWO CCD ASI120MC.UPLOAD_SETTINGS.UPLOAD_PREFIX=SKY_IMAGE_$Name"
indi_setprop -p $port "ZWO CCD ASI120MC.CCD_EXPOSURE.CCD_EXPOSURE_VALUE=$exp"
FITS="/home/pi/Sky/SKY_IMAGE_$Name".fits
echo $Prev $Next $FITS
h=$(date +"%H")
d=$(date +"%Y-%m-%d-%H%M%S")
# Get some weather info from the weather log files...
W=$(tail -n1 /home/pi/weatherLog.txt)
WSHumidity=$(echo $W | cut -d ' ' -f 2)
WSTemp=$(echo $W | cut -d ' ' -f 3)
ObsHumidity=$(echo $W | cut -d ' ' -f 4)
ObsTemp=$(echo $W | cut -d ' ' -f 5)
Rain=$(echo $W | cut -d ' ' -f 6)
Peltier=$(echo $W | cut -d ' ' -f 7)
title="Rain="$Rain", Peltier="$Peltier
subtitle="Hout="$WSHumidity"%, Tout="$WSTemp"C, Hin="$ObsHumidity"%, Tin="$ObsTemp"C, SEle="$solEle"."
width=1280
convert -font /usr/share/fonts/truetype/freefont/FreeMono.ttf -quality 85 -background '#0008' -fill white -gravity center -pointsize 20 -size ${width}x24 caption:"$d $title $subtitle" -flip -flop /home/pi/Sky/text-$Name.tiff &
textPid=$!
slp=$(echo $exp+1 | bc -l)
sleep $slp"s"
for i in $(seq 1 100); do
if [ "$(indi_getprop -p $port 'ZWO CCD ASI120MC.CCD_EXPOSURE.CCD_EXPOSURE_VALUE' 2>/dev/null | cut -d '=' -f 2)" == "0" ]; then
break
fi
sleep 0.2s
done
if ! [ -f $FITS ]; then
echo Nothing captured...
indi_setprop -p $port "ZWO CCD ASI120MC.CCD_ABORT_EXPOSURE.ABORT=On"
wait $textPid;
rm -f /home/pi/Sky/text-$Name.tiff;
exit
fi
wait $textPid;
(
if (( $(echo "$ExpMax" > "30" | bc -l) )); then
convert $FITS -sigmoidal-contrast 10,20% -combine -quality 100 /home/pi/Sky/temp-$d.jpg;
else
convert $FITS -sigmoidal-contrast 10,10% -gamma 1.3 -combine -quality 100 /home/pi/Sky/temp-$d.jpg;
fi
jpegpixi -f /home/pi/Sky/HotPixels/deadpixels-stretch.txt /home/pi/Sky/temp-$d.jpg /home/pi/Sky/temp-$Name.jpg >/dev/null 2>&1;
convert /home/pi/Sky/text-$Name.tiff -gravity south /home/pi/Sky/temp-$Name.jpg -flip -flop +swap -composite -quality 85 /home/pi/Sky/Sky-$d.jpg;
cp -f /home/pi/Sky/Sky-$d.jpg /home/pi/Sky/latest.jpg;
rm -f /home/pi/Sky/temp-$Name.jpg /home/pi/Sky/text-$Name.tiff $FITS /home/pi/Sky/temp-$d.jpg;
)&
#!/usr/bin/python
# Source:
# http://www.pveducation.org/pvcdrom/properties-of-sunlight/suns-position
from math import cos,sin,asin,acos,pi
import arrow
utc=arrow.utcnow()
local=arrow.now()
Longitude=10
Lattitude=60
newyear=local.replace(month=1,day=1,hour=0,minute=0,second=0,microsecond=1)
midnight=local.replace(hour=0,minute=0,second=0,microsecond=1)
ddays=local-newyear
#N is number of days since Januar 1st
N=ddays.days+1
dGMT=(local.hour-utc.hour)+(local.minute-utc.minute)/60.0
LT=(local.hour-midnight.hour)+(local.minute-midnight.minute)/60.0
B=360.0/365.0*(N-81.0)/180.0*pi
EoT=9.87*sin(2*B)-7.53*cos(B)-1.5*sin(B)
Phi=Lattitude
LSTM=15.0*dGMT
TC=4.0*(Longitude-LSTM)+EoT
LST=LT+TC/60.0
h=15.0*(LST-12)
delta=23.45*sin(B)
delta=delta/180.0*pi
Phi=Phi/180.0*pi
h=h/180.0*pi
alpha=asin(sin(delta)*sin(Phi)+cos(delta)*cos(Phi)*cos(h))
elevation=alpha/pi*180.0
azimuth=acos((sin(delta)*cos(Phi)-cos(delta)*sin(Phi)*cos(h))/cos(alpha))/pi*180.0
if (LST>12 or h>0):
azimuth=360-azimuth
print local, "EoT=%.2f"%EoT, "Elevation=%.2f"%elevation, "Azimuth=%.2f"%azimuth
#!/usr/bin/python
from datetime import date, datetime
from math import radians as rad,degrees as deg
import ephem
g = ephem.Observer()
g.name='Somewhere'
Longitude=10
Lattitude=60
g.lat=rad(Lattitude) # lat/long in decimal degrees
g.long=rad(Longitude)
m = ephem.Moon()
g.date = datetime.utcnow()
m.compute(g)
print "MoonAz=%.2f"%deg(m.az)," MoonAlt=%.2f"%deg(m.alt), "MoonPhase=%.2f"%m.phase