Added Standard skin back in.

This commit is contained in:
Tom Keffer
2018-10-08 09:11:00 -07:00
parent 4caaf543ec
commit 3cb92f9910
28 changed files with 3123 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
#errorCatcher Echo
#set $YM="%Y %m"
#set $D=" %d"
#set $M=" %b"
#set $Time=" %H:%M"
#set $NODAY=" N/A"
#set $Temp="%6.1f"
#set $Wind="%6.1f"
#set $Dir="%6.0f"
#set $Count="%6d"
#set $NONE=" N/A"
#if $unit.unit_type_dict.group_rain == "mm"
#set $Rain="%6.1f"
#else
#set $Rain="%6.2f"
#end if
MONTHLY CLIMATOLOGICAL SUMMARY for $month_name $year_name
NAME: $station.location
ELEV: $station.altitude LAT: $station.latitude[0]-$station.latitude[1] $station.latitude[2] LONG: $station.longitude[0]-$station.longitude[1] $station.longitude[2]
TEMPERATURE ($unit.label.outTemp.strip()), RAIN ($unit.label.rain.strip()), WIND SPEED ($unit.label.windSpeed.strip())
HEAT COOL AVG
MEAN DEG DEG WIND DOM
DAY TEMP HIGH TIME LOW TIME DAYS DAYS RAIN SPEED HIGH TIME DIR
---------------------------------------------------------------------------------------
#for $day in $month.days
#if $day.barometer.count.raw
$day.dateTime.format($D) $day.outTemp.avg.nolabel($Temp,$NONE) $day.outTemp.max.nolabel($Temp,$NONE) $day.outTemp.maxtime.format($Time) $day.outTemp.min.nolabel($Temp,$NONE) $day.outTemp.mintime.format($Time) $day.heatdeg.sum.nolabel($Temp,$NONE) $day.cooldeg.sum.nolabel($Temp,$NONE) $day.rain.sum.nolabel($Rain,$NONE) $day.wind.avg.nolabel($Wind,$NONE) $day.wind.max.nolabel($Wind,$NONE) $day.wind.maxtime.format($Time) $day.wind.vecdir.nolabel($Dir,$NONE)
#else
$day.dateTime.format($D)
#end if
#end for
---------------------------------------------------------------------------------------
$month.outTemp.avg.nolabel($Temp,$NONE) $month.outTemp.max.nolabel($Temp,$NONE) $month.outTemp.maxtime.format($D) $month.outTemp.min.nolabel($Temp,$NONE) $month.outTemp.mintime.format($D) $month.heatdeg.sum.nolabel($Temp,$NONE) $month.cooldeg.sum.nolabel($Temp,$NONE) $month.rain.sum.nolabel($Rain,$NONE) $month.wind.avg.nolabel($Wind,$NONE) $month.wind.max.nolabel($Wind,$NONE) $month.wind.maxtime.format($D) $month.wind.vecdir.nolabel($Dir)

View File

@@ -0,0 +1,96 @@
#errorCatcher Echo
#set $YM="%Y %m"
#set $D=" %d"
#set $M=" %b"
#set $NODAY=" N/A"
#set $Temp="%6.1f"
#set $Wind="%6.1f"
#set $Dir="%6.0f"
#set $Count="%6d"
#set $NONE=" N/A"
#if $unit.unit_type_dict.group_temperature == "degree_F"
#set $Hot =(90.0,"degree_F")
#set $Cold =(32.0,"degree_F")
#set $VeryCold=(0.0, "degree_F")
#else
#set $Hot =(30.0,"degree_C")
#set $Cold =(0.0,"degree_C")
#set $VeryCold=(-20.0,"degree_C")
#end if
#if $unit.unit_type_dict.group_rain == "inch"
#set $Trace =(0.01,"inch")
#set $SomeRain =(0.1, "inch")
#set $Soak =(1.0, "inch")
#set $Rain="%6.2f"
#elif $unit.unit_type_dict.group_rain == "mm"
#set $Trace =(.3, "mm")
#set $SomeRain =(3, "mm")
#set $Soak =(30.0,"mm")
#set $Rain="%6.1f"
#else
#set $Trace =(.03,"cm")
#set $SomeRain =(.3, "cm")
#set $Soak =(3.0,"cm")
#set $Rain="%6.2f"
#end if
#def ShowInt($T)
$("%6d" % $T[0])#slurp
#end def
#def ShowFloat($R)
$("%6.2f" % $R[0])#slurp
#end def
CLIMATOLOGICAL SUMMARY for year $year_name
NAME: $station.location
ELEV: $station.altitude LAT: $station.latitude[0]-$station.latitude[1] $station.latitude[2] LONG: $station.longitude[0]-$station.longitude[1] $station.longitude[2]
TEMPERATURE ($unit.label.outTemp.strip())
HEAT COOL MAX MAX MIN MIN
MEAN MEAN DEG DEG >= <= <= <=
YR MO MAX MIN MEAN DAYS DAYS HI DAY LOW DAY $ShowInt($Hot) $ShowInt($Cold) $ShowInt($Cold) $ShowInt($VeryCold)
------------------------------------------------------------------------------------------------
#for $month in $year.months
#if $month.barometer.count.raw
$month.dateTime.format($YM) $month.outTemp.meanmax.nolabel($Temp,$NONE) $month.outTemp.meanmin.nolabel($Temp,$NONE) $month.outTemp.avg.nolabel($Temp,$NONE) $month.heatdeg.sum.nolabel($Temp,$NONE) $month.cooldeg.sum.nolabel($Temp,$NONE) $month.outTemp.max.nolabel($Temp,$NONE) $month.outTemp.maxtime.format($D,$NODAY) $month.outTemp.min.nolabel($Temp,$NONE) $month.outTemp.mintime.format($D,$NODAY) $month.outTemp.max_ge($Hot).nolabel($Count,$NONE) $month.outTemp.max_le($Cold).nolabel($Count,$NONE) $month.outTemp.min_le($Cold).nolabel($Count,$NONE) $month.outTemp.min_le($VeryCold).nolabel($Count,$NONE)
#else
$month.dateTime.format($YM)
#end if
#end for
------------------------------------------------------------------------------------------------
$year.outTemp.meanmax.nolabel($Temp,$NONE) $year.outTemp.meanmin.nolabel($Temp,$NONE) $year.outTemp.avg.nolabel($Temp,$NONE) $year.heatdeg.sum.nolabel($Temp,$NONE) $year.cooldeg.sum.nolabel($Temp,$NONE) $year.outTemp.max.nolabel($Temp,$NONE) $year.outTemp.maxtime.format($M,$NODAY) $year.outTemp.min.nolabel($Temp,$NONE) $year.outTemp.mintime.format($M,$NODAY) $year.outTemp.max_ge($Hot).nolabel($Count,$NONE) $year.outTemp.max_le($Cold).nolabel($Count,$NONE) $year.outTemp.min_le($Cold).nolabel($Count,$NONE) $year.outTemp.min_le($VeryCold).nolabel($Count,$NONE)
PRECIPITATION ($unit.label.rain.strip())
MAX ---DAYS OF RAIN---
OBS. OVER
YR MO TOTAL DAY DATE $ShowFloat(Trace) $ShowFloat($SomeRain) $ShowFloat($Soak)
------------------------------------------------
#for $month in $year.months
#if $month.barometer.count.raw
$month.dateTime.format($YM) $month.rain.sum.nolabel($Rain,$NONE) $month.rain.maxsum.nolabel($Rain,$NONE) $month.rain.maxsumtime.format($D,$NODAY) $month.rain.sum_ge($Trace).nolabel($Count,$NONE) $month.rain.sum_ge($SomeRain).nolabel($Count,$NONE) $month.rain.sum_ge($Soak).nolabel($Count,$NONE)
#else
$month.dateTime.format($YM)
#end if
#end for
------------------------------------------------
$year.rain.sum.nolabel($Rain,$NONE) $year.rain.maxsum.nolabel($Rain,$NONE) $year.rain.maxsumtime.format($M,$NODAY) $year.rain.sum_ge($Trace).nolabel($Count,$NONE) $year.rain.sum_ge($SomeRain).nolabel($Count,$NONE) $year.rain.sum_ge($Soak).nolabel($Count,$NONE)
WIND SPEED ($unit.label.windSpeed.strip())
DOM
YR MO AVG HI DATE DIR
-----------------------------------
#for $month in $year.months
#if $month.barometer.count.raw
$month.dateTime.format($YM) $month.wind.avg.nolabel($Wind,$NONE) $month.wind.max.nolabel($Wind,$NONE) $month.wind.maxtime.format($D,$NODAY) $month.wind.vecdir.nolabel($Dir,$NONE)
#else
$month.dateTime.format($YM)
#end if
#end for
-----------------------------------
$year.wind.avg.nolabel($Wind,$NONE) $year.wind.max.nolabel($Wind,$NONE) $year.wind.maxtime.format($M,$NODAY) $year.wind.vecdir.nolabel($Dir,$NONE)

View File

