Weather station scripts

They're free, but use at your own risk

The scripts referenced here are used in the operation of this weather station, and may be freely copied and used to support your station. Please note that you use these scripts at your own risk. No warranty is expressed or implied. I accept no liability for any damages that may ensue from their use.
You will need to configure them for your own particular weather station website.
RSS feed for Scripts Updates A RSS Feed is available to help keep you informed on updates to the scripts.

Many of these scripts are now available on GitHub at

Buy Me A Coffee If you find one or more of the scripts useful to you, please consider making a donation to help offset the routine expenses of operation of this website.
Thanks for your kind support!

A Version History is available -- check back from time to time to see if there are updates to scripts you have downloaded earlier. Announcements of version updates and new scripts are made on and Weather-Watch forums and saratogaWXPHP Twitter account as they become available.

Note: Twitter widget has been disabled 3-Jul-2023 since it no longer displays the recent update Tweets.

This page was updated Tuesday, 28-Jul-2020 2:45 PM

PHP for NWS Area Forecast Discussion

This PHP script will fetch and cache the Forecast Area Discussion issued by your local NWS office.
Thanks to Mike Challis of Long Beach, WA for the inspiration for and enhancement of this script.

FXUS66 KMTR 122334

Area Forecast Discussion
National Weather Service San Francisco CA
434 PM PDT Wed Jun 12 2024


Issued at 1234 PM PDT Wed Jun 12 2024

Quiet through the rest of the week. Near normal temps by the
weekend. Increasing confidence for high wind potential and
increased fire danger Sunday into early next week.


(This evening through Thursday)
Issued at 1234 PM PDT Wed Jun 12 2024

Noticeably cooler temps today across the area as the upper level
ridge moves out and the marine layer deepens in response to a weak
mid level shortwave trough. Additionally, more robust marine
stratus associated with moisture from a weak disturbance off the
coast of southern CA will continue to linger for areas from around
Santa Cruz to the Big Sur coast. A few degrees warmer for
Thursday as the shortwave kicks out. Overall not much in the way
of impactful changes in the short term. Pleasant day ahead on
Thursday with little in the way of heat risk.


(Thursday night through next Tuesday)
Issued at 1234 PM PDT Wed Jun 12 2024

