• PowerShell RF conditions source code

    From Sean Dennis@1:18/200 to All on Wed Aug 12 18:10:13 2026
    (I have not tried this one yet.)

    # -------------------------------------------------------------
    # HF Propagation Data Fetcher for Windows BBS Bulletins
    # -------------------------------------------------------------

    # Configure this path to point straight to your local BBS text bulletin folder $OutputFile = "C:\BBS\Files\hfprop.txt"
    $Url = "https://hamqsl.com"

    try {
    # Set Security Protocol to handle modern TLS web handshakes seamlessly
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    # Download and parse the raw live XML data structure
    $xml = Invoke-RestMethod -Uri $Url -UserAgent "Mozilla/5.0"
    $solarData = $xml.solardata

    # Extract primary solar parameters
    $updated = $solarData.updated.Trim()
    $sfi = $solarData.solarflux.Trim()
    $ssn = $solarData.sunspots.Trim()
    $aIndex = $solarData.aindex.Trim()
    $kIndex = $solarData.kindex.Trim()

    # Create a hash map table to store calculated daytime/nighttime band states
    $bands = @{}
    foreach ($band in $solarData.calculatedconditions.band) {
    $name = $band.name
    $time = $band.time
    $status = $band.'#text'.Trim()

    if (-not $bands.ContainsKey($name)) {
    $bands[$name] = @{}
    }
    $bands[$name][$time] = $status
    }

    # Construct the fixed-width ASCII grid layout strings
    $lines = @(
    "+-----------------------------------------------+",
    "| CURRENT HF BAND PROPAGATION |",
    "| Updated: {0,-36} |" -f $updated,
    "+-----------------------+--------------+--------+",
    "| Band / Frequency | Daytime | Night |",
    "+-----------------------+--------------+--------+"
    )

    # Standard band sequence loop mirroring solar.w5mmw.net
    $targetBands = @("80m-40m", "30m-20m", "17m-15m", "12m-10m")
    foreach ($b in $targetBands) {
    $day = if ($bands[$b].ContainsKey('day')) { $bands[$b]['day'] } else { "---" }
    $night = if ($bands[$b].ContainsKey('night')) { $bands[$b]['night'] } else { "---" }

    $lines += "| {0,-21} | {1,-12} | {2,-6} |" -f $b, $day, $night
    }

    $lines += "+-----------------------+--------------+--------+"
    $lines += "| Solar Flux Index: {0,-4} Sunspot Number: {1,-4} |" -f $sfi, $ssn
    $lines += "| Geomag A-Index: {0,-4} Geomag K-Index: {1,-4} |" -f $aIndex, $kIndex
    $lines += "+-----------------------------------------------+"

    # Force a clean write straight out to disk in standard ASCII text encoding
    $lines | Out-File -FilePath $OutputFile -Encoding ascii -Force
    }
    catch {
    Write-Error "Failed to retrieve or generate HF propagation ASCII file: $_"
    Exit 1
    }

    -- Sean KS4TD

    ... The motor will rotate in the wrong direction.

    --- MultiMail/Win
    * Origin: Outpost BBS * Johnson City, TN (1:18/200)