@@ -0,0 +1,136 @@
<?xml version="1.0"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" >
<channel>
<title>$station.location, Weather Conditions</title>
<link>$station.station_url</link>
<description>Current conditions, and daily, monthly, and yearly summaries</description>
<language>en-us</language>
<pubDate>$current.dateTime.format("%a, %d %b %Y %H:%M:%S %Z")</pubDate>
<lastBuildDate>$current.dateTime.format("%a, %d %b %Y %H:%M:%S %Z")</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>weewx $station.version</generator>
<ttl>$current.interval.string('')</ttl>
<item>
<title>Weather Conditions at $current.dateTime</title>
<link>$station.station_url</link>
<description>
Outside temperature: $current.outTemp;
Barometer: $current.barometer;
Wind: $current.windSpeed from $current.windDir;
Rain rate: $current.rainRate;
Inside temperature: $current.inTemp
</description>
<pubDate>$current.dateTime.format("%a, %d %b %Y %H:%M:%S %Z")</pubDate>
<geo:lat>$station.latitude_f</geo:lat>
<geo:long>$station.longitude_f</geo:long>
<content:encoded><![CDATA[
<p>
Time: $current.dateTime<br/>
Outside Temperature: $current.outTemp<br/>
Inside Temperature: $current.inTemp<br/>
Wind Chill: $current.windchill<br/>
Heat Index: $current.heatindex<br/>
Dewpoint: $current.dewpoint<br/>
Humidity: $current.outHumidity<br/>
Barometer: $current.barometer<br/>
Wind: $current.windSpeed from $current.windDir<br/>
Rain Rate: $current.rainRate<br/>
</p>
]]></content:encoded>
</item>
<item>
<title>Daily Weather Summary as of $current.dateTime</title>
<link>$station.station_url</link>
<description>
Min outside temperature: $day.outTemp.min at $day.outTemp.mintime;
Max outside temperature: $day.outTemp.max at $day.outTemp.maxtime;
Min inside temperature: $day.inTemp.min at $day.inTemp.mintime;
Max inside temperature: $day.inTemp.max at $day.inTemp.maxtime;
Min barometer: $day.barometer.min at $day.barometer.mintime;
Max barometer: $day.barometer.max at $day.barometer.maxtime;
Max wind : $day.wind.max from $day.wind.gustdir at $day.wind.maxtime;
Rain today: $day.rain.sum
</description>
<pubDate>$current.dateTime.format("%a, %d %b %Y %H:%M:%S %Z")</pubDate>
<geo:lat>$station.latitude_f</geo:lat>
<geo:long>$station.longitude_f</geo:long>
<content:encoded><![CDATA[
<p>
Day: $day.dateTime.format("%d %b %Y")<br/>
Min Outside Temperature: $day.outTemp.min at $day.outTemp.mintime<br/>
Max Outside Temperature: $day.outTemp.max at $day.outTemp.maxtime<br/>
Min Inside Temperature: $day.inTemp.min at $day.inTemp.mintime<br/>
Max Inside Temperature: $day.inTemp.max at $day.inTemp.maxtime<br/>
Min Barometer: $day.barometer.min at $day.barometer.mintime<br/>
Max Barometer: $day.barometer.max at $day.barometer.maxtime<br/>
Max Wind : $day.wind.max from $day.wind.gustdir at $day.wind.maxtime<br/>
Rain today: $day.rain.sum<br/>
</p>
]]></content:encoded>
</item>
<item>
<title>Monthly Weather Summary as of $current.dateTime</title>
<link>$station.station_url/month.html</link>
<description>
Min outside temperature: $month.outTemp.min at $month.outTemp.mintime;
Max outside temperature: $month.outTemp.max at $month.outTemp.maxtime;
Min inside temperature: $month.inTemp.min at $month.inTemp.mintime;
Max inside temperature: $month.inTemp.max at $month.inTemp.maxtime;
Min barometer: $month.barometer.min at $month.barometer.mintime;
Max barometer: $month.barometer.max at $month.barometer.maxtime;
Max wind : $month.wind.max from $month.wind.gustdir at $month.wind.maxtime;
Rain total for month: $month.rain.sum
</description>
<pubDate>$current.dateTime.format("%a, %d %b %Y %H:%M:%S %Z")</pubDate>
<content:encoded><![CDATA[
<p>
Month: $month.dateTime.format("%B %Y")<br/>
Max Outside Temperature: $month.outTemp.max at $month.outTemp.maxtime<br/>
Min Outside Temperature: $month.outTemp.min at $month.outTemp.mintime<br/>
Max Inside Temperature: $month.inTemp.max at $month.inTemp.maxtime<br/>
Min Inside Temperature: $month.inTemp.min at $month.inTemp.mintime<br/>
Min Barometer: $month.barometer.min at $month.barometer.mintime<br/>
Max Barometer: $month.barometer.max at $month.barometer.maxtime<br/>
Max Wind : $month.wind.max from $month.wind.gustdir at $month.wind.maxtime<br/>
Rain total for month: $month.rain.sum<br/>
</p>
]]></content:encoded>
</item>
<item>
<title>Yearly Weather Summary as of $current.dateTime</title>
<link>$station.station_url/year.html</link>
<description>
Min outside temperature: $year.outTemp.min at $year.outTemp.mintime;
Max outside temperature: $year.outTemp.max at $year.outTemp.maxtime;
Min inside temperature: $year.inTemp.min at $year.inTemp.mintime;
Max inside temperature: $year.inTemp.max at $year.inTemp.maxtime;
Min barometer: $year.barometer.min at $year.barometer.mintime;
Max barometer: $year.barometer.max at $year.barometer.maxtime;
Max wind : $year.wind.max from $year.wind.gustdir at $year.wind.maxtime;
Rain total for year: $year.rain.sum
</description>
<pubDate>$current.dateTime.format("%a, %d %b %Y %H:%M:%S %Z")</pubDate>
<content:encoded><![CDATA[
<p>
Year: $year.dateTime.format("%Y")<br/>
Max Outside Temperature: $year.outTemp.max at $year.outTemp.maxtime<br/>
Min Outside Temperature: $year.outTemp.min at $year.outTemp.mintime<br/>
Max Inside Temperature: $year.inTemp.max at $year.inTemp.maxtime<br/>
Min Inside Temperature: $year.inTemp.min at $year.inTemp.mintime<br/>
Min Barometer: $year.barometer.min at $year.barometer.mintime<br/>
Max Barometer: $year.barometer.max at $year.barometer.maxtime<br/>
Max Wind : $year.wind.max from $year.wind.gustdir at $year.wind.maxtime<br/>
Rain total for year: $year.rain.sum<br/>
</p>
]]></content:encoded>
</item>
</channel>
</rss>

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

