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