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 232337

Area Forecast Discussion
National Weather Service San Francisco CA
437 PM PDT Thu May 23 2024


Issued at 1225 PM PDT Wed May 22 2024

Summer-like pattern to persist through Thursday. Temperatures are
forecast to dip below seasonal averages this weekend as an upper
level trough impacts the region. Temperatures begin to warm Sunday
through the next week.


(This evening through Friday)
Issued at 1244 PM PDT Thu May 23 2024

The sun is shining over our area, as satellite shows clear skies
over our area. Soundings show that there has been some drier air
that moved over our region and helped diminish the marine clouds.
Some patches of clouds are expected to return tonight near the Bay
Area, with moments of lower clouds near Monterey Bay and Salinas
similar to this morning. Minimum temperatures tonight will drop
overall in the 40s with isolated areas of low 50s. Maximum
temperatures will drop significantly compared to today (between
5-8 degree drop). Inland areas will see within the 60s with higher
elevations seeing up to low to mid 70s. Coastal areas will see
temperatures in the 50s. Minimum relative humidity will also
increase on Friday, indicating some moisture will be pulled in
from the onshore breeze.


(Friday night through next Wednesday)
Issued at 1244 PM PDT Thu May 23 2024

The low pressure system centered over Washington and Oregon, will
continue to dip south a bit, which will enhance and influence some
of the cooling trend over our area. Ensemble models still
indicate that temperatures will drop to cooler than normal high
temperatures with majority of our region seeing high 50s to low to
mid 60s on Saturday. Temperatures overnight will remain
relatively consistent through the weekend with minimum
temperatures in the 40s to low 50s. Tuesday night may start to see
a slight warm up in overnight temperatures with minimums in the
50s across most of the area. Cluster models also have been in
somewhat of an agreement of precipitation Friday going into
Saturday as some onshore flow pushes some of the marine moisture
near the coast. Chances for precipitation will be 5-10% for less
than a tenth of a inch along the coast, which will likely be in
the form of drizzle and will cause little to no impacts.

As the trough moves off to the east, the ECMWF and GFS show
agreement of a broad, weak ridge beginning to build on Sunday into
Monday. This will bring some warmer temperatures for the week,
especially in the interior regions, with max temperatures in the
high 70s and low 80s. With this weak upper level pattern change,
models do not show a strong offshore signal, which will allow for a
onshore breezy to continue. This will cause coastal regions to only
warm up a bit, with temperatures in the high 50s to mid 60s.


(00Z TAFS)
Issued at 437 PM PDT Thu May 23 2024

VFR except stratus /MVFR/ redeveloping late tonight and Friday
morning from the SF Peninsula and the South Bay to the Monterey
Bay terminals.

Vicinity of SFO...VFR-MVFR, gusty west wind and hazy through early
to mid evening. West wind easing later tonight and Friday morning.

SFO Bridge Approach...Similar to SFO.

Monterey Bay Terminals...VFR-MVFR, west to northwest winds through
the period. MVFR stratus returns to the terminals overnight. Winds
will remain breezy out of the west through the TAF period.


(Tonight through next Tuesday)
Issued at 427 PM PDT Thu May 23 2024

Building surface high pressure over the Eastern Pacific Ocean will
allow for strong northwesterly winds to prevail through today,
with gale force gusts across the outer coastal waters. Expect
hazardous conditions and steeper wind waves as a result.
Northwesterly winds diminish and significant wave heights abate
beginning tomorrow as surface high pressure over the Eastern
Pacific Ocean weakens and retrogrades to the west and a troughing
pattern evolves.


PZ...Small Craft Advisory until 9 PM PDT this evening for Mry Bay.

     Small Craft Advisory from 9 AM to 3 PM PDT Friday for Mry Bay-
     Pigeon Pt to Pt Pinos 0-10 nm.

     Gale Warning until 9 PM PDT this evening for Pigeon Pt to Pt
     Pinos 10-60 NM-Pt Arena to Pt Reyes 0-10 nm.

     Small Craft Advisory until 3 PM PDT Friday for Pt Pinos to Pt
     Piedras Blancas 0-10 nm-Pt Reyes to Pigeon Pt 0-10 nm.

     Small Craft Advisory until 3 AM PDT Friday for Pigeon Pt to Pt
     Pinos 0-10 nm.

     Gale Warning until 3 AM PDT Friday for Pt Arena to Pt Reyes 10-
     60 NM.




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 Wednesday, May 22, 2024

High Temperature

107°F at Laredo Intl Ap, TX
107°F at Zapata County Airport, TX

Low Temperature

1°F at Imperial Beach Ream Field Nas, CA

High Precipatation

2.72in at Paris, TX

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).