BIN
skins/Standard/favicon.ico Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,527 @@
#errorCatcher Echo
##
## Specifying an encoding of UTF-8 is usually safe, but if your text is
## actually in Latin-1, then you should replace the string "UTF-8" with "latin-1"
## If you do this, you should also change the 'Content-Type' metadata below.
#encoding UTF-8
##
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://www.w3.org/2005/10/profile">
## This choice should match the #encoding directive above
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>$station.location Current Weather Conditions</title>
<link rel="stylesheet" type="text/css" href="weewx.css"/>
<link rel="icon" type="image/png" href="favicon.ico" />
<script type="text/javascript">
function openURL(urlname)
{
window.location=urlname;
}
function openNoaaFile(date)
{
var url = "NOAA/NOAA-";
url = url + date;
url = url + ".txt";
window.location=url;
}
</script>
</head>
<body>
<div id="container">
<div id="masthead">
<h1>$station.location</h1>
<h2>Current Weather Conditions</h2>
<h2>$current.dateTime</h2>
</div>
<div id="stats_group">
<div class="stats">
<div class="stats_header">
Current Conditions
</div>
<table>
<tbody>
<tr>
<td class="stats_label">Outside Temperature</td>
<td class="stats_data">$current.outTemp</td>
</tr>
<tr>
<td class="stats_label">Wind Chill</td>
<td class="stats_data">$current.windchill</td>
</tr>
<tr>
<td class="stats_label">Heat Index</td>
<td class="stats_data">$current.heatindex</td>
</tr>
<tr>
<td class="stats_label">Dewpoint</td>
<td class="stats_data">$current.dewpoint</td>
</tr>
<tr>
<td class="stats_label">Humidity</td>
<td class="stats_data">$current.outHumidity</td>
</tr>
<tr>
<td class="stats_label">Barometer</td>
<td class="stats_data">$current.barometer</td>
</tr>
<tr>
<td class="stats_label">Barometer Trend ($trend.time_delta.hour.format("%.0f"))</td>
<td class="stats_data">$trend.barometer</td>
</tr>
<tr>
<td class="stats_label">Wind</td>
<td class="stats_data">$current.windSpeed from $current.windDir ($current.windDir.ordinal_compass)</td>
</tr>
<tr>
<td class="stats_label">Rain Rate</td>
<td class="stats_data">$current.rainRate</td>
</tr>
<tr>
<td class="stats_label">Inside Temperature</td>
<td class="stats_data">$current.inTemp</td>
</tr>
#if $day.UV.has_data
<tr>
<td class="stats_label">UV</td>
<td class="stats_data">$current.UV</td>
</tr>
#end if
#if $day.ET.has_data and $day.ET.sum.raw > 0.0
<tr>
<td class="stats_label">ET</td>
<td class="stats_data">$current.ET</td>
</tr>
#end if
#if $day.radiation.has_data
<tr>
<td class="stats_label">Solar Radiation</td>
<td class="stats_data">$current.radiation</td>
</tr>
#end if
</tbody>
</table>
</div>
<p>&nbsp;</p>
<div class="stats">
<div class="stats_header">
Since Midnight
</div>
<table>
<tbody>
<tr>
<td class="stats_label">
High Temperature<br/>
Low Temperature
</td>
<td class="stats_data">
$day.outTemp.max at $day.outTemp.maxtime<br/>
$day.outTemp.min at $day.outTemp.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Heat Index<br/>
Low Wind Chill
</td>
<td class="stats_data">
$day.heatindex.max at $day.heatindex.maxtime<br/>
$day.windchill.min at $day.windchill.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Humidity<br/>
Low Humidity
</td>
<td class="stats_data">
$day.outHumidity.max at $day.outHumidity.maxtime<br/>
$day.outHumidity.min at $day.outHumidity.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Dewpoint<br/>
Low Dewpoint
</td>
<td class="stats_data">
$day.dewpoint.max at $day.dewpoint.maxtime<br/>
$day.dewpoint.min at $day.dewpoint.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Barometer<br/>
Low Barometer
</td>
<td class="stats_data">
$day.barometer.max at $day.barometer.maxtime<br/>
$day.barometer.min at $day.barometer.mintime
</td>
</tr>
<tr>
<td class="stats_label">Today's Rain</td>
<td class="stats_data">$day.rain.sum</td>
</tr>
<tr>
<td class="stats_label">High Rain Rate</td>
<td class="stats_data">$day.rainRate.max at $day.rainRate.maxtime</td>
</tr>
<tr>
<td class="stats_label">
High Wind
</td>
<td class="stats_data">
$day.wind.max from $day.wind.gustdir at $day.wind.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Average Wind
</td>
<td class="stats_data">
$day.wind.avg
</td>
</tr>
<tr>
<td class="stats_label">
RMS Wind
</td>
<td class="stats_data">
$day.wind.rms
</td>
</tr>
<tr>
<td class="stats_label">
Vector Average Speed<br/>
Vector Average Direction
</td>
<td class="stats_data">
$day.wind.vecavg<br/>
$day.wind.vecdir
</td>
</tr>
<tr>
<td class="stats_label">
High Inside Temperature<br/>
Low Inside Temperature
</td>
<td class="stats_data">
$day.inTemp.max at $day.inTemp.maxtime<br/>
$day.inTemp.min at $day.inTemp.mintime
</td>
</tr>
#if $day.UV.has_data
<tr>
<td class="stats_label">
High UV<br/>
Low UV
</td>
<td class="stats_data">
$day.UV.max at $day.UV.maxtime<br/>
$day.UV.min at $day.UV.mintime
</td>
</tr>
#end if
#if $day.ET.has_data and $day.ET.sum.raw >0.0
<tr>
<td class="stats_label">
High ET<br/>
Low ET
</td>
<td class="stats_data">
$day.ET.max at $day.ET.maxtime<br/>
$day.ET.min at $day.ET.mintime
</td>
</tr>
#end if
#if $day.radiation.has_data
<tr>
<td class="stats_label">
High Radiation<br/>
Low Radiation
</td>
<td class="stats_data">
$day.radiation.max at $day.radiation.maxtime<br/>
$day.radiation.min at $day.radiation.mintime
</td>
</tr>
#end if
</tbody>
</table>
</div> <!--End class "stats" -->
<p>&nbsp;</p>
#if $Extras.has_key('radar_img')
<div id="radar_img">
#if $Extras.has_key('radar_url')
<a href="$Extras.radar_url">
#end if
<img src="$Extras.radar_img" alt="Radar" />
#if $Extras.has_key('radar_url')
</a>
<p>Click image for expanded radar loop</p>
#end if
</div>
#end if
</div> <!--End class "stats_group" -->
<div id="content">
<div id="about">
<div class="header">
About this weather station:
</div>
<table>
<caption class="caption">Location</caption>
<tr>
<td class="label">Latitude:</td>
<td class="data">$station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2]</td>
</tr>
<tr>
<td class="label">Longitude:</td>
<td class="data">$station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2]</td>
</tr>
<tr>
<td class="label">Altitude:</td>
<td class="data">$station.altitude</td>
</tr>
</table>
<p>
This station uses a $station.hardware, controlled by
<a href="http://www.weewx.com">'weewx'</a>, an experimental
weather software system written in Python. Weewx
was designed to be simple, fast, and easy to understand by
leveraging modern software concepts.
</p>
<p><a href="RSS/weewx_rss.xml">RSS feed</a></p>
<p><a href="mobile.html">Mobile formatted</a></p>
<p><a href="smartphone/index.html">Smartphone formatted</a></p>
<p>Weewx uptime: $station.uptime<br/>
Server uptime: $station.os_uptime<br/>
weewx v$station.version</p>
</div> <!-- End id "about" -->
<div id="almanac">
<div class="header">
Today's Almanac
</div>
<div class="celestial_group">
#if $almanac.hasExtras
## Extended almanac information is available. Do the full set of tables.
#set $sun_altitude = $almanac.sun.alt
#if $sun_altitude < 0
#set $sun_None="<i>(Always down)</i>"
#else
#set $sun_None="<i>(Always up)</i>"
#end if
<div class="celestial_body">
<table>
<caption class="caption">Sun</caption>
<tr>
<td class="label">Start civil twilight:</td>
<td class="data">$almanac(horizon=-6).sun(use_center=1).rise</td>
</tr>
<tr>
<td class="label">Sunrise:</td>
<td class="data">$almanac.sun.rise.string($sun_None)</td>
</tr>
<tr>
<td class="label">Transit:</td>
<td class="data">$almanac.sun.transit</td>
</tr>
<tr>
<td class="label">Sunset:</td>
<td class="data">$almanac.sun.set.string($sun_None)</td>
</tr>
<tr>
<td class="label">End civil twilight:</td>
<td class="data">$almanac(horizon=-6).sun(use_center=1).set</td>
</tr>
<tr>
<td class="label">Azimuth:</td>
<td class="data">$("%.1f&deg;" % $almanac.sun.az)</td>
</tr>
<tr>
<td class="label">Altitude:</td>
<td class="data">$("%.1f&deg;" % $sun_altitude)</td>
</tr>
<tr>
<td class="label">Right ascension:</td>
<td class="data">$("%.1f&deg;" % $almanac.sun.ra)</td>
</tr>
<tr>
<td class="label">Declination:</td>
<td class="data">$("%.1f&deg;" % $almanac.sun.dec)</td>
</tr>
#if $almanac.next_equinox.raw < $almanac.next_solstice.raw
## The equinox is before the solstice. Display them in order.
<tr>
<td class="label">Equinox:</td>
<td class="data">$almanac.next_equinox</td>
</tr>
<tr>
<td class="label">Solstice:</td>
<td class="data">$almanac.next_solstice</td>
</tr>
#else
## The solstice is before the equinox. Display them in order.
<tr>
<td class="label">Solstice:</td>
<td class="data">$almanac.next_solstice</td>
</tr>
<tr>
<td class="label">Equinox:</td>
<td class="data">$almanac.next_equinox</td>
</tr>
#end if
</table>
</div> <!-- end class "celestial_body" -->
<div class="celestial_body">
<table>
<caption class="caption">Moon</caption>
<tr>
<td class="label">Rise:</td>
<td class="data">$almanac.moon.rise</td>
</tr>
<tr>
<td class="label">Transit:</td>
<td class="data">$almanac.moon.transit</td>
</tr>
<tr>
<td class="label">Set:</td>
<td class="data">$almanac.moon.set</td>
</tr>
<tr>
<td class="label">Azimuth:</td>
<td class="data">$("%.1f&deg;" % $almanac.moon.az)</td>
</tr>
<tr>
<td class="label">Altitude:</td>
<td class="data">$("%.1f&deg;" % $almanac.moon.alt)</td>
</tr>
<tr>
<td class="label">Right ascension:</td>
<td class="data">$("%.1f&deg;" % $almanac.moon.ra)</td>
</tr>
<tr>
<td class="label">Declination:</td>
<td class="data">$("%.1f&deg;" % $almanac.moon.dec)</td>
</tr>
#if $almanac.next_full_moon.raw < $almanac.next_new_moon.raw
<tr>
<td class="label">Full moon:</td>
<td class="data">$almanac.next_full_moon</td>
</tr>
<tr>
<td class="label">New moon:</td>
<td class="data">$almanac.next_new_moon</td>
</tr>
#else
<tr>
<td class="label">New moon:</td>
<td class="data">$almanac.next_new_moon</td>
</tr>
<tr>
<td class="label">Full moon:</td>
<td class="data">$almanac.next_full_moon</td>
</tr>
#end if
<tr>
<td class="label">Phase:</td>
<td class="data">$almanac.moon_phase<br/>($almanac.moon_fullness% full)</td>
</tr>
</table>
</div> <!-- end class "celestial_body" -->
#else
## No extended almanac information available. Fall back to a simple table.
<table>
<tr>
<td class="label">Sunrise:</td>
<td class="data">$almanac.sunrise</td>
</tr>
<tr>
<td class="label">Sunset:</td>
<td class="data">$almanac.sunset</td>
</tr>
<tr>
<td class="label">Moon Phase:</td>
<td class="data">$almanac.moon_phase<br/>($almanac.moon_fullness% full)</td>
</tr>
</table>
#end if
</div> <!-- end class "celestial_group" -->
</div> <!-- end id "almanac" -->
<div id="plots">
<img src="daytempdew.png" alt="temperatures" />
<img src="daytempchill.png" alt="heatchill" />
<img src="dayhumidity.png" alt="outside humidity" />
<img src="dayrain.png" alt="rain" />
<img src="daywind.png" alt="wind" />
<img src="daybarometer.png" alt="barometer"/>
<img src="daywinddir.png" alt="Hi Wind" />
<img src="dayinside.png" alt="Inside" />
<img src="daywindvec.png" alt="Wind Vector" />
#if $day.radiation.has_data
<img src="dayradiation.png" alt="Radiation" />
#end if
#if $day.UV.has_data
<img src="dayuv.png" alt="UV Index" />
#end if
#if $day.rxCheckPercent.has_data
<img src="dayrx.png" alt="day rx percent"/>
#end if
</div> <!-- End id "plots" -->
</div> <!-- End id "content" -->
<div id="navbar">
<input type="button" value=" Current " onclick="openURL('index.html')" />
<input type="button" value=" Week " onclick="openURL('week.html')" />
<input type="button" value=" Month " onclick="openURL('month.html')" />
<input type="button" value=" Year " onclick="openURL('year.html')" />
<p>Monthly summary:&nbsp;
<select NAME=noaaselect onchange="openNoaaFile(value)">
#for $monthYear in $SummaryByMonth
<option value="$monthYear">$monthYear</option>
#end for
<option selected>-Select month-</option>
</select>
<br/>
Yearly summary:&nbsp;
<select NAME=noaaselect onchange="openNoaaFile(value)">
#for $yr in $SummaryByYear
<option value="$yr">$yr</option>
#end for
<option selected>-Select year-</option>
</select>
</p>
</div>
</div>
## Include the Google Analytics code if the user has supplied an ID:
#if $Extras.has_key('googleAnalyticsId')
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("$Extras.googleAnalyticsId");
pageTracker._trackPageview();
} catch(err) {}
</script>
#end if
</body>
</html>

49
skins/Standard/mobile.css Normal file
View File

@@ -0,0 +1,49 @@
/*
* weewx mobile CSS settings
*/
/* Global */
body {
background-color: #75a1d0;
font-family: helvetica, arial;
text-align: center;
width: 305px;
}
a {
text-decoration: none;
color: black;
}
table.readings {
font-size: 13px;
width: 100%;
border: 2px solid black;
border-collapse: collapse;
}
tr.alt {
background-color: #9bc4e2;
}
td {
text-align: right;
font-weight: 600;
border: 1px solid black;
width: 50%;
padding: 2px;
}
td.data {
text-align: left;
color: #990000;
}
div.radar {
}
img {
width: 301px;
border: 2px solid black;
}

View File

