Added Standard skin back in.
39
skins/Standard/NOAA/NOAA-YYYY-MM.txt.tmpl
Normal 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)
|
||||
|
||||
96
skins/Standard/NOAA/NOAA-YYYY.txt.tmpl
Normal 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)
|
||||
136
skins/Standard/RSS/weewx_rss.xml.tmpl
Normal 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>
|
||||
BIN
skins/Standard/backgrounds/band.gif
Normal file
|
After Width: | Height: | Size: 76 B |
BIN
skins/Standard/backgrounds/butterfly.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
skins/Standard/backgrounds/drops.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
skins/Standard/backgrounds/flower.jpg
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
skins/Standard/backgrounds/leaf.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
skins/Standard/backgrounds/night.gif
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
skins/Standard/favicon.ico
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
527
skins/Standard/index.html.tmpl
Normal 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> </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> </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]° $station.latitude[1]' $station.latitude[2]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Longitude:</td>
|
||||
<td class="data">$station.longitude[0]° $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°" % $almanac.sun.az)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Altitude:</td>
|
||||
<td class="data">$("%.1f°" % $sun_altitude)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Right ascension:</td>
|
||||
<td class="data">$("%.1f°" % $almanac.sun.ra)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Declination:</td>
|
||||
<td class="data">$("%.1f°" % $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°" % $almanac.moon.az)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Altitude:</td>
|
||||
<td class="data">$("%.1f°" % $almanac.moon.alt)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Right ascension:</td>
|
||||
<td class="data">$("%.1f°" % $almanac.moon.ra)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label">Declination:</td>
|
||||
<td class="data">$("%.1f°" % $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:
|
||||
<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:
|
||||
<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
@@ -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;
|
||||
}
|
||||
92
skins/Standard/mobile.html.tmpl
Normal 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>
|
||||
|
||||
418
skins/Standard/month.html.tmpl
Normal 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> </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
@@ -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
|
||||
|
||||
|
||||
35
skins/Standard/smartphone/barometer.html.tmpl
Normal 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>
|
||||
4
skins/Standard/smartphone/custom.js
Normal file
@@ -0,0 +1,4 @@
|
||||
$(document).bind("mobileinit", function(){
|
||||
$.mobile.defaultPageTransition = 'slide';
|
||||
$.mobile.page.prototype.options.addBackBtn = true;
|
||||
});
|
||||
27
skins/Standard/smartphone/humidity.html.tmpl
Normal 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>
|
||||
BIN
skins/Standard/smartphone/icons/icon_ipad_x1.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
skins/Standard/smartphone/icons/icon_ipad_x2.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
skins/Standard/smartphone/icons/icon_iphone_x1.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
skins/Standard/smartphone/icons/icon_iphone_x2.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
42
skins/Standard/smartphone/index.html.tmpl
Normal 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>
|
||||
|
||||
34
skins/Standard/smartphone/rain.html.tmpl
Normal 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>
|
||||
35
skins/Standard/smartphone/temp_outside.html.tmpl
Normal 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>
|
||||
|
||||
418
skins/Standard/week.html.tmpl
Normal 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> </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
@@ -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;
|
||||
}
|
||||
281
skins/Standard/year.html.tmpl
Normal 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> </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>
|
||||