Heading into the weekend will be relatively quiet as temps cool a
bit again down to around seasonal normals. The real story will be
later in the weekend and into early next week. A deep upper low
currently up in the Gulf of Alaska becomes dislodged and moves
into the Pacific Northwest, kicking off another deep disturbance
sliding into the West Coast/Great Basin. Well advertised by
ensemble cluster analysis, there is high confidence in this
pattern change taking place Sunday into Tuesday. Placement of the
upper level trough axis is key when determining where the
strongest winds will be and their direction. There is higher
confidence that the strongest winds will remain over the waters
and near coastal areas, including more inland coastal gaps such as
the Petaluma Gap, San Bruno Gap, and other NW-SE oriented valleys.
While we aren`t expecting any widespread offshore winds as of this
forecast, the positioning of the trough will ultimately be the
deciding factor, so stay tuned to future updates as confidence
gradually increases. With grasses and fine fuels drying out
rapidly, it looks like the Sunday-Monday timeframe is one to watch
when it comes to elevated fire danger, particularly in the North
Bay where fine fuels are drier than elsewhere around the Bay Area
and Central Coast. For now, moisture recovery looks decent going
into the weekend as winds should remain onshore, but we are
keeping a close eye on the positioning of the trough and will
update messaging accordingly.


(00Z TAFS)
Issued at 434 PM PDT Wed Jun 12 2024

MVFR stratus continues at the immediate coast south of the Golden
Gate and throughout the Monterey Bay region. Breezy onshore winds
with a southerly component are developing across the region and will
diminish in the evening. MVFR-IFR stratus builds back at the coast
and the Salinas Valley overnight. Some models show stratus flowing
through the Golden Gate tonight, but probabilities are low and the
TAFs remain VFR. Ceilings lift through Thursday morning and onshore
winds return in the afternoon.

Vicinity of SFO... Model guidance suggests a low confidence for IFR-
MVFR ceilings at the terminal late tonight, and returning later
Thursday evening, but with low probabilities (at most 10-20%) the
TAFs remain VFR throughout. Southerly winds are beginning to
strengthen and will gust to around 20-25 knots. Winds diminish
overnight and turn towards the northwest on Thursday, gusting to
around 15-20 knots.

SFO Bridge Approach... Similar to SFO.

Monterey Bay Terminals... The terminals remain at MVFR through the
day, with ceilings falling to IFR overnight. Breezy onshore winds
gusting to around 20 knots continuing through the evening when winds
diminish, before returning Thursday afternoon. A moderate confidence
(60-70% probability) that VFR returns late Thursday morning, with a
potential for an early return for stratus at MRY just before the end
of the TAF period.


(Tonight through next Monday)
Issued at 434 PM PDT Wed Jun 12 2024

Northwesterly winds persist over the northern waters through the
end of the week with gale force gusts possible over the northern
waters through early Thursday. Widespread strong northwesterly
winds with gale force gusts will build by the weekend and
continue into next week. Significant wave heights up to around 12
to 15 feet in the outer waters continue into the weekend.


PZ...Small Craft Advisory until 3 AM PDT Thursday for Pt Arena to Pt
     Reyes 0-10 nm.

     Small Craft Advisory from 3 PM Thursday to 3 AM PDT Friday for
     Pigeon Pt to Pt Pinos 10-60 NM-Pt Arena to Pt Reyes 0-10 nm.

     Gale Warning until 9 AM PDT Thursday for Pt Arena to Pt Reyes 10-
     60 NM.



SHORT TERM...Behringer
LONG TERM....Behringer

Visit us at

Follow us on Facebook, Twitter, and YouTube at:

NWS MTR Office Area Forecast Discussion

To use, include the output of the script on your webpage by using

$doIncludeFD = true;
include("forecast-discussion.php"); ?>

to perform the include. Settings inside the script are:

// settings:
//  change myNWS to abbreviation for your local NWS office
//    other settings are optional
    $myNWS = 'MTR';   // San Francisco, NWS office
//  $myNWS = 'PQR';   // Portland, OR
//  $myNWS = 'OAX';   // Omaha, NE (Carter Lake, IA)
$cacheName = "forecast-discussion.txt"; // used to store the file so we don't have to // fetch it each time $refetchSeconds = 1800; // refetch every nnnn seconds
$cacheFileDir = './'; // default cache file directory // end of settings

The only required setting is for $myNWS which designates the local NWS office.
To find the 3-character abbreviation for your local NWS office for the $myNWS variable, follow these steps:

  1. Browse to
  2. Use the search box on the left to search for your city, state
  3. Look at the URL in the 'Forecast Discussion' link near the bottom of the page
  4. Use the 3-character abbreviation is in the &issuedby=XXX parameter on the Forecast Discussion link (XXX will be your local office)
  5. put the XXX in the $myNWS = 'XXX'; statement

The script has two optional parameters when you call it by URL from your website::

Will return the contents without the surrounding <html><head></head><body> and </body></html> tags
Will override the default $refetchSeconds=1800 so that the cache is refreshed immediately

NWS Area Forecast Discussion PHP script Demo and Download (1.06 - 27-Feb-2018 see history).

PHP for NWS CPC World Extremes

This script was originated by Michael of and has been rewritten to use the NWS Climate Prediction Center's CSV file for world observations. The script does not produce output (other than HTML comments for status), so you are free to include it in a page, and format the text output as you desire. The script returns data in variables:

$omittedCountry (text list of countries excluded from $world high/low/precip scans)
Note: the setting $ignoreCountrys is the array of country names to to exclude

$selectedCountry (setting: country name for selected country high/low/precip)
Note: run to see the list of country names to use

$usahigh (Note: for lower-48 USA states)
$usalow (Note: for lower-48 USA states)
$usaprecip (Note: for lower-48 USA states)

$selectedState (setting: USA state 2-character name abbreviation in settings area)
$selectState (a copy of $selectedState for compatibility with old stateextremes.php)

$reportDate (nicely formatted date of the report)
$stateReportDate (a copy of $reportDate for compatibility with old stateextremes.php)

You can run the script by using:


print "<p>USA Extremes for $reportDate</p>\n";
print "<p>High Temperature<br/><br/>$usahigh</p>\n";
print "<p>Low Temperature<br/><br/>$usalow</p>\n";
print "<p>High Precipatation<br/><br/>$usaprecip</p>\n";
print "<p><small>Data courtesy of <a href=\"";
print "";
print "\">NWS-CPC</a></small></p>\n";


which produces this result (with live data):

USA Extremes for Tuesday, June 11, 2024

High Temperature

113°F at Phoenix Airport, AZ

Low Temperature

1°F at Imperial Beach Ream Field Nas, CA

High Precipatation

4.15in at Gainesville Regional Ap, FL

Data courtesy of NWS-CPC

The script has internal settings which you can adjust. If run in a Saratoga template, the cache file will be stored in the ./cache/ directory based on $SITE['cacheFileDir'] in Settings.php.

$cacheFileDir = './'; // directory to store cache file in.
$cacheFile2 = "worldextremesCache.txt";  
// Age of cache file before re-fetch caching time, in seconds (3600 = 1 hour)
$cache_life = '3600';
$reportDateFormat = "l, F j, Y"; // Day, Month d, yyyy 
$tUOM = '&deg;F'; // or ='' for no temperature unit display (display in C is default)
$rUOM = 'in';     // or ='' for no rain unit display (display in mm is default)
$ignoreCountrys = array('Antarctica','Greenland');     // for world extremes - exclude these country(s)
$ignoreStations = array('99KLRJ');     // list of stn_id (field 0) to ignore for bogus data
$tempDiffAllowed = 40; // max difference Tmax-Tmin (C) for valid data
$selectedCountry = 'Canada'; // for country max/min/precip in $country* variables
// note: the $usa* variables will have the min/max/precip for the lower-48 states
$selectedState   = 'CA';  // for USA state max/min/precip in $state* variables

Note that $cacheFileDir, $tUOM, $rUOM will use the Saratoga template Settings.php values if used in a Saratoga template.

NWS CPC One Day Extremes PHP script Download (5.04 - 28-Jul-2020 see history).