@@ -0,0 +1,92 @@
#encoding UTF-8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
This is a phone-formatted summary page based on examples posted
to the wview Google Group, and salted to taste for weewx.
It takes a full screen on my Verizon Fascinate (Samsung Galaxy S)
and its predecessor(s) were reportedly developed for a Apple iPhone.
vince@skahan.net - 1/16/2010
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> $station.location Weather</title>
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=1;"/>
<script type="application/x-javascript">
if (navigator.userAgent.indexOf('iPhone') != -1)
{
addEventListener("load", function()
{
setTimeout(hideURLbar, 0);
}, false);
}
function hideURLbar()
{
window.scrollTo(0, 1);
}
</script>
<style type="text/css" media="screen">@import "mobile.css";</style>
</head>
<body>
<center>
<div>
<table class="readings">
<tr>
<td><a href="daytempdew.png">Temp / Dewpoint:</a></td><td class="data"> $current.outTemp / $current.dewpoint </td>
</tr>
<tr class="alt">
<td>High Temp:</td><td class="data"> $day.outTemp.max at $day.outTemp.maxtime </td>
</tr>
<tr>
<td>Low Temp:</td><td class="data"> $day.outTemp.min at $day.outTemp.mintime </td>
</tr>
<tr class="alt">
<td><a href="daytempchill.png">Heat Index / Wind Chill:</a></td><td class="data"> $current.heatindex / $current.windchill </td>
</tr>
<tr>
<td>Humidity:</td><td class="data"> $current.outHumidity </td></tr>
</tr>
<tr class="alt">
<td><a href="dayrain.png">Rainfall:</a></td><td class="data"> $day.rain.sum </td>
</tr>
<tr>
<td>High Rain Rate:</td><td class="data"> $day.rainRate.max at $day.rainRate.maxtime </td>
</tr>
<tr class="alt">
<td><a href="daywind.png">Wind Speed:</a></td><td class="data"> $current.windSpeed </td>
</tr>
<tr>
<td>High Wind Speed:</td><td class="data"> $day.wind.max at $day.wind.maxtime </td>
</tr>
</table>
</div>
#if $Extras.has_key('radar_img')
<div class="radar">
#if $Extras.has_key('radar_url')
<a href="$Extras.radar_url">
#end if
<img src="$Extras.radar_img" alt="Radar" />
#if $Extras.has_key('radar_url')
</a>
#end if
<!-- yes I was too lazy to CSS the style below :-) -->
<p style="font-size: 12px; color: black; text-align: center;"> $current.dateTime</p>
</div>
#end if
</center>
</body>
</html>

View File

@@ -0,0 +1,418 @@
#errorCatcher Echo
##
## Specifying an encoding of UTF-8 is usually safe, but if your text is
## actually in Latin-1, then you should replace the string "UTF-8" with "latin-1"
## If you do this, you should also change the 'Content-Type' metadata below.
#encoding UTF-8
##
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://www.w3.org/2005/10/profile">
## This choice should match the #encoding directive above
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>$station.location Monthly weather summary</title>
<link rel="stylesheet" type="text/css" href="weewx.css"/>
<link rel="icon" type="image/png" href="favicon.ico" />
<script type="text/javascript">
function openURL(urlname)
{
window.location=urlname;
}
</script>
</head>
<body>
<div id="container">
<div id="masthead">
<h1>$station.location</h1>
<h2>Monthly Weather Summary</h2>
<h2>$current.dateTime</h2>
</div>
<div id="stats_group">
<div class="stats">
<div class="stats_header">
This Month
</div>
<table>
<tbody>
<tr>
<td class="stats_label">
High Temperature<br/>
Low Temperature
</td>
<td class="stats_data">
$month.outTemp.max at $month.outTemp.maxtime<br/>
$month.outTemp.min at $month.outTemp.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Heat Index
</td>
<td class="stats_data">
$month.heatindex.max at $month.heatindex.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Low Wind Chill
</td>
<td class="stats_data">
$month.windchill.min at $month.windchill.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Humidity<br/>
Low Humidity
</td>
<td class="stats_data">
$month.outHumidity.max $month.outHumidity.maxtime<br/>
$month.outHumidity.min $month.outHumidity.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Dewpoint<br/>
Low Dewpoint
</td>
<td class="stats_data">
$month.dewpoint.max $month.dewpoint.maxtime<br/>
$month.dewpoint.min $month.dewpoint.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Barometer<br/>
Low Barometer
</td>
<td class="stats_data">
$month.barometer.max at $month.barometer.maxtime<br/>
$month.barometer.min at $month.barometer.mintime
</td>
</tr>
<tr>
<td class="stats_label">
Rain Total
</td>
<td class="stats_data">
$month.rain.sum
</td>
</tr>
<tr>
<td class="stats_label">
High Rain Rate
</td>
<td class="stats_data">
$month.rainRate.max at $month.rainRate.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
High Wind Speed
</td>
<td class="stats_data">
$month.wind.max from $month.wind.gustdir at $month.wind.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Average Wind
</td>
<td class="stats_data">
$month.wind.avg
</td>
</tr>
<tr>
<td class="stats_label">
RMS Wind
</td>
<td class="stats_data">
$month.wind.rms
</td>
</tr>
<tr>
<td class="stats_label">
Vector Average Speed<br/>
Vector Average Direction
</td>
<td class="stats_data">
$month.wind.vecavg<br/>
$month.wind.vecdir
</td>
</tr>
<tr>
<td class="stats_label">
High Inside Temperature<br/>
Low Inside Temperature
</td>
<td class="stats_data">
$month.inTemp.max at $month.inTemp.maxtime<br/>
$month.inTemp.min at $month.inTemp.mintime
</td>
</tr>
#if $month.UV.has_data
<tr>
<td class="stats_label">
High UV<br/>
Low UV
</td>
<td class="stats_data">
$month.UV.max at $month.UV.maxtime<br/>
$month.UV.min at $month.UV.mintime
</td>
</tr>
#end if
#if $month.ET.has_data and $month.ET.sum.raw > 0.0
<tr>
<td class="stats_label">
High ET<br/>
Low ET
</td>
<td class="stats_data">
$month.ET.max at $month.ET.maxtime<br/>
$month.ET.min at $month.ET.mintime
</td>
</tr>
#end if
#if $month.radiation.has_data
<tr>
<td class="stats_label">
High Radiation<br/>
Low Radiation
</td>
<td class="stats_data">
$month.radiation.max at $month.radiation.maxtime<br/>
$month.radiation.min at $month.radiation.mintime
</td>
</tr>
#end if
</tbody>
</table>
</div> <!-- End class "stats" -->
<p>&nbsp;</p>
<div class="stats">
<div class="stats_header">
Calendar Year
</div>
<table>
<tbody>
<tr>
<td class="stats_label">
High Temperature<br/>
Low Temperature
</td>
<td class="stats_data">
$year.outTemp.max at $year.outTemp.maxtime<br/>
$year.outTemp.min at $year.outTemp.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Heat Index
</td>
<td class="stats_data">
$year.heatindex.max at $year.heatindex.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Low Wind Chill
</td>
<td class="stats_data">
$year.windchill.min at $year.windchill.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Humidity<br/>
Low Humidity
</td>
<td class="stats_data">
$year.outHumidity.max at $year.outHumidity.maxtime<br/>
$year.outHumidity.min at $year.outHumidity.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Dewpoint<br/>
Low Dewpoint
</td>
<td class="stats_data">
$year.dewpoint.max at $year.dewpoint.maxtime<br/>
$year.dewpoint.min at $year.dewpoint.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Barometer<br/>
Low Barometer
</td>
<td class="stats_data">
$year.barometer.max at $year.barometer.maxtime<br/>
$year.barometer.min at $year.barometer.mintime
</td>
</tr>
<tr>
<td class="stats_label">
Rain Total
</td>
<td class="stats_data">
$year.rain.sum
</td>
</tr>
<tr>
<td class="stats_label">
High Rain Rate
</td>
<td class="stats_data">
$year.rainRate.max at $year.rainRate.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
High Wind Speed
</td>
<td class="stats_data">
$year.wind.max from $year.wind.gustdir at $year.wind.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Average Wind
</td>
<td class="stats_data">
$year.wind.avg
</td>
</td>
<tr>
<td class="stats_label">
RMS Wind
</td>
<td class="stats_data">
$year.wind.rms
</td>
</tr>
<tr>
<td class="stats_label">
Vector Average Speed<br/>
Vector Average Direction
</td>
<td class="stats_data">
$year.wind.vecavg<br/>
$year.wind.vecdir
</td>
</tr>
<tr>
<td class="stats_label">
High Inside Temperature<br/>
Low Inside Temperature
</td>
<td class="stats_data">
$year.inTemp.max at $year.inTemp.maxtime<br/>
$year.inTemp.min at $year.inTemp.mintime
</td>
</tr>
#if $year.UV.has_data
<tr>
<td class="stats_label">
High UV<br/>
Low UV
</td>
<td class="stats_data">
$year.UV.max at $year.UV.maxtime<br/>
$year.UV.min at $year.UV.mintime
</td>
</tr>
#end if
#if $year.ET.has_data and $year.ET.sum.raw >0.0
<tr>
<td class="stats_label">
High ET<br/>
Low ET
</td>
<td class="stats_data">
$year.ET.max at $year.ET.maxtime<br/>
$year.ET.min at $year.ET.mintime
</td>
</tr>
#end if
#if $year.radiation.has_data
<tr>
<td class="stats_label">
High Radiation<br/>
Low Radiation
</td>
<td class="stats_data">
$year.radiation.max at $year.radiation.maxtime<br/>
$year.radiation.min at $year.radiation.mintime
</td>
</tr>
#end if
</tbody>
</table>
</div> <!-- End class "stats" -->
</div> <!-- End class "stats_group" -->
<div id="content">
<div class="header">
<h3>Monthly Statistics and Plots</h3>
</div>
<div id="plots">
<img src="monthtempdew.png" alt="temperatures" />
<img src="monthtempchill.png" alt="heatchill" />
<img src="monthhumidity.png" alt="outside humidity" />
<img src="monthrain.png" alt="rain" />
<img src="monthwind.png" alt="wind" />
<img src="monthbarometer.png" alt="barometer"/>
<img src="monthwinddir.png" alt="Hi Wind" />
<img src="monthinside.png" alt="Inside" />
<img src="monthwindvec.png" alt="Wind Vector" />
#if $month.radiation.has_data
<img src="monthradiation.png" alt="Radiation" />
#end if
#if $month.UV.has_data
<img src="monthuv.png" alt="UV Index" />
#end if
#if $month.rxCheckPercent.has_data
<img src="monthrx.png" alt="month rx percent"/>
#end if
</div>
</div> <!-- End id "content" -->
<div id="navbar">
<input type="button" value=" Current " onclick="openURL('index.html')" />
<input type="button" value=" Week " onclick="openURL('week.html')" />
<input type="button" value=" Month " onclick="openURL('month.html')" />
<input type="button" value=" Year " onclick="openURL('year.html')" />
</div>
</div> <!-- End id "container" -->
## Include the Google Analytics code if the user has supplied an ID:
#if $Extras.has_key('googleAnalyticsId')
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("$Extras.googleAnalyticsId");
pageTracker._trackPageview();
} catch(err) {}
</script>
#end if
</body>
</html>

