deformed-offering

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 https://github.com/ktrue

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 WXForum.net 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.

323
FXUS66 KMTR 172351
AFDMTR

Area Forecast Discussion
National Weather Service San Francisco CA
351 PM PST Sat Jan 17 2026

...New AVIATION...

.KEY MESSAGES...
Updated at 1240 PM PST Sat Jan 17 2026

 - Dry weather, cool mornings, and warm afternoons persist into
   early in the week

 - Morning fog across the delta and interior North and East Bay
   Valleys

&&

.SHORT TERM...
Issued at 1240 PM PST Sat Jan 17 2026
(This evening through Sunday)

Not much change this afternoon, similar to yesterday with fog
lingering in the interior East Bay Valleys and the West Delta.
The most notable difference, is that we have high clouds moving
from south to north across the region. We will continue to watch
closely how these high clouds will affect afternoon temperatures,
but largely should still be another warm day across much of the
region this afternoon with high temperatures in the mid 60s to mid
70s (up to 80 degrees F in the higher terrain).

Tonight, look for fog (dense at times) to develop across the West
Delta, North Bay Valleys, and interior East Bay Valleys that will
linger into Sunday morning. Again, high clouds may limit overnight
cooling by a few degrees making the fog forecast difficult. Offshore
winds are forecast to decrease over the next 36 hours or so, and may
allow for more cooling in the higher elevation tonight.

Looking for a near repeat for Sunday afternoon as high clouds will
continue to stream across the region. Thus, temperatures will be
similar to Saturday afternoon.

&&

.LONG TERM...
Issued at 1240 PM PST Sat Jan 17 2026
(Sunday night through next Friday)

Little change in the long term forecast as a mid/upper level ridge
of high pressure will remain in place just off of the West Coast
through midweek. Thus, look for similar conditions as this weekend
to persist. Late night and early morning fog across the West Delta,
North Bay Valleys, and interior East Bay Valleys looks like a good
possibility.

By late week, there is a potential weak short wave trough forecast
to impact the region with chances for light rainfall Friday into
Saturday. However, it is looking the region may just see an increase
in cloud cover and return of cooler conditions (closer to seasonal
averages). It isn`t until late January we see the Climate Prediction
Center show the region leaning above normal in their 8-14 Day
Precipitation Outlook.

&&

.AVIATION...
(00Z TAFS)
Issued at 351 PM PST Sat Jan 17 2026

Satellite shows high clouds over the region, with any
signs of low cloud or fog found east of us and in the Valley.
Observations across the region depict VFR conditions with primarily
light winds at the terminals. Expect this to generally continue
through the evening hours for most sites. The question for tonight
will be, does the high cloud limit fog development? Current thinking
is that the North Bay terminals should see some conditions falter,
especially at KSTS given their pattern the past week. For KAPC the
and East Bay terminals, confidence is moderate to low given last
night`s reports and high clouds remaining in the forecast. Trended
closer to MVFR to VFR conditions for these sites, should they see
any fog development; however we`ll need to keep an eye on them.
Tomorrow, any fog that does develop should clear by mid to late
morning, with VFR conditions returning and high clouds lingering.

Vicinity of SFO...Quiet and VFR conditions, plus light offshore
winds continue for much of the TAF cycle. Winds may go variable for
a bit overnight but return to the east-northeast by tomorrow
morning.

SFO Bridge Approach...Similar to SFO.

Monterey Bay Terminals...VFR conditions continue through the period.
KSNS should hold with offshore flow through this period, while KMRY
observes onshore flow for the next few hours before becoming
offshore once again.


&&

.MARINE...
(Today through Thursday)
Issued at 837 AM PST Sat Jan 17 2026

Moderate to breezy northeast winds continue across the San Pablo
Bay, the delta, and through the Golden Gate through the weekend
while light northeast to north winds persist across the rest of
the coastal waters. Light seas continue into early next week
before the next round of long period swell arrives and brings
light to moderate seas in the mid week.

&&

.MTR WATCHES/WARNINGS/ADVISORIES...
CA...None.
PZ...None.
&&

$$

SHORT TERM...RGass
LONG TERM....RGass
AVIATION...KR
MARINE...DialH

Visit us at www.weather.gov/sanfrancisco

Follow us on Facebook, X, and YouTube at:
www.facebook.com/nwsbayarea
x.com/nwsbayarea
www.youtube.com/nwsbayarea

NWS MTR Office Area Forecast Discussion

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

<?php
$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 www.weather.gov
  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::

inc=Y
Will return the contents without the surrounding <html><head></head><body> and </body></html> tags
cache=no
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 Relayweather.com 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
$worldhigh
$worldlow
$worldprecip

$selectedCountry (setting: country name for selected country high/low/precip)
Note: run http://your.site.com/worldextremes.php?list to see the list of country names to use
$countryhigh
$countrylow
$countryprecip

$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)
$statehigh
$statelow
$stateprecip

$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:

<?php
include_once("worldextremes.php");

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 "https://www.cpc.ncep.noaa.gov/products/cadb/";
print "\">NWS-CPC</a></small></p>\n";

?>

which produces this result (with live data):

USA Extremes for Friday, January 16, 2026

High Temperature

89°F at Cyril E. King Airport, VI

Low Temperature

-17°F at Mount Washington, NH

High Precipatation

0.74in at Minot Afb, ND

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

deformed-offering