APRS-AZ-EL - "gun director calculator" to calculate antenna pointing to direct it to where a remote target has reported its position via APRS network. Version 1.0 Usage info further down, first INSTALLATION: INSTALLATION: Pick the "arpsazel" file, move it somewhere in your $PATH, and make sure the first line of the file: "#!/usr/bin/perl" points to your system perl. If you don't have perl in your UNIX, how is that possible ? (If you use windows perl, well, can't help you there very much..) Set it to have proper execution bits, the UNIX way: chmod 755 aprsazel Now you should be able to run it -- or the perl interpreter may complain something.. Likely the complaint will begin like: Can't locate Date/Calc.pm in @INC (@INC contains: .... You will need CPAN's Date::Calc package. It may exist for your UNIX distribution pre-packaged, or perhaps you can install it yourself (likely as super-user): cpan -i 'Date::Calc' If something else fails, then your perl installation is possibly broken or way too old... (5.8.* recommended.) USAGE EXAMPLES: One-line report format: $ aprsazel -m MYCALL -c "6044.04N/02612.93E/" \ -s "aprs.sral.fi:2345" -t '^OH2SIX-11' \ --all VT100 full-screen report format: $ aprsazel -m MYCALL -c "6044.04N/02612.93E/" \ -s "aprs.sral.fi:2345" -t '^OH1SIX-11' \ --bigtext A utility to track azimuth/elevation/distance of a moving APRS target. It prints self-explanatory format Mandatory parameter options: -m --mycall [string] My callsign for connecting to APRS-IS server -c --coordinates [coord] WGS-84 coordinates of the observer in APRS format Like: "6044.04N/02612.93E/" (ddmm.mmN/ddmm.mmE/) (Example is for Viestikallio.FI 4m dish) -s --server [name] APRS Internet Server and port, e.g. "aprs.sral.fi:2345", [[TODO: can also have an optional name, e.g. "aprs.sral.fi:2345 sral"]] [[ This is dummy when using --simulator [file] -mode ]] -t --target [re] Station to be followed, can be multiple stations, a perl-re is used for matching; minimal: "." Recommended form: "^OH2SIX-11" (SSID included.) Optional parameter options: --myaltitude [meters] Observer altitude given in meters above sea level This affects pointing when target is very near observer and/or the observer altitude is notably above sealevel. --log [file] Log all received APRS packets on [file] --azimuth-zero-south Turn azimuth zero direction to south (offset 180) --azimuth-offset [int] Give offset on how much to rotate the azimuth, any arbitrary angle usable (1 to 359 degrees.) -z --azimuth Show azimuth of the target (degrees) -e --elevation Show elevation of the target (degrees) -d --distance Show distance of the target (kilometres) -a --altitude Show altitude of the target (metres) -l --all Print all above parameters with default units (-zedga) --bigtext Alike --all, plus print AZ and EL in BIGTEXT format -v --verbose Print some debug information -V --version Print aprsazel version --simulator [filename] Reads lines of timestamp TAB APRS-frame.. --threshold [angle] Threshold of when the movement in between two subsequent positions is too large. Also used by the predictor mode. Default: 2.0 --predictor If no tracking positions have been received, but movement vector from previous two received positions would result in antenna movement of more than 1/2 of threshold abgle value, a new prediction is shown to operator in order to keep predicted target position in the antenna beam (presumes same speed and direction as from previous two position reports, which might not be true in all situations. -h --help Prints this page Not implemented options: -p --port [string] AX.25 port, e.g. "ax0" or "2m" --distance-miles Show distance of the target in statute miles --distance-nautical Show distance of the target in nautical miles --distance-attoparsecs Show distance of the target in attoparsecs --altitude-feet Show altitude of the target in feet --altitude-miles Show altitude of the target in miles --altitude-attoparsecs Show altitude of the target in attoparsecs -g --speed Show speed of the target (kilometres per hour) --speed-mps Show speed of the target in meters per second --speed-mph Show speed of the target in miles per hour --speed-knots Show speed of the target in knots --speed-furlongs Show speed of the target in furlongs per fortnight --direction Show direction of the target at target ONELINER output-format: System running without --predictor enabled: $ aprsazel -m MYCALL -c "6044.04N/02612.93E/" \ -s "aprs.sral.fi:2345" -t '^OH2SIX-11' \ --threshold 6.0 --all Sample output is actually from simulator-mode, but online-mode is alike: .................. OH2SIX-11 300 Az: 327.0 El: 0.0 Dist: 42.9 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.4 OH2SIX-11 300 Az: 328.3 El: 0.0 Dist: 40.0 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.7 OH2SIX-11 300 Az: 329.7 El: 0.0 Dist: 37.2 Alt: 0.000 Alt_Hor: 0.000 Delta: 3.0 OH2SIX-11 300 Az: 331.4 El: 0.0 Dist: 34.4 Alt: 0.000 Alt_Hor: 0.000 Delta: 3.3 OH2SIX-11 300 Az: 333.3 El: 0.0 Dist: 31.6 Alt: 0.000 Alt_Hor: 0.000 Delta: 3.7 OH2SIX-11 300 Az: 335.6 El: 0.0 Dist: 28.8 Alt: 0.000 Alt_Hor: 0.000 Delta: 4.1 OH2SIX-11 300 Az: 338.5 El: 0.0 Dist: 26.2 Alt: 0.000 Alt_Hor: 0.000 Delta: 4.5 .................. System running with --predictor enabled: $ aprsazel -m MYCALL -c "6044.04N/02612.93E/" \ -s "aprs.sral.fi:2345" -t '^OH2SIX-11' \ --threshold 6.0 --all --predictor Sample output is actually from simulator-mode, but online-mode is alike: .................. OH2SIX-11 300 Az: 327.0 El: 0.0 Dist: 42.9 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.4 OH2SIX-11 300 Az: 328.3 El: 0.0 Dist: 40.0 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.7 OH2SIX-11 300 Az: 329.7 El: 0.0 Dist: 37.2 Alt: 0.000 Alt_Hor: 0.000 Delta: 3.0 269 Az: 331.2 El: 0.0 Dist: 34.7 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.0 OH2SIX-11 300 Az: 331.4 El: 0.0 Dist: 34.4 Alt: 0.000 Alt_Hor: 0.000 Delta: 1.4 234 Az: 332.9 El: 0.0 Dist: 32.2 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.0 OH2SIX-11 300 Az: 333.3 El: 0.0 Dist: 31.6 Alt: 0.000 Alt_Hor: 0.000 Delta: 1.8 205 Az: 334.9 El: 0.0 Dist: 29.7 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.0 OH2SIX-11 300 Az: 335.6 El: 0.0 Dist: 28.8 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.1 180 Az: 337.3 El: 0.0 Dist: 27.2 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.0 OH2SIX-11 300 Az: 338.5 El: 0.0 Dist: 26.2 Alt: 0.000 Alt_Hor: 0.000 Delta: 2.5 .................. The difference is largest antenna movement ("Delta:") that the calculator gives. With predictor enabled the movement is limited at 50% of threshold movement. NOTE: Use of predictor is meaningless when tracking multiple targets. BIGTEXT output-format: $ aprsazel -m MYCALL -c "6044.04N/02612.93E/" \ -s "aprs.sral.fi:2345" -t '^OH2SIX-11' \ --bigtext Screen content from a simulator run: ---------------------------------------------------------------- OH2SIX-11 300 Az: 320.3 El: 0.0 Dist: 72.2 Alt: 0.00000 Alt_Hor: 0.000 Delta: 1.0 ##### ##### ### ### # # # # # # # # # # # # # # # # # ##### ##### # # # # # # # # # # # # # # # # # # # # ##### ####### ### ### # >>>>>>>>>>>>>>>>>>>>>>>> /^/^/^/^/^/^/^/^ Thu Jan 1 12:30:00 1970 dt: 0.0 min Wait timer: 5:00 ---------------------------------------------------------------- That is a "full-screen" terminal display of target AZIMUTH, ELEVATION, and movement Delta since previous location fix, all presented in DEGREES. The movement is important for big microware antennas to notice when the movement has been big enough that the target has slipped beyond antenna beamwidth... (This tool does _not_ command your antenna, but you can use this to make such commander.) In the "BIGTEXT" portion the trailing "/" is animated "spinner" giving a visual clue that something has changed in the screen since previous time. If the needed movement is bigger than --threshold [value] parameter (default: 2.0) presenting degrees, then the display will show a big X after the two numbers. Or in --predictor -mode a prediction results "P" flag there. The sort of arrows underneath the AZ and EL values are telling the movement direction in between last two location fixes. Line of "---" means "no movement". Screen with PREDICTOR ENABLED and a prediction being presented. (From simulator, not actual..) $ aprsazel -m MYCALL -c "6044.04N/02612.93E/" \ -s "aprs.sral.fi:2345" -t '^OH2SIX-11' \ --bigtext --predictor ---------------------------------------------------------------- 269 Az: 331.2 El: 0.0 Dist: 34.7 Alt: 0.00000 Alt_Hor: 0.000 Delta: 2.0 ##### ##### # ### ###### # # # # # ## # # # # # # # # # # # # # # ##### ##### # # # ###### # # # # # # # # # # # # # # # # # ##### ##### ##### ### # # >>>>>>>>>>>>>>>>>>>>>>>> /^/^/^/^/^/^/^/^ Thu Jan 1 13:34:29 1970 dt: 0.0 min Wait timer: 5:00 ---------------------------------------------------------------- The big "P" sign next to the spinner tells that this new direction is determined by the predictor submode, and not actual position fix. Target station callsign disappearence from upper left corner is originally an accidential an artefact, but perhaps it is better that way to give additional clue that not all is well. NOTE: Use of predictor is meaningless when tracking multiple targets. TODO: --direction -displaymode ? Show where the thing is moving, and how fast.. (Target's true speed and direction, or apparent ?) Actually in BIGTEXT format the ">>>" and "/^/^" in above example mean that the target is apparently moving clockwise and up.. AUTHOR: Collecting various perl packages for this use, plus writing own application glue and finally bundling everything together by: Matti Aarnio, oh2mqk at sral.fi