680
skins/Standard/skin.conf Normal file
View File

@@ -0,0 +1,680 @@
###############################################################################
# STANDARD SKIN CONFIGURATION FILE #
# Copyright (c) 2010 Tom Keffer <tkeffer@gmail.com> #
###############################################################################
[Extras]
# Put any extra tags here that you want to be available in the templates
# Here's an example.
# This radar image would be available as $Extras.radar_img
#radar_img = http://radar.weather.gov/ridge/lite/N0R/RTX_loop.gif
# This URL will be used as the image hyperlink:
#radar_url = http://radar.weather.gov/ridge/radar.php?product=NCR&rid=RTX&loop=yes
# Here's another. If you have a Google Analytics ID, uncomment and edit
# the next line, and the analytics code will automatically be included
# in your generated HTML files:
#googleAnalyticsId = UA-12345678-1
###############################################################################
[Units]
# This section is for managing the selection and formatting of units.
[[Groups]]
# For each group of measurements, this section sets what units to
# use for it.
# NB: The unit is always in the singular. I.e., 'mile_per_hour',
# NOT 'miles_per_hour'
group_altitude = foot # Options are 'foot' or 'meter'
group_degree_day = degree_F_day # Options are 'degree_F_day' or 'degree_C_day'
group_direction = degree_compass
group_moisture = centibar
group_percent = percent
group_pressure = inHg # Options are 'inHg', 'mmHg', 'mbar', or 'hPa'
group_radiation = watt_per_meter_squared
group_rain = inch # Options are 'inch', 'cm', or 'mm'
group_rainrate = inch_per_hour # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour'
group_speed = mile_per_hour # Options are 'mile_per_hour', 'km_per_hour', 'knot', or 'meter_per_second'
group_speed2 = mile_per_hour2 # Options are 'mile_per_hour2', 'km_per_hour2', 'knot2', or 'meter_per_second2'
group_temperature = degree_F # Options are 'degree_F' or 'degree_C'
group_uv = uv_index
group_volt = volt
# The following are used internally and should not be changed:
group_count = count
group_interval = minute
group_time = unix_epoch
group_elapsed = second
[[StringFormats]]
# This section sets the string formatting for each type of unit.
centibar = %.0f
cm = %.2f
cm_per_hour = %.2f
degree_C = %.1f
degree_F = %.1f
degree_compass = %.0f
foot = %.0f
hPa = %.1f
hour = %.1f
inHg = %.3f
inch = %.2f
inch_per_hour = %.2f
km_per_hour = %.0f
km_per_hour2 = %.1f
knot = %.0f
knot2 = %.1f
mbar = %.1f
meter = %.0f
meter_per_second = %.1f
meter_per_second2 = %.1f
mile_per_hour = %.0f
mile_per_hour2 = %.1f
mm = %.1f
mmHg = %.1f
mm_per_hour = %.1f
percent = %.0f
second = %.0f
uv_index = %.1f
volt = %.1f
watt_per_meter_squared = %.0f
NONE = " N/A"
[[Labels]]
# This section sets a label to be used for each type of unit.
centibar = " cb"
cm = " cm"
cm_per_hour = " cm/hr"
degree_C = °C
degree_F = °F
degree_compass = °
foot = " feet"
hPa = " hPa"
inHg = " inHg"
inch = " in"
inch_per_hour = " in/hr"
km_per_hour = " km/h"
km_per_hour2 = " km/h"
knot = " knots"
knot2 = " knots"
mbar = " mbar"
meter = " meters"
meter_per_second = " m/s"
meter_per_second2 = " m/s"
mile_per_hour = " mph"
mile_per_hour2 = " mph"
mm = " mm"
mmHg = " mmHg"
mm_per_hour = " mm/hr"
percent = %
volt = " V"
watt_per_meter_squared = " W/m²"
day = " day", " days"
hour = " hour", " hours"
minute = " minute", " minutes"
second = " second", " seconds"
NONE = ""
[[TimeFormats]]
# This section sets the string format to be used for each time scale.
# The values below will work in every locale, but may not look
# particularly attractive. See the Customization Guide for alternatives.
day = %X
week = %X (%A)
month = %x %X
year = %x %X
rainyear = %x %X
current = %x %X
ephem_day = %X
ephem_year = %x %X
[[Ordinates]]
# The ordinal directions. The last one should be for no wind direction
directions = N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW, N/A
[[DegreeDays]]
# This section sets the base temperatures used for the calculation
# of heating and cooling degree-days.
# Base temperature for heating days, with unit:
heating_base = 65, degree_F
# Base temperature for cooling days, with unit:
cooling_base = 65, degree_F
[[Trend]]
time_delta = 10800 # 3 hours
time_grace = 300 # 5 minutes
###############################################################################
[Labels]
# Labels used in this skin
# Set to hemisphere abbreviations suitable for your location:
hemispheres = N, S, E, W
# Formats to be used for latitude whole degrees, longitude whole degrees,
# and minutes:
latlon_formats = "%02d", "%03d", "%05.2f"
[[Generic]]
# Generic labels, keyed by an observation type.
barometer = Barometer
dewpoint = Dew Point
heatindex = Heat Index
inHumidity = Inside Humidity
inTemp = Inside Temperature
outHumidity = Outside Humidity
outTemp = Outside Temperature
radiation = Radiation
rain = Rain
rainRate = Rain Rate
rxCheckPercent = ISS Signal Quality
UV = UV Index
windDir = Wind Direction
windGust = Gust Speed
windGustDir = Gust Direction
windSpeed = Wind Speed
windchill = Wind Chill
windgustvec = Gust Vector
windvec = Wind Vector
###############################################################################
[Almanac]
# The labels to be used for the phases of the moon:
moon_phases = New, Waxing crescent, First quarter, Waxing gibbous, Full, Waning gibbous, Last quarter, Waning crescent
###############################################################################
[CheetahGenerator]
# This section is used by the generator CheetahGenerator, and specifies
# which files are to be generated from which template.
# Possible encodings are 'html_entities', 'utf8', or 'strict_ascii'
encoding = html_entities
[[SummaryByMonth]]
# Reports that summarize "by month"
[[[NOAA_month]]]
encoding = strict_ascii
template = NOAA/NOAA-YYYY-MM.txt.tmpl
[[SummaryByYear]]
# Reports that summarize "by year"
[[[NOAA_year]]]
encoding = strict_ascii
template = NOAA/NOAA-YYYY.txt.tmpl
[[ToDate]]
# Reports that show statistics "to date", such as day-to-date,
# week-to-date, month-to-date, etc.
[[[day]]]
template = index.html.tmpl
[[[week]]]
template = week.html.tmpl
[[[month]]]
template = month.html.tmpl
[[[year]]]
template = year.html.tmpl
[[[RSS]]]
template = RSS/weewx_rss.xml.tmpl
[[[Mobile]]]
template = mobile.html.tmpl
[[[MobileSmartphone]]]
template = smartphone/index.html.tmpl
[[[MobileTempOutside]]]
template = smartphone/temp_outside.html.tmpl
[[[MobileRain]]]
template = smartphone/rain.html.tmpl
[[[MobileBarometer]]]
template = smartphone/barometer.html.tmpl
[[[MobileWind]]]
template = smartphone/wind.html.tmpl
[[[MobileRadar]]]
template = smartphone/radar.html.tmpl
###############################################################################
[CopyGenerator]
# This section is used by the generator CopyGenerator
# List of files to be copied only the first time the generator runs
copy_once = backgrounds/*, weewx.css, mobile.css, favicon.ico, smartphone/icons/*, smartphone/custom.js
# List of files to be copied each time the generator runs
# copy_always =
###############################################################################
[ImageGenerator]
# This section lists all the images to be generated, what SQL types are to
# be included in them, along with many plotting options, such as color or
# font. There's a default for almost everything, if not specified below.
# Nevertheless, I have explicitly put in values, to make it easy to see
# and understand the options.
#
# Fonts can be anything accepted by the Python Imaging Library (PIL), which
# is currently truetype (.ttf), or PIL's own font format (.pil). See
# http://www.pythonware.com/library/pil/handbook/imagefont.htm for more
# details. Note that "font size" is only used with truetype (.ttf)
# fonts. For others, font size is determined by the bit-mapped size,
# usually encoded in the file name (e.g., courB010.pil). If a font cannot
# be found, then a default font will be used.
#
# Colors can be specified any of three ways:
# 1. Notation 0xBBGGRR;
# 2. Notation #RRGGBB; or
# 3. Using an English name, such as 'yellow', or 'blue'.
# So, 0xff0000, #0000ff, or 'blue' would all specify a pure blue color.
image_width = 300
image_height = 180
image_background_color = 0xf5f5f5
chart_background_color = 0xd8d8d8
chart_gridline_color = 0xa0a0a0
# Setting to 2 or more might give a sharper image with fewer jagged edges.
anti_alias = 1
top_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
top_label_font_size = 10
unit_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
unit_label_font_size = 10
unit_label_font_color = 0x000000
bottom_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
bottom_label_font_size = 12
bottom_label_font_color = 0x000000
bottom_label_offset = 3
axis_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
axis_label_font_size = 10
axis_label_font_color = 0x000000
# Options for the compass rose, used for progressive vector plots
rose_label = N
rose_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
rose_label_font_size = 10
rose_label_font_color = 0x000000
# Default colors for the plot lines. These can be overridden for
# individual lines using option 'color'
chart_line_colors = 0xb48242, 0x4242b4, 0x42b442
# Type of line. Only 'solid' or 'none' is offered now
line_type = 'solid'
# Size of marker in pixels
marker_size = 8
# Type of marker. Pick one of 'cross', 'x', 'circle', 'box', or 'none'
marker_type ='none'
# Default fill colors for bar charts. These can be overridden for
# individual bar plots using option 'fill_color'
chart_fill_colors = 0xc4b272, 0x7272c4, 0x72c472
# The following option merits an explanation. The y-axis scale used for
# plotting can be controlled using option 'yscale'. It is a 3-way tuple,
# with values (ylow, yhigh, min_interval). If set to "None", a parameter is
# set automatically, otherwise the value is used. However, in the case of
# min_interval, what is set is the *minimum* y-axis tick interval.
yscale = None, None, None
# For progressive vector plots, you can choose to rotate the vectors.
# Positive is clockwise.
# For my area, westerlies overwhelmingly predominate, so by rotating
# positive 90 degrees, the average vector will point straight up.
vector_rotate = 90
# This defines what fraction of the difference between maximum and minimum
# horizontal chart bounds is considered a gap in the samples and should not
# be plotted.
line_gap_fraction = 0.01
# This controls whether day/night bands will be shown. They only look good
# on the day and week plots.
show_daynight = true
# These control the appearance of the bands if they are shown.
# Here's a monochrome scheme:
daynight_day_color = 0xdfdfdf
daynight_night_color = 0xbbbbbb
daynight_edge_color = 0xd0d0d0
# Here's an alternative, using a blue/yellow tint:
#daynight_day_color = 0xf8ffff
#daynight_night_color = 0xfff8f8
#daynight_edge_color = 0xf8f8ff
## What follows is a list of subsections, each specifying a time span, such
## as a day, week, month, or year. There's nothing special about them or
## their names: it's just a convenient way to group plots with a time span
## in common. You could add a time span [[biweek_images]] and add the
## appropriate time length, aggregation strategy, etc., without changing
## any code.
##
## Within each time span, each sub-subsection is the name of a plot to be
## generated for that time span. The generated plot will be stored using
## that name, in whatever directory was specified by option 'HTML_ROOT'
## in weewx.conf.
##
## With one final nesting (four brackets!) is the sql type of each line to
## be included within that plot.
##
## Unless overridden, leaf nodes inherit options from their parent
# Default plot and aggregation. Can get overridden at any level.
plot_type = line
aggregate_type = none
width = 1
time_length = 86400 # == 24 hours
[[day_images]]
x_label_format = %H:%M
bottom_label_format = %x %X
time_length = 97200 # == 27 hours
[[[daybarometer]]]
[[[[barometer]]]]
[[[daytempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[daytempchill]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[dayhumidity]]]
[[[[outHumidity]]]]
[[[dayrain]]]
# Make sure the y-axis increment is at least 0.02 for the rain plot
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
aggregate_interval = 3600
label = Rain (hourly total)
[[[dayrx]]]
[[[[rxCheckPercent]]]]
[[[daywind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
[[[dayinside]]]
[[[[inTemp]]]]
[[[daywinddir]]]
# Hardwire in the y-axis scale for wind direction
yscale = 0.0, 360.0, 45.0
[[[[windDir]]]]
[[[daywindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[dayradiation]]]
[[[[radiation]]]]
[[[[radiation_max]]]]
data_type = radiation
aggregate_type = max
aggregate_interval = 3600
label = max
[[[dayuv]]]
yscale = 0, 16, 1
[[[[UV]]]]
[[[[UV_max]]]]
data_type = UV
aggregate_type = max
aggregate_interval = 3600
label = max
[[week_images]]
x_label_format = %d
bottom_label_format = %x %X
time_length = 604800 # == 7 days
aggregate_type = avg
aggregate_interval = 3600
[[[weekbarometer]]]
[[[[barometer]]]]
[[[weektempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[weektempchill]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[weekhumidity]]]
[[[[outHumidity]]]]
[[[weekrain]]]
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
aggregate_interval = 86400
label = Rain (daily total)
[[[weekrx]]]
[[[[rxCheckPercent]]]]
[[[weekwind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
aggregate_type = max
[[[weekinside]]]
[[[[inTemp]]]]
[[[weekwinddir]]]
yscale = 0.0, 360.0, 45.0
[[[[windDir]]]]
[[[weekwindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[weekradiation]]]
[[[[radiation]]]]
[[[[radiation_max]]]]
data_type = radiation
aggregate_type = max
label = max
[[[weekuv]]]
yscale = 0, 16, 1
[[[[UV]]]]
[[[[UV_max]]]]
data_type = UV
aggregate_type = max
label = max
[[month_images]]
x_label_format = %d
bottom_label_format = %x %X
time_length = 2592000 # == 30 days
aggregate_type = avg
aggregate_interval = 10800 # == 3 hours
show_daynight = false
[[[monthbarometer]]]
[[[[barometer]]]]
[[[monthtempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[monthtempchill]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[monthhumidity]]]
[[[[outHumidity]]]]
[[[monthrain]]]
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
aggregate_interval = 86400
label = Rain (daily total)
[[[monthrx]]]
[[[[rxCheckPercent]]]]
[[[monthwind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
aggregate_type = max
[[[monthinside]]]
[[[[inTemp]]]]
[[[monthwinddir]]]
yscale = 0.0, 360.0, 45.0
[[[[windDir]]]]
[[[monthwindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[monthradiation]]]
[[[[radiation]]]]
[[[[radiation_max]]]]
data_type = radiation
aggregate_type = max
label = max
[[[monthuv]]]
yscale = 0, 16, 1
[[[[UV]]]]
[[[[UV_max]]]]
data_type = UV
aggregate_type = max
label = max
[[year_images]]
x_label_format = %m/%d
bottom_label_format = %x %X
time_length = 31536000 # == 365 days
aggregate_type = avg
aggregate_interval = 86400
show_daynight = false
[[[yearbarometer]]]
[[[[barometer]]]]
[[[yeartempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[yearhumidity]]]
[[[[outHumidity]]]]
# Daily high/lows:
[[[yearhilow]]]
[[[[hi]]]]
data_type = outTemp
aggregate_type = max
label = High
[[[[low]]]]
data_type = outTemp
aggregate_type = min
label = Low Temperature
[[[yearwind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
aggregate_type = max
[[[yeartempchill]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[yearrain]]]
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
# aggregate_interval = 2629800 # Magic number: the length of a nominal month
aggregate_interval = 604800 # == 1 week
label = Rain (weekly total)
[[[yearrx]]]
[[[[rxCheckPercent]]]]
[[[yearinside]]]
[[[[inTemp]]]]
[[[yearwinddir]]]
yscale = 0.0, 360.0, 45.0
[[[[windDir]]]]
[[[yearwindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[yearradiation]]]
[[[[radiation]]]]
[[[[radiation_max]]]]
data_type = radiation
aggregate_type = max
label = max
[[[yearuv]]]
yscale = 0, 16, 1
[[[[UV]]]]
[[[[UV_max]]]]
data_type = UV
aggregate_type = max
label = max
# A progressive vector plot of daily gust vectors overlayed
# with the daily wind average would look something like this:
# [[[yeargustvec]]]
# [[[[windvec]]]]
# plot_type = vector
# aggregate_type = avg
# [[[[windgustvec]]]]
# plot_type = vector
# aggregate_type = max
###############################################################################
#
# The list of generators that are to be run:
#
[Generators]
generator_list = weewx.cheetahgenerator.CheetahGenerator, weewx.imagegenerator.ImageGenerator, weewx.reportengine.CopyGenerator

View File

@@ -0,0 +1,35 @@
#encoding UTF-8
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Barometer in $station.location</title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script src="https://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div data-role="page" data-add-back-btn="true" data-theme="a">
<div data-role="header">
<h1>Barometer</h1>
</div>
<div data-role="content">
<h4>24h barometer</h4>
<img src="../daybarometer.png"/>
<ul>
<li>Today's min: $day.barometer.min at $day.barometer.mintime</li>
<li>Today's max: $day.barometer.max at $day.barometer.maxtime</li>
</ul>
<h4>7-day barometer</h4>
<img src="../weekbarometer.png" />
<ul>
<li>This week's min: $week.barometer.min at $week.barometer.mintime</li>
<li>This week's max: $week.barometer.max at $week.barometer.maxtime</li>
</ul>
</div>
<div data-role="footer">
<h4>weewx v $station.version</h4>
</div>
</div>
</body>

View File

@@ -0,0 +1,4 @@
$(document).bind("mobileinit", function(){
$.mobile.defaultPageTransition = 'slide';
$.mobile.page.prototype.options.addBackBtn = true;
});

View File

@@ -0,0 +1,27 @@
#encoding UTF-8
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Humidity in $station.location</title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script src="https://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div data-role="page" data-add-back-btn="true" data-theme="a">
<div data-role="header">
<h1>Humidity</h1>
</div>
<div data-role="content">
<h4>24h humidity</h4>
<img src="../dayhumidity.png"/>
<h4>Last 7 days</h4>
<img src="../weekhumidity.png" />
</div>
<div data-role="footer">
<h4>weewx v $station.version</h4>
</div>
</div>
</body>

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -0,0 +1,42 @@
#encoding UTF-8
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>$station.location Current Weather Conditions</title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<link rel="apple-touch-icon" href="icons/icon_iphone_x1.png" />
<link rel="apple-touch-icon" sizes="72x72" href="icons/icon_ipad_x2.png" />
<link rel="apple-touch-icon" sizes="114x114" href="icons/icon_iphone_x2.png" />
<link rel="apple-touch-icon" sizes="144x144" href="icons/icon_ipad_x2.png" />
<script src="https://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="custom.js"></script>
<script src="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<div data-role="page" data-theme="a">
<div data-role="header">
<h1>$station.location</h1>
</div>
<div data-role="content">
<ul data-role="listview" data-inset="true" data-divider-theme="c">
<li data-role="list-divider">Time: $current.dateTime</li>
<li><a href="temp_outside.html">Temp: $current.outTemp [$day.outTemp.min, $day.outTemp.max]</a></li>
<li><a href="rain.html">Rain: $current.rainRate ($day.rain.sum)</a></li>
<li><a href="barometer.html">Barometer: $current.barometer</a></li>
<li><a href="wind.html">Wind: $current.windSpeed from $current.windDir</a></li>
</ul>
<ul data-role="listview" data-inset="true" data-divider-theme="b">
<li><a href="radar.html">Radar</a></li>
<li><a href="../index.html" rel="external">Big page</a></li>
</ul>
</div>
<div data-role="footer">
<h4>weewx v$station.version</h4>
</div>
</div>
</body>

View File

@@ -0,0 +1,34 @@
#encoding UTF-8
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<title>Rain in $station.location</title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script src="https://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div data-role="page" data-add-back-btn="true" data-theme="a">
<div data-role="header">
<h1>Rain</h1>
</div>
<div data-role="content">
<h4>24h rain</h4>
<img src="../dayrain.png"/>
<ul data-role="listview" data-inset="true" data-divider-theme="b">
<li data-role="list-divider">Today's data</li>
<li>Total: $day.rain.sum</li>
<li>Min rate: $day.rainRate.min at $day.rainRate.mintime</li>
<li>Max rate: $day.rainRate.max at $day.rainRate.maxtime</li>
</ul>
<h4>Rain last 30 days</h4>
<img src="../monthrain.png" />
</div>
<div data-role="footer">
<h4>weewx v $station.version</h4>
</div>
</div>
</body>

View File

@@ -0,0 +1,35 @@
#encoding UTF-8
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Outside temperature in $station.location</title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script src="https://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div data-role="page" data-add-back-btn="true" data-theme="a">
<div data-role="header">
<h1>Outside temperature</h1>
</div>
<div data-role="content">
<h4>24h temperature</h4>
<img src="../daytempdew.png"/>
<ul>
<li>Today's min: $day.outTemp.min at $day.outTemp.mintime</li>
<li>Today's max: $day.outTemp.max at $day.outTemp.maxtime</li>
</ul>
<h4>7-day temperature</h4>
<img src="../weektempdew.png"/>
<ul>
<li>This week's min: $week.outTemp.min at $week.outTemp.mintime</li>
<li>This week's max: $week.outTemp.max at $week.outTemp.maxtime</li>
</ul>
</div>
<div data-role="footer">
<h4>weewx v$station.version</h4>
</div>
</div>
</body>

View File

@@ -0,0 +1,418 @@
#errorCatcher Echo
##
## Specifying an encoding of UTF-8 is usually safe, but if your text is
## actually in Latin-1, then you should replace the string "UTF-8" with "latin-1"
## If you do this, you should also change the 'Content-Type' metadata below.
#encoding UTF-8
##
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://www.w3.org/2005/10/profile">
## This choice should match the #encoding directive above
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>$station.location Weekly weather summary</title>
<link rel="stylesheet" type="text/css" href="weewx.css"/>
<link rel="icon" type="image/png" href="favicon.ico" />
<script type="text/javascript">
function openURL(urlname)
{
window.location=urlname;
}
</script>
</head>
<body>
<div id="container">
<div id="masthead">
<h1>$station.location</h1>
<h2>Weekly Weather Summary</h2>
<h2>$current.dateTime</h2>
</div>
<div id="stats_group">
<div class="stats">
<div class="stats_header">
This Week
</div>
<table>
<tbody>
<tr>
<td class="stats_label">
High Temperature<br/>
Low Temperature
</td>
<td class="stats_data">
$week.outTemp.max at $week.outTemp.maxtime<br/>
$week.outTemp.min at $week.outTemp.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Heat Index
</td>
<td class="stats_data">
$week.heatindex.max at $week.heatindex.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Low Wind Chill
</td>
<td class="stats_data">
$week.windchill.min at $week.windchill.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Humidity<br/>
Low Humidity
</td>
<td class="stats_data">
$week.outHumidity.max $week.outHumidity.maxtime<br/>
$week.outHumidity.min $week.outHumidity.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Dewpoint<br/>
Low Dewpoint
</td>
<td class="stats_data">
$week.dewpoint.max $week.dewpoint.maxtime<br/>
$week.dewpoint.min $week.dewpoint.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Barometer<br/>
Low Barometer
</td>
<td class="stats_data">
$week.barometer.max at $week.barometer.maxtime<br/>
$week.barometer.min at $week.barometer.mintime
</td>
</tr>
<tr>
<td class="stats_label">
Rain Total
</td>
<td class="stats_data">
$week.rain.sum
</td>
</tr>
<tr>
<td class="stats_label">
High Rain Rate
</td>
<td class="stats_data">
$week.rainRate.max at $week.rainRate.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
High Wind Speed
</td>
<td class="stats_data">
$week.wind.max from $week.wind.gustdir at $week.wind.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Average Wind
</td>
<td class="stats_data">
$week.wind.avg
</td>
</tr>
<tr>
<td class="stats_label">
RMS Wind
</td>
<td class="stats_data">
$week.wind.rms
</td>
</tr>
<tr>
<td class="stats_label">
Vector Average Speed<br/>
Vector Average Direction
</td>
<td class="stats_data">
$week.wind.vecavg<br/>
$week.wind.vecdir
</td>
</tr>
<tr>
<td class="stats_label">
High Inside Temperature<br/>
Low Inside Temperature
</td>
<td class="stats_data">
$week.inTemp.max at $week.inTemp.maxtime<br/>
$week.inTemp.min at $week.inTemp.mintime
</td>
</tr>
#if $week.UV.has_data
<tr>
<td class="stats_label">
High UV<br/>
Low UV
</td>
<td class="stats_data">
$week.UV.max at $week.UV.maxtime<br/>
$week.UV.min at $week.UV.mintime
</td>
</tr>
#end if
#if $week.ET.has_data and $week.ET.sum.raw > 0.0
<tr>
<td class="stats_label">
High ET<br/>
Low ET
</td>
<td class="stats_data">
$week.ET.max at $week.ET.maxtime<br/>
$week.ET.min at $week.ET.mintime
</td>
</tr>
#end if
#if $week.radiation.has_data
<tr>
<td class="stats_label">
High Radiation<br/>
Low Radiation
</td>
<td class="stats_data">
$week.radiation.max at $week.radiation.maxtime<br/>
$week.radiation.min at $week.radiation.mintime
</td>
</tr>
#end if
</tbody>
</table>
</div> <!-- End class "stats" -->
<p>&nbsp;</p>
<div class="stats">
<div class="stats_header">
This Month
</div>
<table>
<tbody>
<tr>
<td class="stats_label">
High Temperature<br/>
Low Temperature
</td>
<td class="stats_data">
$month.outTemp.max at $month.outTemp.maxtime<br/>
$month.outTemp.min at $month.outTemp.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Heat Index
</td>
<td class="stats_data">
$month.heatindex.max at $month.heatindex.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Low Wind Chill
</td>
<td class="stats_data">
$month.windchill.min at $month.windchill.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Humidity<br/>
Low Humidity
</td>
<td class="stats_data">
$month.outHumidity.max at $month.outHumidity.maxtime<br/>
$month.outHumidity.min at $month.outHumidity.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Dewpoint<br/>
Low Dewpoint
</td>
<td class="stats_data">
$month.dewpoint.max at $month.dewpoint.maxtime<br/>
$month.dewpoint.min at $month.dewpoint.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Barometer<br/>
Low Barometer
</td>
<td class="stats_data">
$month.barometer.max at $month.barometer.maxtime<br/>
$month.barometer.min at $month.barometer.mintime
</td>
</tr>
<tr>
<td class="stats_label">
Rain Total
</td>
<td class="stats_data">
$month.rain.sum
</td>
</tr>
<tr>
<td class="stats_label">
High Rain Rate
</td>
<td class="stats_data">
$month.rainRate.max at $month.rainRate.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
High Wind Speed
</td>
<td class="stats_data">
$month.wind.max from $month.wind.gustdir at $month.wind.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Average Wind
</td>
<td class="stats_data">
$month.wind.avg
</td>
</td>
<tr>
<td class="stats_label">
RMS Wind
</td>
<td class="stats_data">
$month.wind.rms
</td>
</tr>
<tr>
<td class="stats_label">
Vector Average Speed<br/>
Vector Average Direction
</td>
<td class="stats_data">
$month.wind.vecavg<br/>
$month.wind.vecdir
</td>
</tr>
<tr>
<td class="stats_label">
High Inside Temperature<br/>
Low Inside Temperature
</td>
<td class="stats_data">
$month.inTemp.max at $month.inTemp.maxtime<br/>
$month.inTemp.min at $month.inTemp.mintime
</td>
</tr>
#if $month.UV.has_data
<tr>
<td class="stats_label">
High UV<br/>
Low UV
</td>
<td class="stats_data">
$month.UV.max at $month.UV.maxtime<br/>
$month.UV.min at $month.UV.mintime
</td>
</tr>
#end if
#if $month.ET.has_data and $month.ET.sum.raw >0.0
<tr>
<td class="stats_label">
High ET<br/>
Low ET
</td>
<td class="stats_data">
$month.ET.max at $month.ET.maxtime<br/>
$month.ET.min at $month.ET.mintime
</td>
</tr>
#end if
#if $month.radiation.has_data
<tr>
<td class="stats_label">
High Radiation<br/>
Low Radiation
</td>
<td class="stats_data">
$month.radiation.max at $month.radiation.maxtime<br/>
$month.radiation.min at $month.radiation.mintime
</td>
</tr>
#end if
</tbody>
</table>
</div> <!-- End class "stats" -->
</div> <!-- End class "stats_group" -->
<div id="content">
<div class="header">
<h3>Weekly Statistics and Plots</h3>
</div>
<div id="plots">
<img src="weektempdew.png" alt="temperatures" />
<img src="weektempchill.png" alt="heatchill" />
<img src="weekhumidity.png" alt="outside humidity" />
<img src="weekrain.png" alt="rain" />
<img src="weekwind.png" alt="wind" />
<img src="weekbarometer.png" alt="barometer"/>
<img src="weekwinddir.png" alt="Hi Wind" />
<img src="weekinside.png" alt="Inside" />
<img src="weekwindvec.png" alt="Wind Vector" />
#if $week.radiation.has_data
<img src="weekradiation.png" alt="Radiation" />
#end if
#if $week.UV.has_data
<img src="weekuv.png" alt="UV Index" />
#end if
#if $week.rxCheckPercent.has_data
<img src="weekrx.png" alt="week rx percent"/>
#end if
</div>
</div> <!-- End id "content" -->
<div id="navbar">
<input type="button" value=" Current " onclick="openURL('index.html')" />
<input type="button" value=" Week " onclick="openURL('week.html')" />
<input type="button" value=" Month " onclick="openURL('month.html')" />
<input type="button" value=" Year " onclick="openURL('year.html')" />
</div>
</div> <!-- End id "container" -->
## Include the Google Analytics code if the user has supplied an ID:
#if $Extras.has_key('googleAnalyticsId')
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("$Extras.googleAnalyticsId");
pageTracker._trackPageview();
} catch(err) {}
</script>
#end if
</body>
</html>

210
skins/Standard/weewx.css Normal file
View File

@@ -0,0 +1,210 @@
/* CSS for the weewx Standard skin
*
* Copyright (c) 2015 Tom Keffer <tkeffer@gmail.com>
*
* See the file LICENSE.txt for your rights.
*/
/* Global */
body {
margin: 0;
padding: 0;
border: 0;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10pt;
background-color: #f2f2f7;
background-image: url('backgrounds/band.gif');
background-repeat: repeat;
background-attachment: scroll;
}
#container {
margin: 0;
padding: 0;
border: 0;
}
/*
* This is the big header at the top of the page
*/
#masthead {
margin: 1% 1% 0 1%;
padding: 5px;
text-align: center;
border-top: 1px solid #dcdcdc;
border-right: 1px solid #a9a9a9;
border-bottom: 1px solid #808080;
border-left: 1px solid #a9a9a9;
background-color: #fafaff;
}
#masthead h1 {
color: #3d6c87;
}
#masthead h3 {
color: #5f8ea9;
}
/*
* This holds the statistics (daily high/low, etc.) on the left:
*/
#stats_group {
width: 30%;
min-height: 500px;
margin: 1%;
padding: 5px;
float: left;
border-top: 1px solid #dcdcdc;
border-right: 1px solid #a9a9a9;
border-bottom: 1px solid #808080;
border-left: 1px solid #a9a9a9;
background-color: #fafaff;
}
.stats table {
border: thin solid #000000;
width: 100%;
}
.stats td {
border: thin solid #000000;
padding: 2px;
}
.stats_header {
background-color: #000000;
color: #a8b8c8;
font-size: 14pt;
font-weight: bolder;
}
.stats_label {
color: green;
}
.stats_data {
color: red;
}
/*
* This holds the "About", "Almanac", and plots on the right
*/
#content {
width: 62%;
min-height: 500px;
margin: 1%;
padding: 5px;
float: right;
border-top: 1px solid #dcdcdc;
border-right: 1px solid #a9a9a9;
border-bottom: 1px solid #808080;
border-left: 1px solid #a9a9a9;
background-color: #fafaff;
text-align: center;
}
#content .header {
font-size: 14pt;
font-weight: bolder;
color: #3d6c87;
margin-bottom: 10px;
}
#content .caption {
font-weight: bold;
color: #3d6c87;
}
#content table {
text-align: center;
width: 100%;
}
#content td {
width: 50%;
}
#content .label {
text-align: right;
font-style: italic;
}
#content .data {
text-align: left;
}
#about, #almanac {
width: 90%;
margin-left: auto;
margin-right: auto;
margin-bottom: 30px;
}
.celestial_group {
}
.celestial_body {
width: 48%;
vertical-align: top;
display:inline-block;
}
#plots {
width: 90%;
display: block;
margin-left: auto;
margin-right: auto;
}
#plots img {
border: thin solid #3d6c87;
margin: 3px;
padding: 3px;
}
#radar_img {
width: 100%;
display: block;
margin-left: auto;
margin-right: auto;
margin: 3px;
padding: 3px;
}
#radar_img img {
margin-left: auto;
margin-right: auto;
width: 90%;
margin: 3px;
padding: 3px;
}
#radar_img p {
width: 90%;
font-style: italic;
font-size: smaller;
text-align: center;
margin-top: 0;
}
/*
* Navigation bar (week, month, etc.) at the bottom
*/
#navbar {
margin: 0 1% 1% 1%;
padding: 5px;
text-align: center;
clear: both;
border-top: 1px solid #dcdcdc;
border-right: 1px solid #a9a9a9;
border-bottom: 1px solid #808080;
border-left: 1px solid #a9a9a9;
background-color: #fafaff;
}
/*************** Global Styles ***************/
h2, h3, h4, h5, h6 {
color: #3d6c87;
}

