#!/bin/bash # # Author : Gaston Gonzalez # Date : 23 May 2023 # Updated : 16 August 2025 # Purpose : Offline HF prediction using voacapl if [[ $# -ne 4 ]]; then echo "Usage $(basename $0) " echo " Callsign of transmitting station" echo " Callsign of receiving station" echo " Output power [5|100|500|1500]" echo " Mode [AM|CW|FT8|SSB]" exit 1 fi ET_SSN="${HOME}/.local/share/emcomm-tools/voacap/ssn.txt" if [[ ! -e ${ET_SSN} ]]; then "Sunspot numbers not available: ${ET_SSN}. Exiting" exit 1 fi ET_VOA_WORKING_DIR=$HOME/itshfbc/run ET_VOA_REPORT=${ET_VOA_WORKING_DIR}/voacapl.txt INP=${ET_VOA_WORKING_DIR}/voacapx.dat OUT=${ET_VOA_WORKING_DIR}/voacapx.out # Year = 2023 YEAR=$(echo $(date '+%Y')) # Month (May) = 5.00 MONTH=$(date +'%m') MONTH_FMT=$(date +'%-m.00') ####################################################################### # TX Antenna ####################################################################### TX_STATION=$1 TX_JSON=tx-station.json curl -f -s http://localhost:1981/api/license?callsign=$TX_STATION > $TX_JSON TL=$(cat $TX_JSON | jq .lat) TK=$(cat $TX_JSON | jq .lon) TL1=$( awk -v n1=$TL -v n2=90 -v n3=-90 'BEGIN {if (n1n2) printf ("%s", "a"); else printf ("%.2f", n1);}' ) # add North or South (N/S) TLA=$( awk -v n1=$TL1 -v n2=0 'BEGIN {if (n1n2) printf ("%s", "a"); else printf ("%.2f", n1);}' ) # add East or West (E/W) TLO=$( awk -v n1=$TK1 -v n2=0 'BEGIN {if (n1 $RX_JSON RL=$(cat $RX_JSON | jq .lat) RK=$(cat $RX_JSON | jq .lon) echo "RX ($RX_STATION): $RL,$RK" RL1=$( awk -v n1=$RL -v n2=90 -v n3=-90 'BEGIN {if (n1n2) printf ("%s", "a"); else printf ("%.2f", n1);}' ) # add North or South RLA=$( awk -v n1=$RL1 -v n2=0 'BEGIN {if (n1n2) printf ("%s", "a"); else printf ("%.2f", n1);}' ) # add East or West RLO=$( awk -v n1=$RK1 -v n2=0 'BEGIN {if (n1. (117.) ssn=`grep "$YEAR $MONTH" ${ET_SSN} | awk '{print $5}' | cut -d"." -f1` # read more about fine-tuning your input file: # http://www.voacap.com/voacapw.html # http://www.voacap.com/frequency.html echo -e "\n" cat << END | tee $INP LINEMAX 999 number of lines-per-page COEFFS CCIR TIME 1 24 1 1 MONTH $YEAR $MONTH_FMT SUNSPOT $ssn. LABEL $TX$RX CIRCUIT $TLA $TLO $RLA $RLO S 0 SYSTEM 1. 155. 3.00 90. $MD 3.00 0.10 FPROB 1.00 1.00 1.00 0.00 ANTENNA 1 1 2 30 0.000[samples/sample.00 ] 0.0 $PW ANTENNA 2 2 2 30 0.000[samples/sample.00 ] 0.0 0.0000 FREQUENCY 3.60 5.30 7.1010.1014.1018.1021.1024.9028.20 0.00 0.00 METHOD 30 0 BOTLINES 8 12 21 TOPLINES 1 2 3 4 6 EXECUTE QUIT END voacapl -s ~/itshfbc echo "voacapl exited with $? using in=$INP and out=$OUT" (tail -n +27 $OUT | head -n 5 && grep -e'- REL' $OUT && grep -e'- S DBW' $OUT) | ./rel.pl > ${ET_VOA_REPORT} cat ${ET_VOA_REPORT}