Update gpsUpdate.sh
This commit is contained in:
parent
1624799aaa
commit
2e484d73af
59
bin/gpsUpdate.sh
Normal file
59
bin/gpsUpdate.sh
Normal file
|
@ -0,0 +1,59 @@
|
|||
#!/bin/bash
|
||||
|
||||
## ADD THE FOLLOWING TO CRONJOB: @reboot gpsUpdate.sh >> /home/pi/.gpsUpdate.log 2>&1
|
||||
|
||||
gpsLat="0.003" #default value is 0.002, (1,108 ft LAT)
|
||||
gpsLon="0.004" #default value is 0.002, (1,215 ft LON)
|
||||
|
||||
########## DO NOT EDIT BELOW THIS LINE ##########
|
||||
########## DO NOT EDIT BELOW THIS LINE ##########
|
||||
########## DO NOT EDIT BELOW THIS LINE ##########
|
||||
|
||||
source /boot/adsb-config.txt
|
||||
|
||||
latA="$LATITUDE"
|
||||
lonA="$LONGITUDE"
|
||||
|
||||
echo "Starting GPS position updater with a GPS coordinate precision of ${gpsLat}° latitude and ${gpsLon}° longitude." | ts
|
||||
echo "Last known coodinates: $latA, $lonA" | ts
|
||||
|
||||
gpspipe -d -w -o /tmp/gpsDump
|
||||
|
||||
while [ -f /tmp/gpsDump ] ; do
|
||||
if grep -q 'lat\|lon\|alt' /tmp/gpsDump ; then
|
||||
LAT=$(cat /tmp/gpsDump | awk 'BEGIN{RS=","; FS=":"} /lat/ {save=$2} END {print save}')
|
||||
LON=$(cat /tmp/gpsDump | awk 'BEGIN{RS=","; FS=":"} /lon/ {save=$2} END {print save}')
|
||||
ALT=$(cat /tmp/gpsDump | awk 'BEGIN{RS=","; FS=":"} /alt/ {save=$2} END {print save}')
|
||||
ALT=$(echo "scale=0; $ALT * 3.281/1" | bc)
|
||||
latB=$(echo "scale=3; $LAT /1" | bc)
|
||||
lonB=$(echo "scale=3; $LON /1" | bc)
|
||||
latP=$(echo "define abs(i) {if (i < 0) return (-i); return (i)}; abs($latA - $latB) <= $gpsLat" | bc)
|
||||
lonP=$(echo "define abs(i) {if (i < 0) return (-i); return (i)}; abs($lonA - $lonB) <= $gpsLon" | bc)
|
||||
echo "$(tail -n 499 /home/pi/.gpsUpdate.log)" > /home/pi/.gpsUpdate.log
|
||||
|
||||
if [ $latP -eq 1 ] && [ $lonP -eq 1 ] ; then
|
||||
echo "GPS Poisition $LAT, $LON is update to date!" | ts
|
||||
killall gpspipe
|
||||
rm /tmp/gpsDump
|
||||
# sleep 600 # systemd will restart the script after 600 secs (10 min)
|
||||
# gpspipe -d -w -o /tmp/gpsDump
|
||||
# echo "Checking current GPS position..." | ts
|
||||
|
||||
elif [ $ALT -gt -1500 ] ; then
|
||||
echo "Updating LAT: ${LAT}°, LON: ${LON}°, ELEV: ${ALT}ft" | ts
|
||||
cat > /boot/adsb-config.txt <<- EOL
|
||||
LATITUDE=$LAT
|
||||
LONGITUDE=$LON
|
||||
ALTITUDE=${ALT}ft
|
||||
USER="$USER"
|
||||
DUMP1090=$DUMP1090
|
||||
GAIN=$GAIN
|
||||
DUMP978=$DUMP978
|
||||
EOL
|
||||
systemctl restart readsb
|
||||
systemctl restart adsbexchange-mlat.service
|
||||
latA=$latB
|
||||
lonA=$lonB
|
||||
fi
|
||||
fi
|
||||
done
|
Loading…
Reference in a new issue