View File

@@ -0,0 +1,281 @@
#errorCatcher Echo
##
## Specifying an encoding of UTF-8 is usually safe, but if your text is
## actually in Latin-1, then you should replace the string "UTF-8" with "latin-1"
## If you do this, you should also change the 'Content-Type' metadata below.
#encoding UTF-8
##
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://www.w3.org/2005/10/profile">
## This choice should match the #encoding directive above
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>$station.location Yearly weather summary</title>
<link rel="stylesheet" type="text/css" href="weewx.css"/>
<link rel="icon" type="image/png" href="favicon.ico" />
<script type="text/javascript">
function openURL(urlname)
{
window.location=urlname;
}
</script>
</head>
<body>
<div id="container">
<div id="masthead">
<h1>$station.location</h1>
<h2>Yearly Weather Summary</h2>
<h2>$current.dateTime</h2>
</div>
<div id="stats_group">
<div class="stats">
<div class="stats_header">
Calendar Year
</div>
<table>
<tbody>
<tr>
<td class="stats_label">
High Temperature<br/>
Low Temperature
</td>
<td class="stats_data">
$year.outTemp.max at $year.outTemp.maxtime<br/>
$year.outTemp.min at $year.outTemp.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Heat Index
</td>
<td class="stats_data">
$year.heatindex.max at $year.heatindex.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Low Wind Chill
</td>
<td class="stats_data">
$year.windchill.min at $year.windchill.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Humidity<br/>
Low Humidity
</td>
<td class="stats_data">
$year.outHumidity.max $year.outHumidity.maxtime<br/>
$year.outHumidity.min $year.outHumidity.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Dewpoint<br/>
Low Dewpoint
</td>
<td class="stats_data">
$year.dewpoint.max $year.dewpoint.maxtime<br/>
$year.dewpoint.min $year.dewpoint.mintime
</td>
</tr>
<tr>
<td class="stats_label">
High Barometer<br/>
Low Barometer
</td>
<td class="stats_data">
$year.barometer.max at $year.barometer.maxtime<br/>
$year.barometer.min at $year.barometer.mintime
</td>
</tr>
<tr>
<td class="stats_label">
Rain Total
</td>
<td class="stats_data">
$year.rain.sum
</td>
</tr>
<tr>
<td class="stats_label">
High Rain Rate
</td>
<td class="stats_data">
$year.rainRate.max at $year.rainRate.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
High Wind Speed
</td>
<td class="stats_data">
$year.wind.max from $year.wind.gustdir at $year.wind.maxtime
</td>
</tr>
<tr>
<td class="stats_label">
Average Wind
</td>
<td class="stats_data">
$year.wind.avg
</td>
</tr>
<tr>
<td class="stats_label">
RMS Wind
</td>
<td class="stats_data">
$year.wind.rms
</td>
</tr>
<tr>
<td class="stats_label">
Vector Average Speed<br/>
Vector Average Direction
</td>
<td class="stats_data">
$year.wind.vecavg<br/>
$year.wind.vecdir
</td>
</tr>
<tr>
<td class="stats_label">
High Inside Temperature<br/>
Low Inside Temperature
</td>
<td class="stats_data">
$year.inTemp.max at $year.inTemp.maxtime<br/>
$year.inTemp.min at $year.inTemp.mintime
</td>
</tr>
#if $year.UV.has_data
<tr>
<td class="stats_label">
High UV<br/>
Low UV
</td>
<td class="stats_data">
$year.UV.max at $year.UV.maxtime<br/>
$year.UV.min at $year.UV.mintime
</td>
</tr>
#end if
#if $year.ET.has_data and $year.ET.sum.raw >0.0
<tr>
<td class="stats_label">
High ET<br/>
Low ET
</td>
<td class="stats_data">
$year.ET.max at $year.ET.maxtime<br/>
$year.ET.min at $year.ET.mintime
</td>
</tr>
#end if
#if $year.radiation.has_data
<tr>
<td class="stats_label">
High Radiation<br/>
Low Radiation
</td>
<td class="stats_data">
$year.radiation.max at $year.radiation.maxtime<br/>
$year.radiation.min at $year.radiation.mintime
</td>
</tr>
#end if
</tbody>
</table>
</div> <!-- End class "stats" -->
<p>&nbsp;</p>
<div class="stats">
<div class="stats_header">
Rain Year (1-$station.rain_year_str start)
</div>
<table>
<tbody>
<tr>
<td class="stats_label">
Rain Year Total
</td>
<td class="stats_data">
$rainyear.rain.sum
</td>
</tr>
<tr>
<td class="stats_label">
High Rain Rate
</td>
<td class="stats_data">
$rainyear.rainRate.max at $rainyear.rainRate.maxtime
</td>
</tr>
</tbody>
</table>
</div> <!-- End class "stats" -->
</div> <!-- End class "stats_group" -->
<div id="content">
<div class="header">
<h3>Yearly Statistics and Plots</h3>
</div>
<div id="plots">
<img src="yeartempdew.png" alt="temperatures" />
<img src="yeartempchill.png" alt="heatchill" />
<img src="yearhumidity.png" alt="outside humidity" />
<img src="yearhilow.png" alt="Daily highs and lows for the year" title="Daily highs and lows for the year"/>
<img src="yearrain.png" alt="rain" />
<img src="yearwind.png" alt="wind" />
<img src="yearbarometer.png" alt="barometer"/>
<img src="yearwinddir.png" alt="Hi Wind" />
<img src="yearinside.png" alt="Inside" />
<img src="yearwindvec.png" alt="Wind Vector" />
#if $year.radiation.has_data
<img src="yearradiation.png" alt="Radiation" />
#end if
#if $year.UV.has_data
<img src="yearuv.png" alt="UV Index" />
#end if
#if $year.rxCheckPercent.has_data
<img src="yearrx.png" alt="year rx percent"/>
#end if
</div>
</div> <!-- End id "content" -->
<div id="navbar">
<input type="button" value=" Current " onclick="openURL('index.html')" />
<input type="button" value=" Week " onclick="openURL('week.html')" />
<input type="button" value=" Month " onclick="openURL('month.html')" />
<input type="button" value=" Year " onclick="openURL('year.html')" />
</div>
</div> <!-- End id "container" -->
## Include the Google Analytics code if the user has supplied an ID:
#if $Extras.has_key('googleAnalyticsId')
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("$Extras.googleAnalyticsId");
pageTracker._trackPageview();
} catch(err) {}
</script>
#end if
</body>
</html>