Parcourir la source

Add files via upload

Josh Smith il y a 8 ans
Parent
commit
0b5cc7d90e

+ 153 - 0
404.html

@@ -0,0 +1,153 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="utf-8">
+        <title>Page Not Found :(</title>
+        <style>
+            ::-moz-selection {
+                background: #b3d4fc;
+                text-shadow: none;
+            }
+
+            ::selection {
+                background: #b3d4fc;
+                text-shadow: none;
+            }
+
+            html {
+                padding: 30px 10px;
+                font-size: 20px;
+                line-height: 1.4;
+                color: #737373;
+                background: #f0f0f0;
+                -webkit-text-size-adjust: 100%;
+                -ms-text-size-adjust: 100%;
+            }
+
+            html,
+            input {
+                font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+            }
+
+            body {
+                max-width: 500px;
+                _width: 500px;
+                padding: 30px 20px 50px;
+                border: 1px solid #b3b3b3;
+                border-radius: 4px;
+                margin: 0 auto;
+                box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;
+                background: #fcfcfc;
+            }
+
+            h1 {
+                margin: 0 10px;
+                font-size: 50px;
+                text-align: center;
+            }
+
+            h1 span {
+                color: #bbb;
+            }
+
+            h3 {
+                margin: 1.5em 0 0.5em;
+            }
+
+            p {
+                margin: 1em 0;
+            }
+
+            ul {
+                padding: 0 0 0 40px;
+                margin: 1em 0;
+            }
+
+            .container {
+                max-width: 380px;
+                _width: 380px;
+                margin: 0 auto;
+            }
+
+            /* google search */
+
+            #goog-fixurl ul {
+                list-style: none;
+                padding: 0;
+                margin: 0;
+            }
+
+            #goog-fixurl form {
+                margin: 0;
+            }
+
+            #goog-wm-qt,
+            #goog-wm-sb {
+                border: 1px solid #bbb;
+                font-size: 16px;
+                line-height: normal;
+                vertical-align: top;
+                color: #444;
+                border-radius: 2px;
+            }
+
+            #goog-wm-qt {
+                width: 220px;
+                height: 20px;
+                padding: 5px;
+                margin: 5px 10px 0 0;
+                box-shadow: inset 0 1px 1px #ccc;
+            }
+
+            #goog-wm-sb {
+                display: inline-block;
+                height: 32px;
+                padding: 0 10px;
+                margin: 5px 0 0;
+                white-space: nowrap;
+                cursor: pointer;
+                background-color: #f5f5f5;
+                background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);
+                background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);
+                background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);
+                background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);
+                -webkit-appearance: none;
+                -moz-appearance: none;
+                appearance: none;
+                *overflow: visible;
+                *display: inline;
+                *zoom: 1;
+            }
+
+            #goog-wm-sb:hover,
+            #goog-wm-sb:focus {
+                border-color: #aaa;
+                box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+                background-color: #f8f8f8;
+            }
+
+            #goog-wm-qt:hover,
+            #goog-wm-qt:focus {
+                border-color: #105cb6;
+                outline: 0;
+                color: #222;
+            }
+
+            input::-moz-focus-inner {
+                padding: 0;
+                border: 0;
+            }
+        </style>
+    </head>
+    <body>
+        <div class="container">
+            <h1>Not found <span>:(</span></h1>
+            <p>Sorry, but the page you were trying to view does not exist.</p>
+            <p>It looks like this was the result of either:</p>
+            <ul>
+                <li>a mistyped address</li>
+                <li>an out-of-date link</li>
+            </ul>
+        </div>
+    </body>
+</html>

+ 69 - 0
LICENSE.txt

@@ -0,0 +1,69 @@
+#########################################################
+#        _____        __          _    _                #
+#       /  ___|      / _|        | |  (_)               #
+#       \ `--.  ___ | |_ __ _ ___| | ___ _ __           #
+#        `--. \/ _ \|  _/ _` / __| |/ / | '_ \          #
+#       /\__/ / (_) | || (_| \__ \   <| | | | |         #
+#       \____/ \___/|_| \__,_|___/_|\_\_|_| |_|         #
+#                                                       #
+#-------------------------------------------------------#
+#                                                       #
+# Sofaskin is a free weewx skin.                        #
+# The main goal was to build a beautiful and modern     #
+# layout inspired by Google's material design.          #
+# It is fully responsive and looks great on all         #
+# kind of devices.                                      #
+#                                                       #
+# Successfully tested on weewx 3.0 / 3.0.1.             #
+# Almanac Python extension recommended.                 #
+# Feel free to change the layout however you want.      #
+# Under css/scss you'll find all the Sass-files to      #
+# change colors etc. Or change them in the main.css.    #
+#                                                       #
+# Sofaskin is licensed under the MIT License.           #
+#                                                       #
+# Made by Sven Reifschneider <hello@blauesledersofa.de> #
+# blaues Ledersofa Photography and Web Development      #
+#                                                       #
+#-------------------------------------------------------#
+#                                                       #
+# Version 1.1                                           #
+# Dec 2014 - Feb 2015                                   #
+# bls-sofaskin-v1.1                                     #
+#                                                       #
+#-------------------------------------------------------#
+#                                                       #
+# Made with love, coffee and pizza                      #
+# Designed in Frankfurt, Germany                        #
+#                                                       #
+#-------------------------------------------------------#
+#                                                       #
+# The MIT License (MIT)                                 #
+#                                                       #
+# Copyright (c) 2014 Sven Reifschneider                 #
+#                                                       #
+# Permission is hereby granted, free of charge, to any  #
+# person obtaining a copy of this software and          #
+# associated documentation files (the "Software"), to   #
+# deal in the Software without restriction, including   #
+# without limitation the rights to use, copy, modify,   #
+# merge, publish, distribute, sublicense, and/or sell   #
+# copies of the Software, and to permit persons to whom #
+# the Software is furnished to do so, subject to the    #
+# following conditions:                                 #
+#                                                       #
+# The above copyright notice and this permission notice #
+# shall be included in all copies or substantial        #
+# portions of the Software.                             #
+#                                                       #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF #
+# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT       #
+# LIMITED TO THE WARRANTIES OF MERCHANTABILITY,         #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. #
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS    #
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,  #
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,  #
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE        #
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.#
+#                                                       #
+#########################################################

+ 109 - 0
NOAA/NOAA-Records.txt.tmpl

@@ -0,0 +1,109 @@
+#errorCatcher Echo
+## $Id: NOAA-YYYY.txt.tmpl 2749 2014-11-29 18:15:24Z tkeffer $
+#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
+                     STATION RECORDS
+
+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())
+
+#for $yr in $SummaryByYear
+Record High Temperature:
+
+
+Record Low Temperature:
+Record Low Max Temperature:
+Record High Min Temperature:
+
+
+
+
+                              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)
+
+Updated: $latest.dateTime

+ 41 - 0
NOAA/NOAA-YYYY-MM.txt.tmpl

@@ -0,0 +1,41 @@
+#errorCatcher Echo
+## $Id: NOAA-YYYY-MM.txt.tmpl 2749 2014-11-29 18:15:24Z tkeffer $
+#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)
+    
+Updated: $latest.dateTime

+ 99 - 0
NOAA/NOAA-YYYY.txt.tmpl

@@ -0,0 +1,99 @@
+#errorCatcher Echo
+## $Id: NOAA-YYYY.txt.tmpl 2749 2014-11-29 18:15:24Z tkeffer $
+#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_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)
+
+Updated: $latest.dateTime

+ 137 - 0
RSS/weewx_rss.xml.tmpl

@@ -0,0 +1,137 @@
+<?xml version="1.0"?>
+## $Id: weewx_rss.xml.tmpl 2749 2014-11-29 18:15:24Z tkeffer $
+<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
Screenshot.png


+ 19 - 0
css/LICENSE_H5BP.md

@@ -0,0 +1,19 @@
+Copyright (c) HTML5 Boilerplate
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 1040 - 0
css/main.css

@@ -0,0 +1,1040 @@
+/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */
+/*
+ * What follows is the result of much research on cross-browser styling.
+ * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
+ * Kroc Camen, and the H5BP dev community and team.
+ */
+/*
+ * Sass Guide: http://sass-lang.com/guide
+ */
+/* ==========================================================================
+   Includes
+   ========================================================================== */
+/*! normalize.css v1.1.3 | MIT License | git.io/normalize */
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+  display: block; }
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+audio,
+canvas,
+video {
+  display: inline-block;
+  *display: inline;
+  *zoom: 1; }
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+audio:not([controls]) {
+  display: none;
+  height: 0; }
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+[hidden] {
+  display: none; }
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+/**
+ * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+html {
+  font-size: 100%;
+  /* 1 */
+  -ms-text-size-adjust: 100%;
+  /* 2 */
+  -webkit-text-size-adjust: 100%;
+  /* 2 */ }
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+html,
+button,
+input,
+select,
+textarea {
+  font-family: sans-serif; }
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+body {
+  margin: 0; }
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+a:focus {
+  outline: thin dotted; }
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+a:active,
+a:hover {
+  outline: 0; }
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0; }
+
+h2 {
+  font-size: 1.5em;
+  margin: 0.83em 0; }
+
+h3 {
+  font-size: 1.17em;
+  margin: 1em 0; }
+
+h4 {
+  font-size: 1em;
+  margin: 1.33em 0; }
+
+h5 {
+  font-size: 0.83em;
+  margin: 1.67em 0; }
+
+h6 {
+  font-size: 0.67em;
+  margin: 2.33em 0; }
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+abbr[title] {
+  border-bottom: 1px dotted; }
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+b,
+strong {
+  font-weight: bold; }
+
+blockquote {
+  margin: 1em 40px; }
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+dfn {
+  font-style: italic; }
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+hr {
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  height: 0; }
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+mark {
+  background: #ff0;
+  color: #000; }
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+p,
+pre {
+  margin: 1em 0; }
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, serif;
+  _font-family: 'courier new', monospace;
+  font-size: 1em; }
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+pre {
+  white-space: pre;
+  white-space: pre-wrap;
+  word-wrap: break-word; }
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+q {
+  quotes: none; }
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+q:before,
+q:after {
+  content: '';
+  content: none; }
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+small {
+  font-size: 80%; }
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline; }
+
+sup {
+  top: -0.5em; }
+
+sub {
+  bottom: -0.25em; }
+
+/* ==========================================================================
+   Lists
+   ========================================================================== */
+/**
+ * Address margins set differently in IE 6/7.
+ */
+dl,
+menu,
+ol,
+ul {
+  margin: 1em 0; }
+
+dd {
+  margin: 0 0 0 40px; }
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+menu,
+ol,
+ul {
+  padding: 0 0 0 40px; }
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+nav ul,
+nav ol {
+  list-style: none;
+  list-style-image: none; }
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+img {
+  border: 0;
+  /* 1 */
+  -ms-interpolation-mode: bicubic;
+  /* 2 */ }
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+svg:not(:root) {
+  overflow: hidden; }
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+figure {
+  margin: 0; }
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+form {
+  margin: 0; }
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em; }
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+legend {
+  border: 0;
+  /* 1 */
+  padding: 0;
+  white-space: normal;
+  /* 2 */
+  *margin-left: -7px;
+  /* 3 */ }
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+button,
+input,
+select,
+textarea {
+  font-size: 100%;
+  /* 1 */
+  margin: 0;
+  /* 2 */
+  vertical-align: baseline;
+  /* 3 */
+  *vertical-align: middle;
+  /* 3 */ }
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+button,
+input {
+  line-height: normal; }
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+button,
+select {
+  text-transform: none; }
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+ */
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  /* 2 */
+  cursor: pointer;
+  /* 3 */
+  *overflow: visible;
+  /* 4 */ }
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+button[disabled],
+html input[disabled] {
+  cursor: default; }
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+ */
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box;
+  /* 1 */
+  padding: 0;
+  /* 2 */
+  *height: 13px;
+  /* 3 */
+  *width: 13px;
+  /* 3 */ }
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+input[type="search"] {
+  -webkit-appearance: textfield;
+  /* 1 */
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+  /* 2 */
+  box-sizing: content-box; }
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none; }
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0; }
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+textarea {
+  overflow: auto;
+  /* 1 */
+  vertical-align: top;
+  /* 2 */ }
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+/**
+ * Remove most spacing between table cells.
+ */
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+/* ==========================================================================
+   Variables
+   by Sven Reifschneider
+   ========================================================================== */
+/*
+ * Colors
+ */
+/*
+ * Font
+ */
+/* ==========================================================================
+   Mixins
+   by Sven Reifschneider
+
+   Usage:
+   @include mixin-name(wert);
+   ========================================================================== */
+/* ==========================================================================
+   Base styles: opinionated defaults
+   ========================================================================== */
+html,
+button,
+input,
+select,
+textarea {
+  color: #222; }
+
+html {
+  font-size: 1em;
+  line-height: 1.4;
+  font-family: "Lato", Helvetica, Arial, sans-serif;
+  text-align: center;
+  -webkit-text-rendering: optimizeLegibility;
+  -moz-text-rendering: optimizeLegibility;
+  -ms-text-rendering: optimizeLegibility;
+  -o-text-rendering: optimizeLegibility;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-font-smoothing: antialiased;
+  -ms-font-smoothing: antialiased;
+  -o-font-smoothing: antialiased;
+  font-smoothing: antialiased;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+/*
+ * Remove text-shadow in selection highlight: h5bp.com/i
+ * These selection rule sets have to be separate.
+ * Customize the background color to match your design.
+ */
+::-moz-selection {
+  background: #b3d4fc;
+  text-shadow: none; }
+
+::selection {
+  background: #b3d4fc;
+  text-shadow: none; }
+
+/*
+ * A better looking default horizontal rule
+ */
+hr {
+  display: block;
+  height: 1px;
+  border: 0;
+  border-top: 1px solid #ccc;
+  margin: 1em 0;
+  padding: 0; }
+
+/*
+ * Remove the gap between images, videos, audio and canvas and the bottom of
+ * their containers: h5bp.com/i/440
+ */
+audio,
+canvas,
+img,
+video {
+  vertical-align: middle; }
+
+/*
+ * Remove default fieldset styles.
+ */
+fieldset {
+  border: 0;
+  margin: 0;
+  padding: 0; }
+
+/*
+ * Allow only vertical resizing of textareas.
+ */
+textarea {
+  resize: vertical; }
+
+/* ==========================================================================
+   Website Style
+   ========================================================================== */
+/* ==========================================================================
+   Don't Repeat Yourself
+   Elemente, die immer wieder auftauchen
+   by Sven Reifschneider
+   ========================================================================== */
+a, a:hover, a:active, a:visited {
+  text-decoration: none; }
+
+/* ==========================================================================
+   Website Style
+   by Sven Reifschneider
+   ========================================================================== */
+body {
+  background: #f3f3f3; }
+
+body {
+  text-align: center;
+  width: 100%; }
+
+header {
+  background: #05c2d8;
+  width: 100%;
+  color: #fff;
+  font-weight: 300;
+  padding: 1em 0 0 0; }
+  header a {
+    color: #d5f2f5;
+    transition: all 0.2s; }
+  header a:hover {
+    color: #f4feff; }
+  header h1 {
+    font-size: 1.8em;
+    font-weight: normal;
+    margin: 0.1em 0em;
+    padding: 0; }
+  header h2 {
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0.1em 0;
+    padding: 0; }
+  header p {
+    margin: 0.1em 0 0.2em 0;
+    padding: 0; }
+  header .h-left {
+    display: inline-block;
+    width: 48%;
+    text-align: left; }
+  header .h-right {
+    display: inline-block;
+    width: 48%;
+    text-align: right; }
+    header .h-right table {
+      float: right;
+      border: none; }
+      header .h-right table td {
+        padding: 0.1em 0.4em; }
+  header nav {
+    display: inline-block;
+    text-align: left;
+    width: 100%;
+    font-size: 1.4em;
+    font-weight: 400;
+    margin: 2em 0 0 0; }
+    header nav ul {
+      list-style-type: none;
+      margin: 0;
+      padding: 0; }
+    header nav li {
+      display: inline-block;
+      padding: 0.3em 0;
+      margin: 0 0.4em; }
+    header nav a {
+      display: block; }
+    header nav select {
+      display: block;
+      font-size: 0.8em;
+      font-weight: 300;
+      border: none;
+      outline: none;
+      -webkit-appearance: none;
+      -moz-appearance: none;
+      appearance: none;
+      cursor: pointer;
+      background: #05c2d8;
+      color: #fff; }
+    header nav a {
+      color: #d5f2f5;
+      transition: all 0.2s; }
+    header nav a:hover {
+      color: #f4feff; }
+    header nav li.active {
+      border-bottom: 3px solid #fff533; }
+      header nav li.active a {
+        color: #fff; }
+
+.container {
+  display: inline-block;
+  width: 1500px; }
+  .container .left {
+    display: inline-block;
+    width: 590px;
+    vertical-align: top;
+    margin-right: 1.5em; }
+  .container .right {
+    display: inline-block;
+    width: 860px; }
+
+.container-fix {
+  display: inline-block;
+  text-align: left;
+  width: 980px; }
+
+.card {
+  background: #fff;
+  padding: 0.2em 1.5em 1em 1.5em;
+  margin: 2em 0;
+  box-sizing: border-box;
+  width: 100%;
+  text-align: left;
+  -webkit-box-shadow: 0px 0px 6px 0px #c9c9c9;
+  -moz-box-shadow: 0px 0px 6px 0px #c9c9c9;
+  box-shadow: 0px 0px 6px 0px #c9c9c9; }
+  .card img {
+    max-width: 98%; }
+  .card h1 {
+    width: 100%;
+    text-align: left;
+    font-size: 1.5em;
+    font-weight: normal;
+    color: #515151;
+    padding: 0;
+    border-bottom: 1px solid #ebebeb; }
+  .card h3 {
+    margin: 0.4em 0;
+    padding: 0;
+    color: #515151; }
+  .card table {
+    border: none;
+    width: 100%; }
+    .card table td {
+      margin: 0.2em;
+      padding: 0.2em 0; }
+  .card a {
+    color: #6cc99f;
+    transition: all 0.2s; }
+  .card a:hover {
+    color: #a4e5c8; }
+
+.cc {
+  text-align: center; }
+
+.haelfte {
+  width: 48%;
+  display: inline-block; }
+
+footer {
+  width: 100%;
+  background: #05c2d8;
+  color: #fff;
+  padding: 1.5em 0; }
+  footer a {
+    color: #fff533;
+    transition: all 0.2s; }
+  footer a:hover {
+    color: #fffcc2; }
+
+img.space {
+  margin-top: 1.3em; }
+
+.graphs img {
+  margin: 0.4em 0;
+  max-width: 800px; }
+
+img.small {
+  max-width: 550px; }
+
+.cpointer {
+  cursor: pointer; }
+
+table.tablespacer td {
+  padding: 0.3em 0; }
+table.tablespacer tr:not(:last-child) {
+  border-bottom: 1px solid #ebebeb; }
+
+/*Gray*/
+.m-grau {
+  color: #8a8a8a; }
+
+.m-orange {
+  color: #f7cd35; }
+
+/*Green*/
+.m-gruen {
+  color: #6cc99f; }
+
+/*Red*/
+.m-rot {
+  color: #e6766b; }
+
+/*Blue*/
+.m-blau {
+  color: #0ea5e6; }
+
+/* Hide the list item that contains the link that should open and close the topnav on small screens */
+ul.topnav li.icon {
+  display: none;}
+
+@media (max-width: 1550px) and (min-width: 1210px) {
+  .container {
+    width: 1200px !important; }
+    .container .left {
+      width: 450px !important;
+      margin-right: 0.8em !important; }
+    .container .right {
+      width: 700px !important; }
+
+  .graphs img {
+    margin: 0.3em 0 !important;
+    max-width: 100% !important; }
+
+  img.small {
+    max-width: 100% !important; } }
+
+@media (max-width: 1209px) and (min-width: 1010px) {
+  .container {
+    width: 920px !important; }
+    .container .left {
+      width: 290px !important;
+      margin-right: 0.8em !important; }
+    .container .right {
+      width: 580px !important; }
+
+  .graphs img {
+    margin: 0.3em 0 !important;
+    max-width: 100% !important; }
+
+  img.small {
+    max-width: 100% !important; } }
+
+@media (max-width: 1009px) {
+  .container {
+    width: 100% !important; }
+    .container .left {
+      width: 100% !important;
+      margin: 0 !important; }
+    .container .right {
+      width: 100% !important; }
+
+  .container-fix {
+    width: 100%; }
+
+  .graphs img {
+    margin: 0.2em 0 !important;
+    max-width: 100% !important; }
+
+  img.small {
+    max-width: 100% !important; }
+
+  .haelfte {
+    width: 100% !important; }
+
+  .card {
+    margin: 1em 0; }
+
+  header {
+    width: 100%;
+    box-sizing: border-box;
+    padding: 0 1.5em; }
+    header .h-left {
+      display: inline-block;
+      width: 100%; }
+    header .h-right {
+      display: none !important; }
+    header nav {
+      display: inline-block;
+      width: 100%;
+      font-size: 1.2em;
+      margin: 0.5em 0 0 0; }
+      header nav ul {
+        list-style-type: none;
+        margin: 0;
+        padding: 0; }
+      header nav li {
+        display: block;
+        padding: 0.1em 0;
+        margin: 0; }
+      header nav li.active {
+        border-bottom: 3px solid #fff533; }
+        header nav li.active a {
+          color: #fff; } 
+
+/* When the screen is less than 680 pixels wide, hide all list items. Show the list item that contains the link to open and close the topnav (li.icon) */
+  ul.topnav li {
+    display: none;
+  }
+  ul.topnav li.icon {
+    float: left;
+    display: inline-block;
+  }  
+  ul.topnav li.active {
+     border-bottom: 3px solid #fff533; 
+  }
+
+/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens */
+ul.topnav.responsive {
+  position: relative;
+  }
+  ul.topnav.responsive li.icon {
+    position: left;
+    right: 0;
+    top: 0;
+  }
+  ul.topnav.responsive li {
+    float: none;
+    display: inline;
+  }
+  ul.topnav.responsive li a {
+    display: block;
+    text-align: left;
+  }
+  ul.topnav.responsive li.active {
+    display: block;
+    border-bottom: 3px solid #fff533; 
+  }
+  ul.topnav.responsive li.active a {
+    display: block;
+    color: #fff; 
+  }
+ 
+ ///////////////////////////////
+}
+
+
+/* ==========================================================================
+   Helper classes
+   ========================================================================== */
+/*
+ * Image replacement
+ */
+.ir {
+  background-color: transparent;
+  border: 0;
+  overflow: hidden;
+  /* IE 6/7 fallback */
+  *text-indent: -9999px; }
+
+.ir:before {
+  content: "";
+  display: block;
+  width: 0;
+  height: 150%; }
+
+/*
+ * Hide from both screenreaders and browsers: h5bp.com/u
+ */
+.hidden {
+  display: none !important;
+  visibility: hidden; }
+
+/*
+ * Hide only visually, but have it available for screenreaders: h5bp.com/v
+ */
+.visuallyhidden {
+  border: 0;
+  clip: rect(0 0 0 0);
+  height: 1px;
+  margin: -1px;
+  overflow: hidden;
+  padding: 0;
+  position: absolute;
+  width: 1px; }
+
+/*
+ * Extends the .visuallyhidden class to allow the element to be focusable
+ * when navigated to via the keyboard: h5bp.com/p
+ */
+.visuallyhidden.focusable:active,
+.visuallyhidden.focusable:focus {
+  clip: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  position: static;
+  width: auto; }
+
+/*
+ * Hide visually and from screenreaders, but maintain layout
+ */
+.invisible {
+  visibility: hidden; }
+
+/*
+ * Clearfix: contain floats
+ *
+ * For modern browsers
+ * 1. The space content is one way to avoid an Opera bug when the
+ *    `contenteditable` attribute is included anywhere else in the document.
+ *    Otherwise it causes space to appear at the top and bottom of elements
+ *    that receive the `clearfix` class.
+ * 2. The use of `table` rather than `block` is only necessary if using
+ *    `:before` to contain the top-margins of child elements.
+ */
+.clearfix:before,
+.clearfix:after {
+  content: " ";
+  /* 1 */
+  display: table;
+  /* 2 */ }
+
+.clearfix:after {
+  clear: both; }
+
+/*
+ * For IE 6/7 only
+ * Include this rule to trigger hasLayout and contain floats.
+ */
+.clearfix {
+  *zoom: 1; }
+
+/* ==========================================================================
+   Media Queries
+   ========================================================================== */
+@media only screen and (min-width: 35em) {
+  /* Style adjustments for viewports that meet the condition */ }
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid required HTTP connection: h5bp.com/r
+   ========================================================================== */
+@media print {
+  * {
+    background: transparent !important;
+    color: #000 !important;
+    /* Black prints faster: h5bp.com/s */
+    box-shadow: none !important;
+    text-shadow: none !important; }
+
+  a,
+  a:visited {
+    text-decoration: underline; }
+
+  a[href]:after {
+    content: " (" attr(href) ")"; }
+
+  abbr[title]:after {
+    content: " (" attr(title) ")"; }
+
+  /*
+   * Don't show links for images, or javascript/internal links
+   */
+  .ir a:after,
+  a[href^="javascript:"]:after,
+  a[href^="#"]:after {
+    content: ""; }
+
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid; }
+
+  thead {
+    display: table-header-group;
+    /* h5bp.com/t */ }
+
+  tr,
+  img {
+    page-break-inside: avoid; }
+
+  img {
+    max-width: 100% !important; }
+
+  @page {
+    margin: 0.5cm; }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3; }
+
+  h2,
+  h3 {
+    page-break-after: avoid; } }
+
+/*# sourceMappingURL=main.css.map */

Fichier diff supprimé car celui-ci est trop grand
+ 2 - 0
css/main.css.map


+ 8 - 0
css/scss/_dry.scss

@@ -0,0 +1,8 @@
+/* ==========================================================================
+   Don't Repeat Yourself
+   Elemente, die immer wieder auftauchen
+   by Sven Reifschneider
+   ========================================================================== */
+
+// Kein Unterstrich bei Links
+a, a:hover, a:active, a:visited { text-decoration: none; }

+ 34 - 0
css/scss/_mixins.scss

@@ -0,0 +1,34 @@
+/* ==========================================================================
+   Mixins
+   by Sven Reifschneider
+
+   Usage:
+   @include mixin-name(wert);
+   ========================================================================== */
+
+// Der Border-Radius
+@mixin border-radius($radius) {
+  -webkit-border-radius: $radius;
+     -moz-border-radius: $radius;
+      -ms-border-radius: $radius;
+          border-radius: $radius;
+}
+
+// Sauberer Text
+// rendering: optimizeLegibility
+@mixin text-rendering($type) {
+    -webkit-text-rendering: $type;
+    -moz-text-rendering: $type;
+    -ms-text-rendering: $type;
+    -o-text-rendering: $type;
+    text-rendering: $type;
+}
+
+// font-smoothing: antialiased
+@mixin font-smoothing($type) {
+    -webkit-font-smoothing: $type;
+    -moz-font-smoothing: $type;
+    -ms-font-smoothing: $type;
+    -o-font-smoothing: $type;
+    font-smoothing: $type;
+}

+ 527 - 0
css/scss/_normalize.scss

@@ -0,0 +1,527 @@
+/*! normalize.css v1.1.3 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+    display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+    font-size: 100%; /* 1 */
+    -ms-text-size-adjust: 100%; /* 2 */
+    -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+    outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.67em;
+    margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+    font-weight: bold;
+}
+
+blockquote {
+    margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+    margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, serif;
+    _font-family: 'courier new', monospace;
+    font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+    quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+    content: '';
+    content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+    font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Lists
+   ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+    padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+    list-style: none;
+    list-style-image: none;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+    border: 0; /* 1 */
+    -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+    margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0;
+    white-space: normal; /* 2 */
+    *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+    font-size: 100%; /* 1 */
+    margin: 0; /* 2 */
+    vertical-align: baseline; /* 3 */
+    *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+    line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+    text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button; /* 2 */
+    cursor: pointer; /* 3 */
+    *overflow: visible;  /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+    cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+    *height: 13px; /* 3 */
+    *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}

+ 382 - 0
css/scss/_site.scss

@@ -0,0 +1,382 @@
+/* ==========================================================================
+   Website Style
+   by Sven Reifschneider
+   ========================================================================== */
+
+body {
+    background: $main-bg;
+}
+
+body {
+    text-align: center;
+    width: 100%;
+}
+
+header {
+    background: $header-bg;
+    width: 100%;
+    color: #fff;
+    font-weight: 300;
+    padding: 1em 0 0 0;
+    
+    a { color: $nav-link-color; transition: all 0.2s; }
+    a:hover { color: $nav-link-color-hover; }
+    
+    h1 {
+        font-size: 1.8em;
+        font-weight: normal;
+        margin: 0.1em 0em;
+        padding: 0;
+    }
+    
+    h2 {
+        font-size: 1.4em;
+        font-weight: normal;
+        margin: 0.1em 0;
+        padding: 0;
+    }
+    
+    p {
+        margin: 0.1em 0 0.2em 0;
+        padding: 0;
+    }
+    
+    .h-left {
+        display: inline-block;
+        width: 48%;
+        text-align: left;
+    }
+    
+    .h-right {
+        display: inline-block;
+        width: 48%;
+        text-align: right;
+        
+        table {
+            float: right;
+            border: none;
+            
+            td {
+                padding: 0.1em 0.4em;
+            }
+        }
+    }
+    
+    nav {
+        display: inline-block;
+        text-align: left;
+        width: 100%;
+        font-size: 1.4em;
+        font-weight: 400;
+        margin: 2em 0 0 0;
+        
+        ul {
+            list-style-type: none;
+            margin: 0;
+            padding: 0;
+        }
+
+        li {
+            display: inline-block;
+            padding: 0.3em 0;
+            margin: 0 0.4em;
+        }
+
+        a {
+            display: block;
+        }
+        
+        select {
+            display: block;
+            font-size: 0.8em;
+            font-weight: 300;
+            border: none;
+            outline: none;
+            -webkit-appearance:none;
+            -moz-appearance:none;
+            appearance:none;
+            cursor:pointer;
+            background: $header-bg;
+            color: #fff;
+        }
+        
+        a {
+            color: $nav-link-color;
+            transition: all 0.2s;
+        }
+        a:hover {
+            color: $nav-link-color-hover;
+        }
+        
+        li.active {
+            border-bottom: 3px solid $active-color;
+            a {
+                color: #fff;
+            }
+        }
+    }
+}
+
+.container {
+    display: inline-block;
+    width: 1500px;
+    
+    .left {
+        display: inline-block;
+        width: 590px;
+        vertical-align: top;
+        margin-right: 1.5em;
+    }
+    
+    .right {
+        display: inline-block;
+        width: 860px;
+    }
+}
+
+.container-fix {
+    display: inline-block;
+    text-align: left;
+    width: 980px;
+}
+
+.card {
+    background: #fff;
+    padding: 0.2em 1.5em 1em 1.5em;
+    margin: 2em 0;
+    box-sizing: border-box;
+    width: 100%;
+    text-align: left;
+    
+-webkit-box-shadow: 0px 0px 6px 0px rgba(201,201,201,1);
+-moz-box-shadow: 0px 0px 6px 0px rgba(201,201,201,1);
+box-shadow: 0px 0px 6px 0px rgba(201,201,201,1);
+    
+    img {
+        max-width: 98%;
+    }
+    
+    h1 {
+        width: 100%;
+        text-align: left;
+        font-size: 1.5em;
+        font-weight: normal;
+        color: $dunkelgrau;
+        padding: 0;
+        border-bottom: 1px solid $hellgrau;
+    }
+    
+    h3 {
+        margin: 0.4em 0;
+        padding: 0;
+        color: $dunkelgrau;
+    }
+    
+    table {
+        border: none;
+        width: 100%;
+        
+        td {
+            margin: 0.2em;
+            padding: 0.2em 0;
+        }
+    }
+    
+    a {
+        color: $normal-link-color;
+        transition: all 0.2s;
+    }
+    a:hover { color: $normal-link-color-hover; }
+}
+
+.cc {
+    text-align: center;
+}
+
+.haelfte {
+    width: 48%;
+    display: inline-block;
+}
+
+footer {
+    width: 100%;
+    background: $header-bg;
+    color: #fff;
+    padding: 1.5em 0;
+    
+    a { color: $footer-link-color; transition: all 0.2s; }
+    a:hover { color: $footer-link-color-hover; }
+}
+
+// Images
+img.space {
+    margin-top: 1.3em;
+}
+
+.graphs {
+    img {
+        margin: 0.4em 0;
+        max-width: 800px;
+    }
+}
+
+img.small {
+    max-width: 550px;
+}
+
+.cpointer {
+    cursor: pointer;
+}
+
+// Table with more padding
+table.tablespacer {
+    td {
+        padding: 0.3em 0;
+    }
+    
+    tr:not(:last-child)  {
+        border-bottom: 1px solid $hellgrau;
+    }
+}
+
+// Custom text colors
+.m-grau { color: #8a8a8a; }
+.m-orange { color: #f7cd35; }
+.m-gruen { color: #6cc99f; }
+.m-rot { color: #e6766b; }
+.m-blau { color: #0ea5e6; }
+
+// ---
+// RESPONSIVE
+// ---
+@media (max-width: 1550px) and (min-width: 1210px) { 
+    .container {
+        width: 1200px!important;
+        
+        .left {
+            width: 450px!important;
+            margin-right: 0.8em!important;
+        }
+        
+        .right {
+            width: 700px!important;
+        }
+    }
+    
+    .graphs {
+        img {
+            margin: 0.3em 0!important;
+            max-width: 100%!important;
+        }
+    }
+    
+    img.small {
+        max-width: 100%!important;
+    }
+    
+}
+
+@media (max-width: 1209px) and (min-width: 1010px) { 
+    .container {
+        width: 920px!important;
+        
+        .left {
+            width: 290px!important;
+            margin-right: 0.8em!important;
+        }
+        
+        .right {
+            width: 580px!important;
+        }
+    }
+    
+    .graphs {
+        img {
+            margin: 0.3em 0!important;
+            max-width: 100%!important;
+        }
+    }
+    
+    img.small {
+        max-width: 100%!important;
+    }
+}
+
+@media (max-width: 1009px) {
+    .container {
+        width: 100%!important;
+        
+        .left {
+            width: 100%!important;
+            margin: 0!important;
+        }
+        
+        .right {
+            width: 100%!important;
+        }
+    }
+    
+    .container-fix {
+        width: 100%;
+    }
+    
+    .graphs {
+        img {
+            margin: 0.2em 0!important;
+            max-width: 100%!important;
+        }
+    }
+    
+    img.small {
+        max-width: 100%!important;
+    }
+    
+    .haelfte {
+        width: 100%!important;
+    }
+    
+    .card {
+        margin: 1em 0;
+    }
+    
+    header {
+        width: 100%;
+        box-sizing: border-box;
+        padding: 0 1.5em;
+
+        .h-left {
+            display: inline-block;
+            width: 100%;
+        }
+
+        .h-right {
+            display: none!important;
+        }
+
+        nav {
+            display: inline-block;
+            width: 100%;
+            font-size: 1.2em;
+            margin: 0.5em 0 0 0;
+
+            ul {
+                list-style-type: none;
+                margin: 0;
+                padding: 0;
+            }
+
+            li {
+                display: block;
+                padding: 0.1em 0;
+                margin: 0;
+            }
+
+            li.active {
+                border-bottom: 3px solid $active-color;
+                a {
+                    color: #fff;
+                }
+            }
+        }
+    }
+}

+ 39 - 0
css/scss/_variables.scss

@@ -0,0 +1,39 @@
+/* ==========================================================================
+   Variables
+   by Sven Reifschneider
+   ========================================================================== */
+
+/*
+ * Colors
+ */
+
+$dunkelblau: #2f3a3e;
+
+$hellgrau: #ebebeb;
+$dunkelgrau: #515151;
+
+$selection-color: #b3d4fc;
+$main-bg: #f3f3f3;
+
+$header-bg: #05c2d8;
+$nav-link-color: #d5f2f5;
+$nav-link-color-hover: #f4feff;
+$active-color: #fff533;
+
+$footer-link-color: #fff533;
+$footer-link-color-hover: #fffcc2;
+
+$normal-link-color: #6cc99f;
+$normal-link-color-hover: #a4e5c8;
+
+$m-grau: #8a8a8a;
+$m-orange: #f7cd35;
+$m-gruen: #6cc99f;
+$m-rot: #e6766b;
+$m-blau: #0ea5e6;
+
+/*
+ * Font
+ */
+
+$fonts: 'Lato', Helvetica, Arial, sans-serif;

+ 290 - 0
css/scss/main.scss

@@ -0,0 +1,290 @@
+/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */
+
+/*
+ * What follows is the result of much research on cross-browser styling.
+ * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
+ * Kroc Camen, and the H5BP dev community and team.
+ */
+
+/*
+ * Sass Guide: http://sass-lang.com/guide
+ */
+
+/* ==========================================================================
+   Includes
+   ========================================================================== */
+
+// Normalize
+@import 'normalize';
+
+// Variables (Colors, metrics, etc.)
+@import 'variables';
+
+// Mixins
+@import 'mixins';
+
+/* ==========================================================================
+   Base styles: opinionated defaults
+   ========================================================================== */
+
+html,
+button,
+input,
+select,
+textarea {
+    color: #222;
+}
+
+html {
+    font-size: 1em;
+    line-height: 1.4;
+    font-family: $fonts;
+	text-align: center;
+    
+    // Text prettify
+    @include text-rendering(optimizeLegibility);
+    @include font-smoothing(antialiased);
+    
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+}
+
+/*
+ * Remove text-shadow in selection highlight: h5bp.com/i
+ * These selection rule sets have to be separate.
+ * Customize the background color to match your design.
+ */
+
+::-moz-selection {
+    background: $selection-color;
+    text-shadow: none;
+}
+
+::selection {
+    background: $selection-color;
+    text-shadow: none;
+}
+
+/*
+ * A better looking default horizontal rule
+ */
+
+hr {
+    display: block;
+    height: 1px;
+    border: 0;
+    border-top: 1px solid #ccc;
+    margin: 1em 0;
+    padding: 0;
+}
+
+/*
+ * Remove the gap between images, videos, audio and canvas and the bottom of
+ * their containers: h5bp.com/i/440
+ */
+audio,
+canvas,
+img,
+video {
+    vertical-align: middle;
+}
+
+/*
+ * Remove default fieldset styles.
+ */
+fieldset {
+    border: 0;
+    margin: 0;
+    padding: 0;
+}
+
+/*
+ * Allow only vertical resizing of textareas.
+ */
+textarea { resize: vertical; }
+
+/* ==========================================================================
+   Website Style
+   ========================================================================== */
+
+// Don't Repeat Myself
+@import 'dry';
+
+// Main-Style
+@import 'site';
+
+/* ==========================================================================
+   Helper classes
+   ========================================================================== */
+
+/*
+ * Image replacement
+ */
+
+.ir {
+    background-color: transparent;
+    border: 0;
+    overflow: hidden;
+    /* IE 6/7 fallback */
+    *text-indent: -9999px;
+}
+
+.ir:before {
+    content: "";
+    display: block;
+    width: 0;
+    height: 150%;
+}
+
+/*
+ * Hide from both screenreaders and browsers: h5bp.com/u
+ */
+.hidden {
+    display: none !important;
+    visibility: hidden;
+}
+
+/*
+ * Hide only visually, but have it available for screenreaders: h5bp.com/v
+ */
+.visuallyhidden {
+    border: 0;
+    clip: rect(0 0 0 0);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+}
+
+/*
+ * Extends the .visuallyhidden class to allow the element to be focusable
+ * when navigated to via the keyboard: h5bp.com/p
+ */
+.visuallyhidden.focusable:active,
+.visuallyhidden.focusable:focus {
+    clip: auto;
+    height: auto;
+    margin: 0;
+    overflow: visible;
+    position: static;
+    width: auto;
+}
+
+/*
+ * Hide visually and from screenreaders, but maintain layout
+ */
+.invisible {
+    visibility: hidden;
+}
+
+/*
+ * Clearfix: contain floats
+ *
+ * For modern browsers
+ * 1. The space content is one way to avoid an Opera bug when the
+ *    `contenteditable` attribute is included anywhere else in the document.
+ *    Otherwise it causes space to appear at the top and bottom of elements
+ *    that receive the `clearfix` class.
+ * 2. The use of `table` rather than `block` is only necessary if using
+ *    `:before` to contain the top-margins of child elements.
+ */
+.clearfix:before,
+.clearfix:after {
+    content: " "; /* 1 */
+    display: table; /* 2 */
+}
+
+.clearfix:after {
+    clear: both;
+}
+
+/*
+ * For IE 6/7 only
+ * Include this rule to trigger hasLayout and contain floats.
+ */
+.clearfix {
+    *zoom: 1;
+}
+
+/* ==========================================================================
+   Media Queries
+   ========================================================================== */
+
+@media only screen and (min-width: 35em) {
+    /* Style adjustments for viewports that meet the condition */
+}
+
+
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid required HTTP connection: h5bp.com/r
+   ========================================================================== */
+
+@media print {
+    * {
+        background: transparent !important;
+        color: #000 !important; /* Black prints faster: h5bp.com/s */
+        box-shadow: none !important;
+        text-shadow: none !important;
+    }
+
+    a,
+    a:visited {
+        text-decoration: underline;
+    }
+
+    a[href]:after {
+        content: " (" attr(href) ")";
+    }
+
+    abbr[title]:after {
+        content: " (" attr(title) ")";
+    }
+
+    /*
+     * Don't show links for images, or javascript/internal links
+     */
+    .ir a:after,
+    a[href^="javascript:"]:after,
+    a[href^="#"]:after {
+        content: "";
+    }
+
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+
+    thead {
+        display: table-header-group; /* h5bp.com/t */
+    }
+
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+
+    img {
+        max-width: 100% !important;
+    }
+
+    @page {
+        margin: 0.5cm;
+    }
+
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+}

BIN
favicon.ico


BIN
icons/CoCoRaHS.png


BIN
icons/cwop.png


BIN
icons/mesowest.png


BIN
icons/wu.png


+ 446 - 0
index.html.tmpl

@@ -0,0 +1,446 @@
+<!DOCTYPE html>
+<html class="no-js">
+    <head itemscope itemtype="http://schema.org/Website">
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta http-equiv="Refresh" content="180">
+        <meta name="description" content="$station.location Weather Station ($Extras.cwop) - weather web site powered by WeeWX">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link rel="profile" href="http://gmpg.org/xfn/11" />
+	#if $Extras.has_key('web_url')
+	<link rel="canonical" href="$Extras.web_url" itemprop="url"/>
+	#end if
+        
+        <title itemprop="name">$station.location ($Extras.cwop) Current Weather Conditions</title>
+        
+        <!-- Open Graph -->
+        <meta property="og:site_name" content="$station.location Weather Station ($Extras.cwop)" />
+	<meta property="og:title" content="Home"/>
+	#if $Extras.has_key('web_url')
+	<meta property="og:url" content="$Extras.web_url"/>
+	#end if
+        <meta property="og:description" content="Current Weather Conditions in $station.location ($Extras.cwop) - weather web site powered by WeeWX" />
+	<meta property="og:type" content="website" />
+
+        <!-- Icons -->
+        <link rel="icon" href="favicon.ico" type="image/png">
+	<link rel="apple-touch-icon" href="touch-icon.png"/>
+        
+        <!-- Styles -->
+        <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
+	<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
+        <link rel="stylesheet" href="css/main.css">
+        
+        <!-- Skripte -->
+        <script src="js/modernizr-2.6.2.min.js"></script>
+        
+    </head>
+    <body>
+        <header>
+            <div class="container-fix" >
+                <div class="h-left" >
+                <h1><i class="fa fa-cloud" ></i> $station.location </h1>
+                <p>$station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2] | $station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2] | $station.altitude | <a href="https://www.google.com/maps/?q=$station.location" target="_blank" ><i class="fa fa-map-marker" ></i> Show on map</a></p>
+                <h2>Current Weather Conditions</h2>
+                <p><i class="fa fa-clock-o" ></i> $current.dateTime $current.dateTime.format("%Z")</p>
+                </div>
+                
+                <div class="h-right" >
+                    <table>
+                        <tr><td><b>Station:</b></td><td>$station.hardware</td></tr>
+                        <tr><td><b>Software:</b></td><td><a href="http://weewx.com/" target="_blank" >WeeWX v$station.version</a></td></tr>
+                        <tr><td><b>Weewx uptime:</b></td><td>$station.uptime</td></tr>
+                        <tr><td><b>Server uptime:</b></td><td>$station.os_uptime</td></tr>
+			<tr><td><b>Station IDs:</b></td><td><a href="http://www.findu.com/cgi-bin/wxpage.cgi?call=$Extras.cwop&last=24" >$Extras.cwop</a> | <a href="http://www.wunderground.com/cgi-bin/findweather/getForecast?query=pws:$Extras.wunderground&MR=1" >$Extras.wunderground</a></td></tr>
+                    </table>
+                </div>
+
+                <nav>
+                    <ul class="topnav" id="myTopnav">
+			<li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars" ></i></a></li>
+                        <li class="active" ><a href="/" >Current</a></li>
+                        <li><a href="week.html" >Week</a></li>
+                        <li><a href="month.html" >Month</a></li>
+                        <li><a href="year.html" >Year</a></li>
+			<li><a href="station.html" >Station</a></li>
+			<li><a href="summary.html" >Summaries</a></li>
+                        <li><a href="RSS/weewx_rss.xml" ><i class="fa fa-rss" ></i></a></li>
+                    </ul>
+                </nav>
+            </div>
+	</header>
+        
+        <div class="main" >
+        <div class="container" >
+            
+            <div class="left" >
+                
+                <div class="card" >
+		    #if $current.rainRate.raw == 0.0
+                    <h1><i class="fa fa-sun-o m-orange" ></i> Current Conditions</h1>
+		    #else if $current.rainRate.raw >= 0.01
+		    <h1><i class="fa fa-umbrella m-blau" ></i> Current Conditions</h1>
+		    #else
+		    <h1><i class="fa fa-sun-o m-orange" ></i> Current Conditions</h1>
+		    #end if
+                    <table class="tablespacer">
+                        <tr><td>Outside Temperature</td><td>$current.outTemp</td></tr>
+                        <tr><td>Wind Chill</td><td>$current.windchill</td></tr>
+                        <tr><td>Heat Index</td><td>$current.heatindex</td></tr>
+                        <tr><td>Dewpoint</td><td>$current.dewpoint</td></tr>
+                        <tr><td>Humidity</td><td>$current.outHumidity</td></tr>
+                        <tr><td>Barometer</td><td>$current.barometer</td></tr>
+                        <tr><td>Barometer Trend ($trend.time_delta.hour.format("%.0f"))</td><td>$trend.barometer</td></tr>
+                        <tr><td>Wind</td><td>$current.windSpeed $current.windDir.ordinal_compass ($current.windDir)</td></tr>
+                        #if $current.windGust.has_data
+			<tr><td>Wind Gust</td><td>$current.windGust $current.windGustDir.ordinal_compass ($current.windGustDir)</td></tr>
+			#end if
+			<tr><td>Rain Rate</td><td>$current.rainRate</td></tr>
+                        <tr><td>Inside Temperature</td><td>$current.inTemp</td></tr>
+			<tr><td>Inside Humidity</td><td>$current.inHumidity</td></tr>
+                        #if $day.extraTemp1.has_data
+                        <tr><td>Pond Temperature</td><td>$current.extraTemp1</td></tr>
+                        #end if
+                        #if $day.UV.has_data
+                        <tr><td>UV</td><td>$current.UV</td></tr>
+                        #end if
+                        #if $day.ET.has_data and $day.ET.sum.raw > 0.0
+                        <tr><td>ET</td><td>$current.ET</td></tr>
+                        #end if
+                        #if $day.radiation.has_data
+                        <tr><td>Solar Radiation</td><td>$current.radiation</td></tr>
+                        #end if
+                    </table>
+                </div>
+
+                <div class="card" >
+                    <h1><i class="fa fa-moon-o m-grau" ></i> Since Midnight</h1>
+                    <table class="tablespacer">
+                        <tr><td>High Temperature</td><td>$day.outTemp.max</td><td>$day.outTemp.maxtime</td></tr>
+                        <tr><td>Low Temperature</td><td>$day.outTemp.min</td><td>$day.outTemp.mintime</td></tr>
+                        <tr><td>High Heat Index</td><td>$day.heatindex.max</td><td>$day.heatindex.maxtime</td></tr>
+                        <tr><td>Low Wind Chill</td><td>$day.windchill.min</td><td>$day.windchill.mintime</td></tr>
+                        <tr><td>High Dewpoint</td><td>$day.dewpoint.max</td><td>$day.dewpoint.maxtime</td></tr>
+                        <tr><td>Low Dewpoint</td><td>$day.dewpoint.min</td><td>$day.dewpoint.mintime</td></tr>
+                        <tr><td>High Humidity</td><td>$day.outHumidity.max</td><td>$day.outHumidity.maxtime</td></tr>
+                        <tr><td>Low Humidity</td><td>$day.outHumidity.min</td><td>$day.outHumidity.mintime</td></tr>
+                        <tr><td>High Barometer</td><td>$day.barometer.max</td><td>$day.barometer.maxtime</td></tr>
+                        <tr><td>Low Barometer</td><td>$day.barometer.min</td><td>$day.barometer.mintime</td></tr>
+                        <tr><td>Today's Rain</td><td>$day.rain.sum</td><td></td></tr>
+                        <tr><td>High Rain Rate</td><td>$day.rainRate.max</td><td>$day.rainRate.maxtime</td></tr>
+                        <tr><td>High Wind</td><td>$day.wind.max $day.wind.gustdir</td><td>$day.wind.maxtime</td></tr>
+                        <tr><td>Average Wind</td><td>$day.wind.avg</td><td></td></tr>
+                        <tr><td>RMS Wind</td><td>$day.wind.rms</td><td></td></tr>
+                        <tr><td>Vector Average Speed</td><td>$day.wind.vecavg</td><td></td></tr>
+                        <tr><td>Vector Average Direction</td><td>$day.wind.vecdir</td><td></td></tr>
+                        <tr><td>High Inside Temperature</td><td>$day.inTemp.max</td><td>$day.inTemp.maxtime</td></tr>
+                        <tr><td>Low Inside Temperature</td><td>$day.inTemp.min</td><td>$day.inTemp.mintime</td></tr>
+                        <tr><td>High Inside Humidity</td><td>$day.inHumidity.max</td><td>$day.inHumidity.maxtime</td></tr>
+                        <tr><td>Low Inside Humidity</td><td>$day.inHumidity.min</td><td>$day.inHumidity.mintime</td></tr>
+			#if $day.extraTemp1.has_data
+                        <tr><td>High Pond Temp</td><td>$day.extraTemp1.max</td><td>$day.extraTemp1.maxtime</td></tr>
+                        <tr><td>Low Pond Temp</td><td>$day.extraTemp1.min</td><td>$day.extraTemp1.mintime</td></tr>
+                        #end if
+                        #if $day.UV.has_data
+                        <tr><td>High UV</td><td>$day.UV.max</td><td>$day.UV.maxtime</td></tr>
+                        <tr><td>Low UV</td><td>$day.UV.min</td><td>$day.UV.mintime</td></tr>
+                        #end if
+                        #if $day.ET.has_data and $day.ET.sum.raw >0.0
+                        <tr><td>High ET</td><td>$day.ET.max</td><td>$day.ET.maxtime</td></tr>
+                        <tr><td>Low ET</td><td>$day.ET.min</td><td>$day.ET.mintime</td></tr>
+                        #end if
+                        #if $day.radiation.has_data
+                        <tr><td>High Radiation</td><td>$day.radiation.max</td><td>$day.radiation.maxtime</td></tr>
+                        <tr><td>Low Radiation</td><td>$day.radiation.min</td><td>$day.radiation.mintime</td></tr>
+                        #end if
+                    </table>
+                </div>
+	
+		<div class="card" >
+		    <!--Leap Year Code --!>
+		    #set $yr = int($day.dateTime.format("%Y"))%4
+		    #if $yr == 0
+			#if $yr % 100 == 0
+				#if $yr % 400 == 0
+		    		    #if $day.dateTime.format("%d-%b") == '29-Feb'
+				    	#set $n = 1461
+				    #else if $day.dateTime.format("%d-%b") >= '01-Mar'
+			            	#set $n = 366
+				    #else
+				    	#set $n = 365
+				    #end if
+				#else
+				    #set $n = 365
+				#end if
+			#else
+				#if $day.dateTime.format("%d-%b") == '29-Feb'
+					#set $n = 1461
+				#else if $day.dateTime.format("%d-%b") >= '01-Mar'
+			            	#set $n = 366
+				#else
+				    	#set $n = 365
+				#end if
+			#end if
+		    #else
+		    	#set $n = 365
+		    #end if
+		    
+		    <h1><i class="fa fa-history" ></i> Last $days_ago($days_ago=$n).dateTime.format("%d-%b (%Y)")</h1>
+		   
+                    <table class="tablespacer">
+                        <tr><td>High Temperature</td><td>$days_ago($days_ago=$n).outTemp.max</td><td>$days_ago($days_ago=$n).outTemp.maxtime</td></tr>
+                        <tr><td>Low Temperature</td><td>$days_ago($days_ago=$n).outTemp.min</td><td>$days_ago($days_ago=$n).outTemp.mintime</td></tr>
+                        <tr><td>High Dewpoint</td><td>$days_ago($days_ago=$n).dewpoint.max</td><td>$days_ago($days_ago=$n).dewpoint.maxtime</td></tr>
+                        <tr><td>Low Dewpoint</td><td>$days_ago($days_ago=$n).dewpoint.min</td><td>$days_ago($days_ago=$n).dewpoint.mintime</td></tr>
+                        <tr><td>High Humidity</td><td>$days_ago($days_ago=$n).outHumidity.max</td><td>$days_ago($days_ago=$n).outHumidity.maxtime</td></tr>
+                        <tr><td>Low Humidity</td><td>$days_ago($days_ago=$n).outHumidity.min</td><td>$days_ago($days_ago=$n).outHumidity.mintime</td></tr>
+                        <tr><td>High Barometer</td><td>$days_ago($days_ago=$n).barometer.max</td><td>$days_ago($days_ago=$n).barometer.maxtime</td></tr>
+                        <tr><td>Low Barometer</td><td>$days_ago($days_ago=$n).barometer.min</td><td>$days_ago($days_ago=$n).barometer.mintime</td></tr>
+                        <tr><td>Rain</td><td>$days_ago($days_ago=$n).rain.sum</td><td></td></tr>
+			<tr><td>High Rain Rate</td><td>$days_ago($days_ago=$n).rainRate.max</td><td>$days_ago($days_ago=$n).rainRate.maxtime</td></tr>
+			<tr><td>High Wind</td><td>$days_ago($days_ago=$n).wind.max $day.wind.gustdir</td><td>$days_ago($days_ago=$n).wind.maxtime</td></tr>
+                        <tr><td>High Inside Temperature</td><td>$days_ago($days_ago=$n).inTemp.max</td><td>$days_ago($days_ago=$n).inTemp.maxtime</td></tr>
+                        <tr><td>Low Inside Temperature</td><td>$days_ago($days_ago=$n).inTemp.min</td><td>$days_ago($days_ago=$n).inTemp.mintime</td></tr>
+                        <tr><td>High Inside Humidity</td><td>$days_ago($days_ago=$n).inHumidity.max</td><td>$days_ago($days_ago=$n).inHumidity.maxtime</td></tr>
+                        <tr><td>Low Inside Humidity</td><td>$days_ago($days_ago=$n).inHumidity.min</td><td>$days_ago($days_ago=$n).inHumidity.mintime</td></tr>
+			#if $day.extraTemp1.has_data
+                        <tr><td>High Pond Temp</td><td>$days_ago($days_ago=$n).extraTemp1.max</td><td>$days_ago($days_ago=$n).extraTemp1.maxtime</td></tr>
+                        <tr><td>Low Pond Temp</td><td>$days_ago($days_ago=$n).extraTemp1.min</td><td>$days_ago($days_ago=$n).extraTemp1.mintime</td></tr>
+                        #end if
+                        #if $days_ago($days_ago=$n).UV.has_data
+                        <tr><td>High UV</td><td>$days_ago($days_ago=$n).UV.max</td><td>$days_ago($days_ago=$n).UV.maxtime</td></tr>
+                        <tr><td>Low UV</td><td>$days_ago($days_ago=$n).UV.min</td><td>$days_ago($days_ago=$n).UV.mintime</td></tr>
+                        #end if
+                        #if $days_ago($days_ago=$n).ET.has_data and $days_ago($days_ago=$n).ET.sum.raw >0.0
+                        <tr><td>High ET</td><td>$days_ago($days_ago=$n).ET.max</td><td>$days_ago($days_ago=$n).ET.maxtime</td></tr>
+                        <tr><td>Low ET</td><td>$days_ago($days_ago=$n).ET.min</td><td>$days_ago($days_ago=$n).ET.mintime</td></tr>
+                        #end if
+                        #if $days_ago($days_ago=$n).radiation.has_data
+                        <tr><td>High Radiation</td><td>$days_ago($days_ago=$n).radiation.max</td><td>$days_ago($days_ago=$n).radiation.maxtime</td></tr>
+                        <tr><td>Low Radiation</td><td>$days_ago($days_ago=$n).radiation.min</td><td>$days_ago($days_ago=$n).radiation.mintime</td></tr>
+                        #end if
+                    </table>
+                </div>
+
+                #if $Extras.has_key('radar_img')
+                <div class="card" >                    
+                    #if $Extras.has_key('radar_url')
+                    <a href="$Extras.radar_url" target="_blank">
+                    #end if
+                    <img src="$Extras.radar_img" alt="Radar" id="radar" class="space small" />
+                    #if $Extras.has_key('radar_url')
+                    </a>
+                    #end if
+                    
+                    <h3>
+                        #if $Extras.has_key('radar_gif')
+                        
+                        <a id="btn1" class="cpointer" >Image / Animation</a>
+                        <script>    
+                            function changeRadar() {
+                                if(document.getElementById("radar").src == "$Extras.radar_img") {
+                                    document.getElementById("radar").src = "$Extras.radar_gif";
+                                } else {
+                                    document.getElementById("radar").src = "$Extras.radar_img";
+                                }
+                            }
+                            
+                            var el = document.getElementById('btn1');
+                            el.onclick = changeRadar;
+                        </script>
+                        #end if
+                    
+                        #if $Extras.has_key('radar_url_alt')
+                        #if $Extras.has_key('radar_url_alt_text')
+                        | <a href="$Extras.radar_url_alt" target="_blank" >$Extras.radar_url_alt_text</a>
+                        #else 
+                        | <a href="$Extras.radar_url_alt" target="_blank" >Second Radar</a>
+                        #end if
+                        #end if
+                    </h3>
+                    
+                </div>
+                #end if
+                
+                #if $Extras.has_key('lightning_map')
+                <div class="card" >
+                    #if $Extras.has_key('lightning_url')
+                    <a href="$Extras.lightning_url" target="_blank">
+                    #end if
+                    <img src="$Extras.lightning_map" alt="Lightning Map" class="space small" />
+                    #if $Extras.has_key('lightning_url')
+                    </a>
+                    #end if
+                </div>
+                #end if
+
+		#if $Extras.has_key('camera')
+		<!-- $Extras.cameratitle -->
+		<!-- $Extras.cameratitle2 -->
+		<div class="card" >
+                    <h1><i class="fa fa-camera" color=#999></i> Local Cameras</h1>
+			<center>
+			<img src="$Extras.camera" alt="camera" id="camera" />
+			<br>
+				#if $Extras.has_key('camera2')
+				<a id="btn2" class="cpointer" >$Extras.cameratitle | $Extras.cameratitle2</a>
+                       		<script>    
+                            	function changeCamera() {
+                                	if(document.getElementById("camera").src == "$Extras.camera") {
+                                	    document.getElementById("camera").src = "$Extras.camera2";
+					  
+                                	} else {
+                                	    document.getElementById("camera").src = "$Extras.camera";
+					    
+                               		}
+                            	}
+                            
+                            	var el = document.getElementById('btn2');
+                            	el.onclick = changeCamera;
+                        	</script>
+				#end if
+			</center>	
+		</div>
+                #end if
+
+            </div>
+            
+            <div class="right" >
+
+                <div class="card" >
+                    <h1><i class="fa fa-star-o m-rot" ></i> Almanac</h1>
+                    #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="haelfte" >
+                        <h3>Sun</h3>
+                        <table>
+                            <tr><td>Start civil twilight:</td><td>$almanac(horizon=-6).sun(use_center=1).rise</td></tr>
+                            <tr><td>Sunrise</td><td>$almanac.sun.rise.string($sun_None)</td></tr>
+                            <tr><td>Transit:</td><td>$almanac.sun.transit</td></tr>
+                            <tr><td>Sunset:</td><td>$almanac.sun.set.string($sun_None)</td></tr>
+                            <tr><td>End civil twilight:</td><td>$almanac(horizon=-6).sun(use_center=1).set</td></tr>
+                            <tr><td>Azimuth:</td><td>$("%.1f&deg;" % $almanac.sun.az)</td></tr>
+                            <tr><td>Altitude:</td><td>$("%.1f&deg;" % $sun_altitude)</td></tr>
+                            <tr><td>Right ascension:</td><td>$("%.1f&deg;" % $almanac.sun.ra)</td></tr>
+                            <tr><td>Declination:</td><td>$("%.1f&deg;" % $almanac.sun.dec)</td></tr>
+                            #if $almanac.next_equinox.raw < $almanac.next_solstice.raw
+                            ## The equinox is before the solstice. Display them in order.
+                            <tr><td>Equinox:</td><td>$almanac.next_equinox</td></tr>
+                            <tr><td>Solstice:</td><td>$almanac.next_solstice</td></tr>
+                            #else
+                            ## The solstice is before the equinox. Display them in order.
+                            <tr><td>Solstice:</td><td>$almanac.next_solstice</td></tr>
+                            <tr><td>Equinox:</td><td>$almanac.next_equinox</td></tr>
+                            #end if
+                        </table>
+                    </div>
+                    <div class="haelfte" >
+                        <h3>Moon</h3>
+                        <table>
+                            <tr><td>Rise:</td><td>$almanac.moon.rise</td></tr>
+                            <tr><td>Transit:</td><td>$almanac.moon.transit</td></tr>
+                            <tr><td>Set:</td><td>$almanac.moon.set</td></tr>
+                            <tr><td>Azimuth:</td><td>$("%.1f&deg;" % $almanac.moon.az)</td></tr>
+                            <tr><td>Altitude:</td><td>$("%.1f&deg;" % $almanac.moon.alt)</td></tr>
+                            <tr><td>Right ascension:</td><td>$("%.1f&deg;" % $almanac.moon.ra)</td></tr>
+                            <tr><td>Declination:</td><td>$("%.1f&deg;" % $almanac.moon.dec)</td></tr>
+                            #if $almanac.next_full_moon.raw < $almanac.next_new_moon.raw
+                            <tr><td>Full moon:</td><td>$almanac.next_full_moon</td></tr>
+                            <tr><td>New moon:</td><td>$almanac.next_new_moon</td></tr>
+                            #else
+                            <tr><td>New moon:</td><td>$almanac.next_new_moon</td></tr>
+                            <tr><td>Full moon:</td><td>$almanac.next_full_moon</td></tr>
+                            #end if
+                            <tr><td>Phase:</td><td>$almanac.moon_phase<br />($almanac.moon_fullness% full)</td></tr>
+                        </table>
+                    </div>
+                    #else
+                    ## No extended almanac information available. Fall back to a simple table.
+                    <table>
+                        <tr><td>Sunrise:</td><td>$almanac.sunrise</td></tr>
+                        <tr><td>Sunset:</td><td>$almanac.sunset</td></tr>
+                        <tr><td>Moon Phase:</td><td>$almanac.moon_phase<br/>($almanac.moon_fullness% full)</td></tr>
+                    </table>
+                    #end if
+                </div>
+                
+                <div class="card cc graphs" >
+                    <h1><i class="fa fa-line-chart m-gruen" ></i> Graphs</h1>
+                    
+                    <img src="daytempdew.png" alt="temperatures" />
+                    <img src="dayrain.png" alt="rain" />
+                    <img src="daywind.png" alt="wind" />
+                    <img src="daywinddir.png" alt="Hi Wind" />
+		    <img src="daywindvec.png" alt="Wind Vector" />
+                    <img src="daytempchill.png" alt="heatchill" />
+		    <img src="daybarometer.png" alt="barometer"/>
+                    <img src="dayinside.png" alt="Inside" />
+		    <img src="dayinhumid.png" alt="Inside Humidity" />
+                    #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
+                    #if $day.extraTemp1.has_data
+                    <img src="daypond.png" alt="Pond Temperatures" />
+                    #end if
+                </div>
+                
+            </div>
+        </div>
+        </div>
+        
+        <footer>
+            <div class="container-fix">
+	    <center>
+		#if $Extras.has_key('you')
+            	<i class="fa fa-pied-piper-pp"> </i><a href=mailto:$Extras.email> $Extras.you</a> 
+            	#end if
+		&sdot;
+	    	Copyright <i class="fa fa-copyright"></i> $latest.dateTime.format("%Y") 
+	   	<br>
+	    	Design by <a href="http://blauesledersofa.de">blaues Ledersofa</a>
+	    	&sdot; 
+            	Powered by<i class="fa fa-cog fa-spin fa-fw" aria-hidden="true"></i><a href="http://weewx.com/" target="_blank">WeeWX</a> and 
+            	<!-- Raspberry Pi icon by Icons8 --> <img src="https://maxcdn.icons8.com/Color/PNG/24/Logos/raspberry_pi-24.png" title="Raspberry Pi" height="18" width="18"> <a href="https://www.raspberrypi.org/" target="_blank"> Raspberry Pi 2 Model B</a>.
+	    </center>
+	    </div>
+        </footer>
+
+        #if $Extras.has_key('googleAnalyticsId')
+        <!-- Google Analytics -->
+        <script>
+            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+            
+            ga('create', '$Extras.googleAnalyticsId', 'auto');
+            ga('send', 'pageview');
+        </script>
+        #end if
+
+<!-- Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon -->
+<script>
+function myFunction() {
+    var x = document.getElementById("myTopnav");
+    if (x.className === "topnav") {
+        x.className += " responsive";
+    } else {
+        x.className = "topnav";
+    }
+}
+</script>
+
+    </body>
+</html>

Fichier diff supprimé car celui-ci est trop grand
+ 3 - 0
js/modernizr-2.6.2.min.js


+ 241 - 0
month.html.tmpl

@@ -0,0 +1,241 @@
+<!DOCTYPE html>
+<html class="no-js">
+    <head itemscope itemtype="http://schema.org/Website">
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta http-equiv="Refresh" content="180">
+        <meta name="description" content="$station.location Weather Station ($Extras.cwop) - weather web site powered by WeeWX">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link rel="profile" href="http://gmpg.org/xfn/11" />
+	#if $Extras.has_key('web_url')
+	<link rel="canonical" href="$Extras.web_url/month.html" itemprop="url"/>
+	#end if
+        
+        <title itemprop="name">$station.location ($Extras.cwop) Monthly Weather Summary</title>
+        
+        <!-- Open Graph -->
+        <meta property="og:site_name" content="$station.location ($Extras.cwop) Monthly Weather Summary" />
+	<meta property="og:title" content="Monthly Weather Summary"/>
+	#if $Extras.has_key('web_url')
+	<meta property="og:url" content="$Extras.web_url/month.html"/>
+	#end if
+        <meta property="og:description" content="Monthly Weather Summary for $station.location ($Extras.cwop) - weather web site powered by WeeWX" />
+	<meta property="og:type" content="website" />
+
+        <!-- Icons -->
+        <link rel="icon" href="favicon.ico" type="image/png">
+	<link rel="apple-touch-icon" href="touch-icon.png"/>
+        
+        <!-- Styles -->
+        <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
+	<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
+        <link rel="stylesheet" href="css/main.css">
+        
+        <!-- Skripte -->
+        <script src="js/modernizr-2.6.2.min.js"></script>
+        
+    </head>
+    <body>
+
+	<header>
+            <div class="container-fix" >
+                <div class="h-left" >
+                <h1><i class="fa fa-cloud" ></i> $station.location </h1>
+                <p>$station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2] | $station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2] | $station.altitude | <a href="https://www.google.com/maps/?q=$station.location" target="_blank" ><i class="fa fa-map-marker" ></i> Show on map</a></p>
+                <h2>Monthly Weather Summary</h2>
+                <p><i class="fa fa-clock-o" ></i> $current.dateTime $current.dateTime.format("%Z")</p>
+                </div>
+                
+                <div class="h-right" >
+                    <table>
+                        <tr><td><b>Station:</b></td><td>$station.hardware</td></tr>
+                        <tr><td><b>Software:</b></td><td><a href="http://weewx.com/" target="_blank" >WeeWX v$station.version</a></td></tr>
+                        <tr><td><b>Weewx uptime:</b></td><td>$station.uptime</td></tr>
+                        <tr><td><b>Server uptime:</b></td><td>$station.os_uptime</td></tr>
+			<tr><td><b>Station IDs:</b></td><td><a href="http://www.findu.com/cgi-bin/wxpage.cgi?call=$Extras.cwop&last=24" >$Extras.cwop</a> | <a href="http://www.wunderground.com/cgi-bin/findweather/getForecast?query=pws:$Extras.wunderground&MR=1" >$Extras.wunderground</a></td></tr>
+                    </table>
+                </div>
+
+                <nav>
+                    <ul class="topnav" id="myTopnav">
+			<li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars" ></i></a></li>
+                        <li><a href="/" >Current</a></li>
+                        <li><a href="week.html" >Week</a></li>
+                        <li class="active"><a href="month.html" >Month</a></li>
+                        <li><a href="year.html" >Year</a></li>
+			<li><a href="station.html" >Station</a></li>
+			<li><a href="summary.html" >Summaries</a></li>
+                        <li><a href="RSS/weewx_rss.xml" ><i class="fa fa-rss" ></i></a></li>
+                    </ul>
+                </nav>
+            </div>
+	</header>
+        
+        <div class="main" >
+        <div class="container" >
+            
+            <div class="left" >
+                
+                <div class="card" >
+                    <h1><i class="fa fa-calendar m-orange" ></i> This Month</h1>
+                    <table class="tablespacer">
+                        <tr><td>High Temperature</td><td>$month.outTemp.max</td><td>$month.outTemp.maxtime</td></tr>
+                        <tr><td>Low Temperature</td><td>$month.outTemp.min</td><td>$month.outTemp.mintime</td></tr>
+                        <tr><td>High Heat Index</td><td>$month.heatindex.max</td><td>$month.heatindex.maxtime</td></tr>
+                        <tr><td>Low Wind Chill</td><td>$month.windchill.min</td><td>$month.windchill.mintime</td></tr>
+                        <tr><td>High Dewpoint</td><td>$month.dewpoint.max</td><td>$month.dewpoint.maxtime</td></tr>
+                        <tr><td>Low Dewpoint</td><td>$month.dewpoint.min</td><td>$month.dewpoint.mintime</td></tr>
+                        <tr><td>High Humidity</td><td>$month.outHumidity.max</td><td>$month.outHumidity.maxtime</td></tr>
+                        <tr><td>Low Humidity</td><td>$month.outHumidity.min</td><td>$month.outHumidity.mintime</td></tr>
+                        <tr><td>High Barometer</td><td>$month.barometer.max</td><td>$month.barometer.maxtime</td></tr>
+                        <tr><td>Low Barometer</td><td>$month.barometer.min</td><td>$month.barometer.mintime</td></tr>
+                        <tr><td>Rain Total</td><td>$month.rain.sum</td><td></td></tr>
+                        <tr><td>High Rain Rate</td><td>$month.rainRate.max</td><td>$month.rainRate.maxtime</td></tr>
+                        <tr><td>High Wind Speed</td><td>$month.wind.max $month.wind.gustdir</td><td>$month.wind.maxtime</td></tr>
+                        <tr><td>Average Wind</td><td>$month.wind.avg</td><td></td></tr>
+                        <tr><td>RMS Wind</td><td>$month.wind.rms</td><td></td></tr>
+                        <tr><td>Vector Average Speed</td><td>$month.wind.vecavg</td><td></td></tr>
+                        <tr><td>Vector Average Direction</td><td>$month.wind.vecdir</td><td></td></tr>
+                        <tr><td>High Inside Temperature</td><td>$month.inTemp.max</td><td>$month.inTemp.maxtime</td></tr>
+                        <tr><td>Low Inside Temperature</td><td>$month.inTemp.min</td><td>$month.inTemp.mintime</td></tr>
+                        #if $month.extraTemp1.has_data
+                        <tr><td>High Pond Temp</td><td>$month.extraTemp1.max</td><td>$month.extraTemp1.maxtime</td></tr>
+                        <tr><td>Low Pond Temp</td><td>$month.extraTemp1.min</td><td>$month.extraTemp1.mintime</td></tr>
+                        #end if
+                        #if $month.UV.has_data
+                        <tr><td>High UV</td><td>$month.UV.max</td><td>$month.UV.maxtime</td></tr>
+                        <tr><td>Low UV</td><td>$month.UV.min</td><td>$month.UV.mintime</td></tr>
+                        #end if
+                        #if $month.ET.has_data and $month.ET.sum.raw >0.0
+                        <tr><td>High ET</td><td>$month.ET.max</td><td>$month.ET.maxtime</td></tr>
+                        <tr><td>Low ET</td><td>$month.ET.min</td><td>$month.ET.mintime</td></tr>
+                        #end if
+                        #if $month.radiation.has_data
+                        <tr><td>High Radiation</td><td>$month.radiation.max</td><td>$month.radiation.maxtime</td></tr>
+                        <tr><td>Low Radiation</td><td>$month.radiation.min</td><td>$month.radiation.mintime</td></tr>
+                        #end if
+                    </table>
+                </div>
+
+                <div class="card" >
+                    <h1><i class="fa fa-calendar-o m-rot" ></i> Calendar Year</h1>
+                    <table class="tablespacer">
+                        <tr><td>High Temperature</td><td>$year.outTemp.max</td><td>$year.outTemp.maxtime</td></tr>
+                        <tr><td>Low Temperature</td><td>$year.outTemp.min</td><td>$year.outTemp.mintime</td></tr>
+                        <tr><td>High Heat Index</td><td>$year.heatindex.max</td><td>$year.heatindex.maxtime</td></tr>
+                        <tr><td>Low Wind Chill</td><td>$year.windchill.min</td><td>$year.windchill.mintime</td></tr>
+                        <tr><td>High Dewpoint</td><td>$year.dewpoint.max</td><td>$year.dewpoint.maxtime</td></tr>
+                        <tr><td>Low Dewpoint</td><td>$year.dewpoint.min</td><td>$year.dewpoint.mintime</td></tr>
+                        <tr><td>High Humidity</td><td>$year.outHumidity.max</td><td>$year.outHumidity.maxtime</td></tr>
+                        <tr><td>Low Humidity</td><td>$year.outHumidity.min</td><td>$year.outHumidity.mintime</td></tr>
+                        <tr><td>High Barometer</td><td>$year.barometer.max</td><td>$year.barometer.maxtime</td></tr>
+                        <tr><td>Low Barometer</td><td>$year.barometer.min</td><td>$year.barometer.mintime</td></tr>
+                        <tr><td>Rain Total</td><td>$year.rain.sum</td><td></td></tr>
+                        <tr><td>High Rain Rate</td><td>$year.rainRate.max</td><td>$year.rainRate.maxtime</td></tr>
+                        <tr><td>High Wind Speed</td><td>$year.wind.max $year.wind.gustdir</td><td>$year.wind.maxtime</td></tr>
+                        <tr><td>Average Wind</td><td>$year.wind.avg</td><td></td></tr>
+                        <tr><td>RMS Wind</td><td>$year.wind.rms</td><td></td></tr>
+                        <tr><td>Vector Average Speed</td><td>$year.wind.vecavg</td><td></td></tr>
+                        <tr><td>Vector Average Direction</td><td>$year.wind.vecdir</td><td></td></tr>
+                        <tr><td>High Inside Temperature</td><td>$year.inTemp.max</td><td>$year.inTemp.maxtime</td></tr>
+                        <tr><td>Low Inside Temperature</td><td>$year.inTemp.min</td><td>$year.inTemp.mintime</td></tr>
+                        #if $year.extraTemp1.has_data
+                        <tr><td>High Pond Temp</td><td>$year.extraTemp1.max</td><td>$year.extraTemp1.maxtime</td></tr>
+                        <tr><td>Low Pond Temp</td><td>$year.extraTemp1.min</td><td>$year.extraTemp1.mintime</td></tr>
+                        #end if
+                        #if $year.UV.has_data
+                        <tr><td>High UV</td><td>$year.UV.max</td><td>$year.UV.maxtime</td></tr>
+                        <tr><td>Low UV</td><td>$year.UV.min</td><td>$year.UV.mintime</td></tr>
+                        #end if
+                        #if $year.ET.has_data and $year.ET.sum.raw >0.0
+                        <tr><td>High ET</td><td>$year.ET.max</td><td>$year.ET.maxtime</td></tr>
+                        <tr><td>Low ET</td><td>$year.ET.min</td><td>$year.ET.mintime</td></tr>
+                        #end if
+                        #if $year.radiation.has_data
+                        <tr><td>High Radiation</td><td>$year.radiation.max</td><td>$year.radiation.maxtime</td></tr>
+                        <tr><td>Low Radiation</td><td>$year.radiation.min</td><td>$year.radiation.mintime</td></tr>
+                        #end if
+                    </table>
+                </div>
+
+            </div>
+            
+            <div class="right" >
+
+                <div class="card cc graphs" >
+                    <h1><i class="fa fa-line-chart m-gruen" ></i> Monthly Statistics and Plots</h1>
+                    
+                    <img src="monthtempdew.png" alt="temperatures" />
+                    <img src="monthrain.png" alt="rain" />
+                    <img src="monthwind.png" alt="wind" />
+                    <img src="monthwinddir.png" alt="Hi Wind" />
+                    <img src="monthwindvec.png" alt="Wind Vector" />
+		    <img src="monthtempchill.png" alt="heatchill" />
+		    <img src="monthbarometer.png" alt="barometer"/>
+		    <img src="monthinside.png" alt="Inside" />
+		    <img src="monthinhumid.png" alt="Inside Humidity" />
+                    #if $month.UV.has_data
+                    <img src="monthuv.png" alt="UV Index" />
+                    #end if
+                    #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
+                    #if $month.extraTemp1.has_data
+                    <img src="monthpond.png" alt="Pond Temperatures" />
+                    #end if
+                </div>
+                
+            </div>
+        </div>
+        </div>
+        
+       <footer>
+            <div class="container-fix">
+	    <center>
+		#if $Extras.has_key('you')
+            	<i class="fa fa-pied-piper-pp"> </i><a href=mailto:$Extras.email> $Extras.you</a> 
+            	#end if
+		&sdot;
+	    	Copyright <i class="fa fa-copyright"></i> $latest.dateTime.format("%Y") 
+	   	<br>
+	    	Design by <a href="http://blauesledersofa.de">blaues Ledersofa</a>
+	    	&sdot; 
+            	Powered by<i class="fa fa-cog fa-spin fa-fw" aria-hidden="true"></i><a href="http://weewx.com/" target="_blank">WeeWX</a> and 
+            	<!-- Raspberry Pi icon by Icons8 --> <img src="https://maxcdn.icons8.com/Color/PNG/24/Logos/raspberry_pi-24.png" title="Raspberry Pi" height="18" width="18"> <a href="https://www.raspberrypi.org/" target="_blank"> Raspberry Pi 2 Model B</a>.
+	    </center>
+	    </div>
+        </footer>
+
+        #if $Extras.has_key('googleAnalyticsId')
+        <!-- Google Analytics -->
+        <script>
+            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+            
+            ga('create', '$Extras.googleAnalyticsId', 'auto');
+            ga('send', 'pageview');
+        </script>
+        #end if
+
+<!-- Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon -->
+<script>
+function myFunction() {
+    var x = document.getElementById("myTopnav");
+    if (x.className === "topnav") {
+        x.className += " responsive";
+    } else {
+        x.className = "topnav";
+    }
+}
+</script>
+
+    </body>
+</html>

+ 4 - 0
robots.txt

@@ -0,0 +1,4 @@
+# robotstxt.org/
+
+User-agent: *
+Disallow:

+ 783 - 0
skin.conf

@@ -0,0 +1,783 @@
+###############################################################################
+# $Id: skin.conf 2749 2014-11-29 18:15:24Z tkeffer $                          #
+# Copyright (c) 2010 Tom Keffer <tkeffer@gmail.com>                           #
+# SOFA SKIN (c) 2015 Sven Reifschneider <hello@blauesledersofa.de>            #
+# SOFA SKIN CONFIGURATION FILE                                                #
+###############################################################################
+
+[Extras]
+    # Template Extras
+ 
+    # Website URL
+    web_url = http://www.cw9009.x10host.com
+
+    # Current radar image
+    radar_img = http://www.findu.com/cgi-bin/radar-find.cgi?call=CW9009
+    # Current radar animation (starts on radar_img hover)
+    radar_gif = http://radar.weather.gov/lite/N0R/CBX_loop.gif
+    # Hyperlink for radar
+    radar_url = http://radar.weather.gov/radar.php?rid=cbx&product=N0R&overlay=11101111&loop=no
+
+    # Lightning map and hyperlink
+    #lightning_map = http://images.lightningmaps.org/blitzortung/america/index.php?map=usa&period=0.25
+    #lightning_url = http://www.lightningmaps.org/realtime 
+
+    # URL for another radar (for example full Europe, Frankfurt center)
+    radar_url_alt = http://radar.weather.gov/Conus/Loop/pacnorthwest_loop.gif
+    radar_url_alt_text = "Pacific Northwest Radar"
+
+    # You. Only shows up in footer
+    you = "JDS"
+    emailname = "Josh@cw9009.x10host.com"
+    email = "Josh@cw9009.x10host.com"
+    
+    # Camera link
+    #cameratitle = "(Chinden/Linder)"
+    #camera = http://www.achdidaho.org/ATIS/CCTV/CCTV_583.jpg?157
+    cameratitle = "(Ten Mile/Linder)"
+    camera = http://www.achdidaho.org/ATIS/CCTV/CCTV_664.jpg?25
+    cameratitle2 = "(Chinden/Long Lake)"
+    camera2 = http://www.achdidaho.org/ATIS/CCTV/CCTV_662.jpg?674
+    
+    # Google Analytics ID
+    #googleAnalyticsId = UA-12345678-1
+
+    #CWOP
+    #used in all the templates pages
+    cwop = CW9009
+
+    #mesowest
+    mwest = C9009
+
+    #weather underground
+    wunderground = KIDMERID44
+
+    #CoCoRaHS
+    #crahs =
+    
+###############################################################################
+
+[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     = mbar                  # 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                = %.0f
+        hour               = %.1f
+        inHg               = %.3f
+        inch               = %.2f
+        inch_per_hour      = %.2f
+        km_per_hour        = %.0f
+        km_per_hour2       = %.1f
+        knot               = %.0f
+        knot2              = %.1f
+        mbar               = %.0f
+        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           = %.0f
+        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/h"
+        degree_C          = " C"
+        degree_F          = " F"
+        degree_compass    = " °"
+        foot              = " feet"
+        hPa               = " hPa"
+        inHg              = " inHg"
+        inch              = " in"
+        inch_per_hour     = " in/h"
+        km_per_hour       = " km/h"
+        km_per_hour2      = " km/h"
+        knot              = " knoten"
+        knot2             = " knoten"
+        mbar              = " mbar"
+        meter             = " meter"
+        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/h"
+        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 Customizing 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
+    
+        # This one is probably specific to my station!
+        extraTemp1     = Pond Temperature
+
+###############################################################################
+
+[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
+
+    search_list_extensions = user.historygenerator.MyXSearch
+
+    [[SummaryByMonth]]
+        # Reports that summarize "by month"
+        [[[NOAA_month]]]
+            encoding = utf8
+            template = NOAA/NOAA-YYYY-MM.txt.tmpl
+
+    [[SummaryByYear]]
+        # Reports that summarize "by year"
+        [[[NOAA_year]]]
+            encoding = utf8
+            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
+
+    [[HTMLFiles]]
+        #
+        # Pages that do not require time interval specific tags
+        #
+
+	[[[station]]]
+	    # All time station records
+            template = station.html.tmpl
+
+	[[[summary]]]
+	    # All time station records
+            template = summary.html.tmpl
+
+	[[[textphp]]]
+	    # All time station records
+            template = text.php.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 = css/main.css, js/*, .htaccess, 404.html, robots.txt, touch-icon.png
+
+###############################################################################
+
+[HistoryReport]
+
+    #
+    # Settings for the HTML month/year colour coded summary table generator
+    #
+
+    # minvalues, maxvalues and colours should contain the same number of elements.
+    #
+    # For example,  the [min_temp] example below, if the minimum temperature measured in
+    # a month is between -50 and -10 (degC) then the cell will be shaded in html colour code #0029E5.
+    #
+
+    # Default is temperature scale
+    #minvalues = -50, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35
+    minvalues = -10, -5, 0, 5, 10, 15, 25, 35, 45, 50, 60
+    #maxvalues =  -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 60
+    maxvalues =  -5, 0, 10, 20, 35, 45, 60, 75, 90, 100, 120
+    colours =   "#0029E5", "#0186E7", "#02E3EA", "#04EC97", "#05EF3D2", "#2BF207", "#8AF408", "#E9F70A", "#F9A90B", "#FC4D0D", "#FF0F2D"
+    monthnames = Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
+
+    # The Raspberry Pi typically takes 15+ seconds to calculate all the summaries with a few years of weather date.
+    # refresh_interval is how often in minutes the tables are calculated.
+    refresh_interval = 1440
+
+    [[min_temp]]
+        obs_type = outTemp                 # obs_type can be any weewx reading
+        aggregate_type = min               # Any of these: 'sum', 'count', 'avg', 'max', 'min'
+
+    # Can also use these aggregate_types:  'max_ge', 'max_le', 'min_le', 'sum_ge' to count days where observation
+    # is ge: greater of equalto, or le: lessthan or equal to a threshold value
+    # To specify this threshold, use: aggregate_threshold = [value], [units]
+    # e.g Specify temperature threshold of 20C:
+    #
+    # aggregate_threshold = 20, degree_C
+
+    [[max_temp]]
+        obs_type = outTemp
+        aggregate_type = max
+
+    [[avg_temp]]
+        obs_type = outTemp
+        aggregate_type = avg
+
+    [[avg_htemp]]
+        obs_type = inTemp
+        aggregate_type = avg
+
+    [[temp_count]]
+        obs_type = outTemp
+        aggregate_type = sum_ge
+	aggregate_threshold = -50, degree_F
+	#minvalues =  0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20
+	#maxvalues =  0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 32
+
+    [[rain]]
+        obs_type = rain
+        aggregate_type = sum_ge
+        aggregate_threshold = 0.02, inch
+        minvalues = 0, 3, 6, 9, 12, 18   # Override default temperature colour scheme with rain specific scale
+        maxvalues = 6, 12, 18, 24, 30, 50
+	colours = "#E0F8E0", "#A9F5A9", "#58FA58", "#2EFE2E", "#01DF01", "#01DF01"
+    
+    [[rain_sum]]
+	obs_type = rain
+        aggregate_type = sum
+        #aggregate_threshold = 0.02, inch
+        #minvalues = 0.00, 0.02, 0.05, 0.10, 0.20, 0.30   # Override default temperature colour scheme with rain specific scale
+        #maxvalues = 0.06, 0.10, 0.25, 0.50, 1.00, 1.50
+	colours = "#E0F8E0", "#A9F5A9", "#58FA58", "#2EFE2E", "#01DF01", "#01DF01"
+
+    [[rain_max]]
+	obs_type = rain
+        aggregate_type = maxsum
+        #aggregate_threshold = 0.02, inch
+        #minvalues = 0.00, 0.02, 0.05, 0.10, 0.20, 0.30   # Override default temperature colour scheme with rain specific scale
+        #maxvalues = 0.06, 0.10, 0.25, 0.50, 1.00, 1.50
+	colours = "#E0F8E0", "#A9F5A9", "#58FA58", "#2EFE2E", "#01DF01", "#01DF01"
+
+    #[[wind_max]]
+	#obs_type = wind
+        #aggregate_type = max
+        #aggregate_threshold = 0.02, inch
+        #minvalues = 0.00, 0.02, 0.05, 0.10, 0.20, 0.30   # Override default temperature colour scheme with rain specific scale
+        #maxvalues = 20, 30, 40, 60, 80, 100
+	#colours = "#E0F8E0", "#A9F5A9", "#58FA58", "#2EFE2E", "#01DF01", "#01DF01"
+
+    #[[max_htemp]]
+        #obs_type = inTemp
+        #aggregate_type = max
+	#maxvalues =  40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90
+
+    #[[min_htemp]]
+        #obs_type = inTemp
+        #aggregate_type = min
+	#maxvalues =  40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90
+
+    [[NOAA]]
+        #
+        # Creates a table of links to NOAA reports with the tag $NOAA_table
+        # Comment out [[NOAATable]] if you do not need this.
+        #
+
+        # Where to find the NOAA files and how they are named
+        # Uses Python datetime convention (docs.python.org/2/library/datetime.html):
+        # %Y = YYYY, %y = YY, %m = MM, etc.
+        #
+        year_filename = NOAA/NOAA-%Y.txt
+        month_filename = NOAA/NOAA-%Y-%m.txt
+
+###############################################################################
+
+[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 = 800
+    image_height = 300
+    image_background_color = 0xffffff
+    
+    chart_background_color = 0xffffff
+    chart_gridline_color = 0xdbdbdb
+    
+    top_label_font_path = /usr/share/fonts/truetype/droid/DroidSans-Bold.ttf
+    top_label_font_size = 16
+    
+    unit_label_font_path = /usr/share/fonts/truetype/droid/DroidSans-Bold.ttf
+    unit_label_font_size = 12
+    unit_label_font_color = 0x000000
+    
+    bottom_label_font_path = /usr/share/fonts/truetype/droid/DroidSans-Bold.ttf
+    bottom_label_font_size = 12
+    bottom_label_font_color = 0x000000
+    
+    axis_label_font_path = /usr/share/fonts/truetype/droid/DroidSans-Bold.ttf
+    axis_label_font_size = 12
+    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/droid/DroidSans-Bold.ttf
+    rose_label_font_size  = 12
+    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
+    bar_gap_fraction  = 0.20
+
+    # 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. 0xBBGGRR
+    # Sofa Skin blue orange:
+    # Night: #f0fdff  Day: #fefff0  Edge: #f0fffb
+    daynight_day_color   = 0xf0fffe
+    daynight_night_color = 0xfffdf0
+    daynight_edge_color  = 0xfbfff0
+
+    ## 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]]]]
+        
+        [[[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]]]]
+        
+        [[[daypond]]]
+            yscale = None, None, 0.5
+            [[[[extraTemp1]]]]
+        
+        [[[daywind]]]
+            [[[[windSpeed]]]]
+            [[[[windGust]]]]
+        
+        [[[daywinddir]]]
+            # Hardwire in the y-axis scale for wind direction
+            yscale = 0.0, 360.0, 45.0
+            [[[[windDir]]]]
+    
+        [[[daywindvec]]]
+            [[[[windvec]]]]
+                plot_type = vector
+
+	[[[daytempchill]]]
+            [[[[windchill]]]]
+            [[[[heatindex]]]]
+	
+	[[[dayinside]]]
+            [[[[inTemp]]]]
+
+	[[[dayinhumid]]]
+            [[[[inHumidity]]]]
+
+        [[[dayradiation]]]
+            [[[[radiation]]]]
+
+        [[[dayuv]]]
+            yscale = 0, 16, 1
+            [[[[UV]]]]
+            
+    [[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]]]]
+        
+        [[[weekrain]]]
+            yscale = None, None, 0.02
+            plot_type = bar
+            [[[[rain]]]]
+                aggregate_type = sum
+                aggregate_interval = 86400
+                label = Rain (daily total)
+        
+        [[[weekpond]]]
+            yscale = None, None, 0.5
+            [[[[extraTemp1]]]]
+        
+        [[[weekrx]]]
+            [[[[rxCheckPercent]]]]
+        
+        [[[weekwind]]]
+            [[[[windSpeed]]]]
+            [[[[windGust]]]]
+                aggregate_type = max
+        
+        [[[weekwinddir]]]
+            yscale = 0.0, 360.0, 45.0
+            [[[[windDir]]]]
+    
+        [[[weekwindvec]]]
+            [[[[windvec]]]]
+                plot_type = vector
+
+	[[[weektempchill]]]
+            [[[[windchill]]]]
+            [[[[heatindex]]]]
+
+        [[[weekinside]]]
+            [[[[inTemp]]]]
+
+	[[[weekinhumid]]]
+            [[[[inHumidity]]]]
+
+        [[[weekradiation]]]
+            [[[[radiation]]]]
+
+        [[[weekuv]]]
+            yscale = 0, 16, 1
+            [[[[UV]]]]
+
+    [[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]]]]
+        
+        [[[monthrain]]]
+            yscale = None, None, 0.02
+            plot_type = bar
+            [[[[rain]]]]
+                aggregate_type = sum
+                aggregate_interval = 86400
+                label = Rain (daily total)
+        
+        [[[monthpond]]]
+            yscale = None, None, 0.5
+            [[[[extraTemp1]]]]
+        
+        [[[monthrx]]]
+            [[[[rxCheckPercent]]]]
+        
+        [[[monthwind]]]
+            [[[[windSpeed]]]]
+            [[[[windGust]]]]
+                aggregate_type = max
+        
+        [[[monthwinddir]]]
+            yscale = 0.0, 360.0, 45.0
+            [[[[windDir]]]]
+    
+        [[[monthwindvec]]]
+            [[[[windvec]]]]
+                plot_type = vector
+
+	[[[monthtempchill]]]
+            [[[[windchill]]]]
+            [[[[heatindex]]]]
+
+	[[[monthinside]]]
+            [[[[inTemp]]]]
+
+	[[[monthinhumid]]]
+            [[[[inHumidity]]]]
+
+        [[[monthradiation]]]
+            [[[[radiation]]]]
+            
+        [[[monthuv]]]
+            yscale = 0, 16, 1
+            [[[[UV]]]]
+
+    [[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]]]]
+		label = Average Daily Temperature
+            [[[[dewpoint]]]]
+		label = and Dewpoint
+        
+        # Daily high/lows:
+        [[[yearhilow]]]
+            [[[[hi]]]]
+                data_type = outTemp
+                aggregate_type = max
+                label = High
+            [[[[low]]]]
+                data_type = outTemp
+                aggregate_type = min
+                label = and Low Temperature
+                
+        [[[yearwind]]]
+            [[[[windSpeed]]]]
+            [[[[windGust]]]]
+                aggregate_type = max
+        
+        [[[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)
+        
+        [[[yearpond]]]
+            yscale = None, None, 0.5
+            [[[[extraTemp1]]]]
+        
+        [[[yearrx]]]
+            [[[[rxCheckPercent]]]]
+        
+        [[[yearwinddir]]]
+            yscale = 0.0, 360.0, 45.0
+            [[[[windDir]]]]
+
+        [[[yearwindvec]]]
+            [[[[windvec]]]]
+                plot_type = vector
+
+	[[[yeartempchill]]]
+            [[[[windchill]]]]
+            [[[[heatindex]]]]
+
+	[[[yearinside]]]
+            [[[[inTemp]]]]
+
+	[[[yearinhumid]]]
+            [[[[inHumidity]]]]
+
+        [[[yearradiation]]]
+            [[[[radiation]]]]
+            
+        [[[yearuv]]]
+            yscale = 0, 16, 1
+            [[[[UV]]]]
+
+###############################################################################
+
+#
+# The list of generators that are to be run:
+#
+[Generators]
+        generator_list = weewx.cheetahgenerator.CheetahGenerator, weewx.imagegenerator.ImageGenerator, weewx.reportengine.CopyGenerator

+ 232 - 0
station.html.tmpl

@@ -0,0 +1,232 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head itemscope itemtype="http://schema.org/Website">
+    <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta http-equiv="Refresh" content="180">
+        <meta name="description" content="$station.location Weather Station ($Extras.cwop) - weather web site powered by WeeWX">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link rel="profile" href="http://gmpg.org/xfn/11" />
+	#if $Extras.has_key('web_url')
+	<link rel="canonical" href="$Extras.web_url/station.html" itemprop="url"/>
+	#end if
+        
+        <title itemprop="name">$station.location ($Extras.cwop) Station Information</title>
+        
+        <!-- Open Graph -->
+        <meta property="og:site_name" content="$station.location ($Extras.cwop) Station Information" />
+	<meta property="og:title" content="Station Information"/>
+	#if $Extras.has_key('web_url')
+	<meta property="og:url" content="$Extras.web_url/station.html"/>
+	#end if
+        <meta property="og:description" content="Station Information for $station.location ($Extras.cwop) - weather web site powered by WeeWX" />
+	<meta property="og:type" content="website" />
+
+        <!-- Icons -->
+        <link rel="icon" href="favicon.ico" type="image/png">
+	<link rel="apple-touch-icon" href="touch-icon.png"/>
+        
+        <!-- Styles -->
+        <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
+	<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
+        <link rel="stylesheet" href="css/main.css">
+        
+        <!-- Skripte -->
+        <script src="js/modernizr-2.6.2.min.js"></script>
+        
+  </head>
+
+  <body>
+    	<header>
+            <div class="container-fix" >
+                <div class="h-left" >
+                <h1><i class="fa fa-cloud" ></i> $station.location </h1>
+                <p>$station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2] | $station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2] | $station.altitude | <a href="https://www.google.com/maps/?q=$station.location" target="_blank" ><i class="fa fa-map-marker" ></i> Show on map</a></p>
+                <h2>Station Information</h2>
+                <p><i class="fa fa-clock-o" ></i> $current.dateTime $current.dateTime.format("%Z")</p>
+                </div>
+                
+                <div class="h-right" >
+                    <table>
+                        <tr><td><b>Station:</b></td><td>$station.hardware</td></tr>
+                        <tr><td><b>Software:</b></td><td><a href="http://weewx.com/" target="_blank" >WeeWX v$station.version</a></td></tr>
+                        <tr><td><b>Weewx uptime:</b></td><td>$station.uptime</td></tr>
+                        <tr><td><b>Server uptime:</b></td><td>$station.os_uptime</td></tr>
+			<tr><td><b>Station IDs:</b></td><td><a href="http://www.findu.com/cgi-bin/wxpage.cgi?call=$Extras.cwop&last=24" >$Extras.cwop</a> | <a href="http://www.wunderground.com/cgi-bin/findweather/getForecast?query=pws:$Extras.wunderground&MR=1" >$Extras.wunderground</a></td></tr>
+		    </table>
+                </div>
+
+                <nav>
+                    <ul class="topnav" id="myTopnav">
+			<li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars" ></i></a></li>
+                        <li><a href="/" >Current</a></li>
+                        <li><a href="week.html" >Week</a></li>
+                        <li><a href="month.html" >Month</a></li>
+                        <li><a href="year.html" >Year</a></li>
+			<li class="active"><a href="station.html" >Station</a></li>
+			<li><a href="summary.html" >Summaries</a></li>
+                        <li><a href="RSS/weewx_rss.xml" ><i class="fa fa-rss" ></i> </a></li>
+                    </ul>
+                </nav>
+            </div>
+	</header>
+    
+    <!-- Main container -->  
+     <div class="main" >
+        <div class="container" >
+            
+	   <div class="left" >
+
+		<div class="card" >
+                    <h1><i class="fa fa-info-circle" ></i> Station Information</h1>
+		    The station is a <a href="http://www.lacrossetechnology.com/2316/">La Crosse WS-2316</a> located about 3 miles north-northwest of 
+                    Meridian, Idaho in the Kelly Creek Subdivision. The station has been running since November 7, 2007. A <a href="https://www.raspberrypi.org/" target="_blank" >Raspberry Pi 2 Model B<!-- Raspberry Pi icon by Icons8 --> <img src="https://maxcdn.icons8.com/Color/PNG/24/Logos/raspberry_pi-24.png" title="Raspberry Pi" height="18" width="18"></a> running 
+                    <a href="http://weewx.com/" target="_blank" >WeeWX v$station.version</a> processes the data which is sent to <a href="http://www.wxqa.com/" target="_blank" >CWOP</a> and <a href="http://www.wunderground.com/" target="_blank" >Weather Underground</a> in addition 
+                    to this web site. Data is sent every 10 minutes.
+		    <br><br>
+		    Latitude: $station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2] 
+		    <br>
+		    Longitude: $station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2]
+		    <br>
+		    Elevation: $station.altitude		    
+		    <br>
+		    <table class="tablespacer">
+		    	<tr><td colspan="3"><br>Data is also available from:</td></tr>
+			<tr><td><center><a href="http://www.findu.com/cgi-bin/wxpage.cgi?call=$Extras.cwop&last=24" ><img src="icons/cwop.png" title="CWOP" alt="cwop" /><br>$Extras.cwop</a></center></td>
+			    #if $Extras.has_key('wunderground')
+			    <td><center><a href="http://www.wunderground.com/cgi-bin/findweather/getForecast?query=pws:$Extras.wunderground&MR=1" ><img src="icons/wu.png" title="Weather Underground" alt="$Extras.wunderground" /><br>$Extras.wunderground</a></center></td>
+			    #end if
+			    #if $Extras.has_key('mwest')
+			    <td><center><a href="http://mesowest.utah.edu/cgi-bin/droman/meso_base_dyn.cgi?stn=$Extras.mwest&unit=0&timetype=LOCAL" ><img src="icons/mesowest.png" height="84" width="84" title=Mesowest" alt="$Extras.mwest" /><br>$Extras.mwest</a></center></td>
+   			    #end if
+			    #if $Extras.has_key('crahs') 
+			    <td><center><a href="" ><img src="icons/CoCoRaHS.png" height="84" width="84" title="CoCoRaHS" alt="CoCoRaHS" /><br>$Extras.crahs</a></center></td>
+			    #end if
+			</tr>
+		    </table>
+		</div>
+
+		<div class="card" >
+                    <h1><i class="fa fa-code"></i> Site Code</h1>
+		    This web site uses Sofaskin for WeeWx, designed by Sven at <a href="http://neoground.com/projects/weewx/">Neoground</a>. Sofaskin is a 
+                    custom skin model from Google's Material Design that uses <a href="getbootstrap.com">Bootstrap</a> to display the weather data. 
+                    I made a variety of functional changes to the 
+		    original Sofaskin code which is available on <a href="">GitHub</a>. My Sofaskin-CW9009 skin 
+		    needs an additional python script (historygenerator.py) which was adapted from another 
+		    skin, <a href="http://www.dajda.net/about.html">Dajda.net</a>, to generate the history tables.
+		    The code for the web page skins and python script is available from the web sites below. 
+			<br><br>
+			Sofaskin from Neoground: 
+			<br>
+			<i class="fa fa-info-circle"> </i><a href="http://neoground.com/projects/weewx/"> http://neoground.com/projects/weewx/</a> 
+			<br><br>
+			Sofaskin-CW9009: 
+			<br><i class="fa fa-github"> </i> I will added the code to GitHub before January 2017!
+			<br><br> 
+			Dajda Skin (historygenerator.py): 
+			<br>
+			<i class="fa fa-info-circle"></i> <a href="http://www.dajda.net/about.html">http://www.dajda.net/about.html</a> 
+			<br>
+			<i class="fa fa-github"></i> <a href="http://github.com/brewster76/fuzzy-archer">http://github.com/brewster76/fuzzy-archer</a> 
+			<br><br>
+
+			Questions? Send them to <a href=mailto:josh@cw9009.x10host.com>josh@cw9009.x10host.com</a>
+			<br>
+			
+		</div>
+
+
+		<div class="card" >
+                    <h1><i class="fa fa-server m-rot"></i> Status</h1>
+			
+		    <table>
+                        <tr><td><b>WeeWX uptime:</b></td><td>$station.uptime</td></tr>
+                        <tr><td><b>Server uptime:</b></td><td>$station.os_uptime</td></tr>
+		    </table>
+		</div>
+		
+	   </div>
+
+	   <div class="right" >
+
+		<div class="card" >
+                    <h1><i class="fa fa-history m-gruen" ></i> Station History</h1>
+			<table class="tablespacer">
+				<tr><td>01/23/2016</td></tr>
+				<tr><td>Moved temperature/humidity sensor to the front of the house (north facing) under eaves.</td></tr>	
+			</table>
+			<table class="tablespacer">
+				<tr><td><br>12/31/2015</td></tr>
+				<tr><td>Changed hardware from PC to Raspberry Pi 2 Model B. Changed software from HeavyWeather to WeeWX 3.3.1. </td></tr>
+		  	</table> 
+
+			<table class="tablespacer">	
+				<tr><td><br>09/18/2009</td></tr>
+				<tr><td>Attached the wind sensor to the west side of the roof. The sensor is about a foot above the roof. Temperatures sensor was attached under the northwest corner eaves.</td></tr>
+                    	</table>
+			<img src="photo/IMG_0925.JPG" alt="photo" class="space small" />
+
+			<table class="tablespacer">
+				<tr><td><br>08/24/2008</td></tr>
+				<tr><td>Moved station to the southwest corner of the property. Sensors about 5 feet above ground. Wind obstruction from trees and house. Temperature sensor partially shielded. </td></tr>
+		    	</table>	
+			<img src="photo/IMG_5374.jpg" alt="photo" class="space small" />
+
+			<table class="tablespacer">
+				<tr><td><br>11/07/2007</td></tr>
+				<tr><td>Station established in the backyard (south facing) next to the fence.</td></tr>
+			</table>
+			<img src="photo/IMG_4957.jpg" alt="photo" class="space small" />
+				
+		</div>
+                
+	   </div>
+
+        </div>
+        </div>
+        
+        <footer>
+            <div class="container-fix">
+	    <center>
+		#if $Extras.has_key('you')
+            	<i class="fa fa-pied-piper-pp"> </i><a href=mailto:$Extras.email> $Extras.you</a> 
+            	#end if
+		&sdot;
+	    	Copyright <i class="fa fa-copyright"></i> $latest.dateTime.format("%Y") 
+	   	<br>
+	    	Design by <a href="http://blauesledersofa.de">blaues Ledersofa</a>
+	    	&sdot; 
+            	Powered by<i class="fa fa-cog fa-spin fa-fw" aria-hidden="true"></i><a href="http://weewx.com/" target="_blank">WeeWX</a> and 
+            	<!-- Raspberry Pi icon by Icons8 --> <img src="https://maxcdn.icons8.com/Color/PNG/24/Logos/raspberry_pi-24.png" title="Raspberry Pi" height="18" width="18"> <a href="https://www.raspberrypi.org/" target="_blank"> Raspberry Pi 2 Model B</a>.
+	    </center>
+	    </div>
+        </footer>
+
+        #if $Extras.has_key('googleAnalyticsId')
+        <!-- Google Analytics -->
+        <script>
+            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+            
+            ga('create', '$Extras.googleAnalyticsId', 'auto');
+            ga('send', 'pageview');
+        </script>
+        #end if
+
+<!-- Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon -->
+<script>
+function myFunction() {
+    var x = document.getElementById("myTopnav");
+    if (x.className === "topnav") {
+        x.className += " responsive";
+    } else {
+        x.className = "topnav";
+    }
+}
+</script>
+
+    </body>
+</html>
+

+ 186 - 0
summary.html.tmpl

@@ -0,0 +1,186 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head itemscope itemtype="http://schema.org/Website">
+    <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta http-equiv="Refresh" Content="180">
+        <meta name="description" content="$station.location Weather Station ($Extras.cwop) - weather web site powered by WeeWX">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link rel="profile" href="http://gmpg.org/xfn/11" />
+	#if $Extras.has_key('web_url')
+	<link rel="canonical" href="$Extras.web_url/summary.html" itemprop="url"/>
+	#end if
+        
+        <title itemprop="name">$station.location ($Extras.cwop) Weather Summaries</title>
+        
+        <!-- Open Graph -->
+        <meta property="og:site_name" content="$station.location ($Extras.cwop) Summaries and Records" />
+	<meta property="og:title" content="Summaries and Records"/>
+	#if $Extras.has_key('web_url')
+	<meta property="og:url" content="$Extras.web_url/summary.html"/>
+	#end if
+        <meta property="og:description" content="Summaries and Records for $station.location ($Extras.cwop) - weather web site powered by WeeWX" />
+	<meta property="og:type" content="website" /> 
+
+        <!-- Icons -->
+        <link rel="icon" href="favicon.ico" type="image/png">
+	<link rel="apple-touch-icon" href="touch-icon.png"/>
+        
+        <!-- Styles -->
+        <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
+	<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
+        <link rel="stylesheet" href="css/main.css">
+        
+        <!-- Skripte -->
+        <script src="js/modernizr-2.6.2.min.js"></script>
+        
+  </head>
+
+  <body>
+    <!-- Menu navbar -->
+    <header>
+            <div class="container-fix" >
+                <div class="h-left" >
+                <h1><i class="fa fa-cloud" ></i> $station.location </h1>
+                <p>$station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2] | $station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2] | $station.altitude | <a href="https://www.google.com/maps/?q=$station.location" target="_blank" ><i class="fa fa-map-marker" ></i> Show on map</a></p>
+                <h2>Summaries and Records</h2>
+                <p><i class="fa fa-clock-o" ></i> $current.dateTime $current.dateTime.format("%Z")</p>
+                </div>
+                
+                <div class="h-right" >
+                    <table>
+                        <tr><td><b>Station:</b></td><td>$station.hardware</td></tr>
+                        <tr><td><b>Software:</b></td><td><a href="http://weewx.com/" target="_blank" >WeeWX v$station.version</a></td></tr>
+                        <tr><td><b>Weewx uptime:</b></td><td>$station.uptime</td></tr>
+                        <tr><td><b>Server uptime:</b></td><td>$station.os_uptime</td></tr>
+			<tr><td><b>Station IDs:</b></td><td><a href="http://www.findu.com/cgi-bin/wxpage.cgi?call=$Extras.cwop&last=24" >$Extras.cwop</a> | <a href="http://www.wunderground.com/cgi-bin/findweather/getForecast?query=pws:$Extras.wunderground&MR=1" >$Extras.wunderground</a></td></tr>
+                    </table>
+                </div>
+
+                <nav>
+                    <ul class="topnav" id="myTopnav">
+			<li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars" ></i></a></li>
+                        <li><a href="/" >Current</a></li>
+                        <li><a href="week.html" >Week</a></li>
+                        <li><a href="month.html" >Month</a></li>
+                        <li><a href="year.html" >Year</a></li>
+			<li><a href="station.html" >Station</a></li>
+			<li class="active" ><a href="summary.html" >Summaries</a></li>
+                        <li><a href="RSS/weewx_rss.xml" ><i class="fa fa-rss" ></i></a></li>
+                    </ul>
+                </nav>
+            </div>
+     </header>
+    <!-- Main container -->  
+     <div class="main" >
+        <div class="container" >
+	    <div class="left" >
+
+		<div class="card" >
+                    <h1><i class="fa fa-bolt m-orange" ></i> All Time Records (Since Nov. 2007)</h1>
+                    <table class="tablespacer">
+			<tr><td colspan="3">Outside Temperatures</td></tr>
+			<tr><td>Max</td><td>$alltime.outTemp.max</td><td>$alltime.outTemp.maxtime</td></tr>
+			<tr><td>Min</td><td>$alltime.outTemp.min</td><td>$alltime.outTemp.mintime</td></tr>
+		    	<tr><td>Min Max</td><td>$alltime.outTemp.minmax</td><td>$alltime.outTemp.minmaxtime</td></tr>
+			<tr><td>Max Min</td><td>$alltime.outTemp.maxmin</td><td>$alltime.outTemp.maxmintime</td></tr>
+			<tr><td colspan="3"><br>Dewpoint</td></tr>
+			<tr><td>Max</td><td>$alltime.dewpoint.max</td><td>$alltime.dewpoint.maxtime</td></tr>
+			<tr><td>Min</td><td>$alltime.dewpoint.min</td><td>$alltime.dewpoint.mintime</td></tr>
+			<tr><td colspan="3"><br>Precipitation</td></tr>
+			<tr><td>Max</td><td>$alltime.rain.maxsum</td><td>$alltime.rain.maxsumtime.format("%m/%d/%Y")</td></tr>
+            		<tr><td>Max Rain Rate</td><td>$alltime.rainRate.max</td><td>$alltime.rainRate.maxtime</td></tr>
+			<tr><td colspan="3"><br>Barometer</td></tr>
+			<tr><td>Max</td><td>$alltime.barometer.max</td><td>$alltime.barometer.maxtime</td></tr>
+			<tr><td>Min</td><td>$alltime.barometer.min</td><td>$alltime.barometer.mintime</td></tr>
+			<tr><td colspan="3"><br>Wind Speed</td></tr>
+			<tr><td>Max</td><td>$alltime.wind.max</td><td>$alltime.wind.maxtime</td></tr>
+            		<tr><td colspan="3"><br>House Temperatures</td></tr>
+			<tr><td>Max</td><td>$alltime.inTemp.max</td><td>$alltime.inTemp.maxtime</td></tr>
+			<tr><td>Min</td><td>$alltime.inTemp.min</td><td>$alltime.inTemp.mintime</td></tr>
+			<tr><td colspan="3"><br>House Humidity</td></tr>
+			<tr><td>Max</td><td>$alltime.inHumidity.max</td><td>$alltime.inHumidity.maxtime</td></tr>
+			<tr><td>Min</td><td>$alltime.inHumidity.min</td><td>$alltime.inHumidity.mintime</td></tr>
+                    </table>
+                </div>
+
+		<div class="card" id="tablefix">
+                    <h1><i class="fa fa-table m-grau" ></i> Number of Days with Observations</h1>
+                    	$temp_count_table
+                </div>
+
+	   </div>
+
+	   <div class="right" >
+		<div class="card" id="tablefix">
+                    <h1><i class="fa fa-archive" ></i> Monthly Reports</h1>
+                   	$NOAA_table
+                </div>
+
+		<div class="card" id="tablefix">
+                    <h1><i class="fa fa-thermometer-half" ></i> Average Temperature by Month</h1>
+                    	$avg_temp_table
+                </div>
+		
+		<div class="card" id="tablefix">
+                    <h1><i class="fa fa-umbrella m-blau" ></i> Total Monthly Rainfall </h1>
+                    	$rain_sum_table
+                </div>
+
+		<div class="card" id="tablefix">
+                    <h1><i class="fa fa-umbrella m-blau" ></i> Number of Days it Rained (>=0.02")</h1>
+                    	$rain_table
+                </div>
+
+		<div class="card" id="tablefix">
+                    <h1><i class="fa fa-thermometer-half m-rot" ></i> Average House Temperature by Month</h1>
+                    	$avg_htemp_table
+                </div>
+	   </div>
+        </div>
+        </div>
+        
+        <footer>
+            <div class="container-fix">
+	    <center>
+		#if $Extras.has_key('you')
+            	<i class="fa fa-pied-piper-pp"> </i><a href=mailto:$Extras.email> $Extras.you</a> 
+            	#end if
+		&sdot;
+	    	Copyright <i class="fa fa-copyright"></i> $latest.dateTime.format("%Y") 
+	   	<br>
+	    	Design by <a href="http://blauesledersofa.de">blaues Ledersofa</a>
+	    	&sdot; 
+            	Powered by<i class="fa fa-cog fa-spin fa-fw" aria-hidden="true"></i><a href="http://weewx.com/" target="_blank">WeeWX</a> and 
+            	<!-- Raspberry Pi icon by Icons8 --> <img src="https://maxcdn.icons8.com/Color/PNG/24/Logos/raspberry_pi-24.png" title="Raspberry Pi" height="18" width="18"> <a href="https://www.raspberrypi.org/" target="_blank"> Raspberry Pi 2 Model B</a>.
+	    </center>
+	    </div>
+        </footer>
+
+        #if $Extras.has_key('googleAnalyticsId')
+        <!-- Google Analytics -->
+        <script>
+            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+            
+            ga('create', '$Extras.googleAnalyticsId', 'auto');
+            ga('send', 'pageview');
+        </script>
+        #end if
+
+	<!-- Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon -->
+	<script>
+		function myFunction() {
+    			var x = document.getElementById("myTopnav");
+    			if (x.className === "topnav") {
+    			    x.className += " responsive";
+    			} else {
+    			    x.className = "topnav";
+    			}
+		}	
+	</script>
+    </body>
+</html>
+

+ 166 - 0
text.php.tmpl

@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head itemscope itemtype="http://schema.org/Website">
+
+<?php
+//Gets file name from url
+
+if(empty(\$_REQUEST["report"])) { 
+     //if empty then grab the latest years report
+     \$year = date("Y");
+     \$report = "NOAA/NOAA-".\$year.".txt";
+  } else {  
+     \$report = filter_var(\$_REQUEST["report"],FILTER_SANITIZE_URL);
+}
+
+//Get labels for meta and page titles
+\$labels = split("[-.]", \$report);
+\$count = count(\$labels);
+
+if (\$count == 3){
+	\$title = \$labels[1];
+}
+
+if (\$count == 4){
+	\$title = date("F Y", mktime(0, 0, 0, \$labels[2], 1, \$labels[1]));
+}
+?>
+
+    <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta http-equiv="Refresh" content="180">
+        <meta name="description" content="$station.location Weather Station ($Extras.cwop) - weather web site powered by WeeWX">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link rel="profile" href="http://gmpg.org/xfn/11" />
+	#if $Extras.has_key('web_url')
+	<link rel="canonical" href="$Extras.web_url/summary.html" itemprop="name"/>
+	#end if   
+<?php        
+        echo"<title itemprop="name">Northwest Meridian, Idaho $Extras.cwop Climate Summary for \$title </title>";
+?>
+        <!-- Open Graph -->
+        <meta property="og:site_name" content="$station.location Summaries and Records" />
+	<meta property="og:title" content="Climate Summaries"/>
+	#if $Extras.has_key('web_url')
+	<meta property="og:url" content="$Extras.web_url/summary.html"/>
+	#end if
+        <meta property="og:description" content="Climate Summaries for $station.location - weather web site powered by WeeWX" />
+	<meta property="og:type" content="website" />
+
+        <!-- Icons -->
+        <link rel="icon" href="favicon.ico" type="image/png">
+	<link rel="apple-touch-icon" href="touch-icon.png"/>
+        
+        <!-- Styles -->
+        <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
+	<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
+        <link rel="stylesheet" href="css/main.css">
+        
+        <!-- Skripte -->
+        <script src="js/modernizr-2.6.2.min.js"></script>
+        
+  </head>
+
+  <body>
+    <!-- Menu navbar -->
+    <header>
+            <div class="container-fix" >
+                <div class="h-left" >
+                <h1><i class="fa fa-cloud" ></i> $station.location </h1>
+                <p>$station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2] | $station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2] | $station.altitude | <a href="https://www.google.com/maps/?q=$station.location" target="_blank" ><i class="fa fa-map-marker" ></i> Show on map</a></p>
+<?php
+          echo "<h2>\$title Climate Summary</h2>";
+?>
+                <p><i class="fa fa-clock-o" ></i> $current.dateTime $current.dateTime.format("%Z")</p>
+                </div>
+                
+                <div class="h-right" >
+                    <table>
+                        <tr><td><b>Station:</b></td><td>$station.hardware</td></tr>
+                        <tr><td><b>Software:</b></td><td><a href="http://weewx.com/" target="_blank" >WeeWX v$station.version</a></td></tr>
+                        <tr><td><b>Weewx uptime:</b></td><td>$station.uptime</td></tr>
+                        <tr><td><b>Server uptime:</b></td><td>$station.os_uptime</td></tr>
+			<tr><td><b>Station IDs:</b></td><td><a href="http://www.findu.com/cgi-bin/wxpage.cgi?call=$Extras.cwop&last=24" >$Extras.cwop</a> | <a href="http://www.wunderground.com/cgi-bin/findweather/getForecast?query=pws:$Extras.wunderground&MR=1" >$Extras.wunderground</a></td></tr>
+                    </table>
+                </div>
+
+                <nav>
+                    <ul class="topnav" id="myTopnav">
+			<li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars" ></i></a></li>
+                        <li><a href="index.html" >Current</a></li>
+                        <li><a href="week.html" >Week</a></li>
+                        <li><a href="month.html" >Month</a></li>
+                        <li><a href="year.html" >Year</a></li>
+			<li><a href="station.html" >Station</a></li>
+			<li class="active" ><a href="summary.html" >Summaries</a></li>
+                        <li><a href="RSS/weewx_rss.xml" ><i class="fa fa-rss" ></i></a></li>
+                    </ul>
+                </nav>
+            </div>
+     </header>
+    <!-- Main container -->  
+     <div class="main" >
+        <div class="container" >
+	    <div class="card" id="tablefix">
+
+<?php
+		//\$myreportname = "NOAA/".\$report;
+
+    		if(file_exists(\$report)){
+			echo "<p>";
+			echo "<PRE>";
+      			echo file_get_contents(\$report);
+			echo "</PRE>";
+			echo "</p>";
+    		}
+?>  
+
+            </div>   
+
+        </div>
+    </div>
+        
+        <footer>
+            <div class="container-fix">
+	    <center>
+		#if $Extras.has_key('you')
+            	<i class="fa fa-pied-piper-pp"> </i><a href=mailto:$Extras.email> $Extras.you</a> 
+            	#end if
+		&sdot;
+	    	Copyright <i class="fa fa-copyright"></i> $latest.dateTime.format("%Y") 
+	   	<br>
+	    	Design by <a href="http://blauesledersofa.de">blaues Ledersofa</a>
+	    	&sdot; 
+            	Powered by<i class="fa fa-cog fa-spin fa-fw" aria-hidden="true"></i><a href="http://weewx.com/" target="_blank">WeeWX</a> and 
+            	<!-- Raspberry Pi icon by Icons8 --> <img src="https://maxcdn.icons8.com/Color/PNG/24/Logos/raspberry_pi-24.png" title="Raspberry Pi" height="18" width="18"> <a href="https://www.raspberrypi.org/" target="_blank"> Raspberry Pi 2 Model B</a>.
+	    </center>
+	    </div>
+        </footer>
+
+        #if $Extras.has_key('googleAnalyticsId')
+        <!-- Google Analytics -->
+        <script>
+            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+            
+            ga('create', '$Extras.googleAnalyticsId', 'auto');
+            ga('send', 'pageview');
+        </script>
+        #end if
+
+<!-- Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon -->
+	<script>
+		function myFunction() {
+    			var x = document.getElementById("myTopnav");
+    			if (x.className === "topnav") {
+       			 	x.className += " responsive";
+    			} else {
+        			x.className = "topnav";
+    			}
+		}
+	</script>
+    </body>
+</html>
+

BIN
touch-icon.png


+ 283 - 0
week.html.tmpl

@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html class="no-js">
+    <head itemscope itemtype="http://schema.org/Website">
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta http-equiv="Refresh" content="180">
+        <meta name="description" content="$station.location Weather Station ($Extras.cwop) - weather web site powered by WeeWX">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link rel="profile" href="http://gmpg.org/xfn/11" />
+	#if $Extras.has_key('web_url')
+	<link rel="canonical" href="$Extras.web_url/week.html" itemprop="url"/>
+	#end if
+        
+        <title itemprop="name">$station.location Weekly Weather Summary</title>
+        
+        <!-- Open Graph -->
+        <meta property="og:site_name" content="$station.location ($Extras.cwop) Weekly Weather Summary" />
+	<meta property="og:title" content="Weekly Weather Summary"/>
+	#if $Extras.has_key('web_url')
+	<meta property="og:url" content="$Extras.web_url/week.html"/>
+	#end if
+        <meta property="og:description" content="Weekly Weather Summary for $station.location ($Extras.cwop) - weather web site powered by WeeWX" />
+	<meta property="og:type" content="website" />
+ 	
+        <!-- Icons -->
+        <link rel="icon" href="favicon.ico" type="image/png">
+	<link rel="apple-touch-icon" href="touch-icon.png"/>
+        
+        <!-- Styles -->
+        <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
+		<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
+        <link rel="stylesheet" href="css/main.css">
+        
+        <!-- Skripte -->
+        <script src="js/modernizr-2.6.2.min.js"></script>
+        
+    </head>
+    <body>
+        <header>
+            <div class="container-fix" >
+                <div class="h-left" >
+                <h1><i class="fa fa-cloud" ></i> $station.location </h1>
+                <p>$station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2] | $station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2] | $station.altitude | <a href="https://www.google.com/maps/?q=$station.location" target="_blank" ><i class="fa fa-map-marker" ></i> Show on map</a></p>
+                <h2>Weekly Weather Summary</h2>
+                <p><i class="fa fa-clock-o" ></i> $current.dateTime $current.dateTime.format("%Z")</p>
+                </div>
+                
+                <div class="h-right" >
+                    <table>
+                        <tr><td><b>Station:</b></td><td>$station.hardware</td></tr>
+                        <tr><td><b>Software:</b></td><td><a href="http://weewx.com/" target="_blank" >WeeWX v$station.version</a></td></tr>
+                        <tr><td><b>Weewx uptime:</b></td><td>$station.uptime</td></tr>
+                        <tr><td><b>Server uptime:</b></td><td>$station.os_uptime</td></tr>
+			<tr><td><b>Station IDs:</b></td><td><a href="http://www.findu.com/cgi-bin/wxpage.cgi?call=$Extras.cwop&last=24" >$Extras.cwop</a> | <a href="http://www.wunderground.com/cgi-bin/findweather/getForecast?query=pws:$Extras.wunderground&MR=1" >$Extras.wunderground</a></td></tr>
+                    </table>
+                </div>
+
+                <nav>
+                    <ul class="topnav" id="myTopnav">
+			<li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars" ></i></a></li>
+                        <li><a href="/" >Current</a></li>
+                        <li class="active" ><a href="week.html" >Week</a></li>
+                        <li><a href="month.html" >Month</a></li>
+                        <li><a href="year.html" >Year</a></li>
+			<li><a href="station.html" >Station</a></li>
+			<li><a href="summary.html" >Summaries</a></li>
+                        <li><a href="RSS/weewx_rss.xml" ><i class="fa fa-rss" ></i></a></li>
+                    </ul>
+                </nav>
+            </div>
+        </header>
+        
+        <div class="main" >
+        <div class="container" >
+            
+            <div class="left" >
+                
+                <div class="card" >
+                    <h1><i class="fa fa-cloud m-grau" ></i> This Week</h1>
+                    <table class="tablespacer">
+                        <tr><td>High Temperature</td><td>$week.outTemp.max</td><td>$week.outTemp.maxtime</td></tr>
+                        <tr><td>Low Temperature</td><td>$week.outTemp.min</td><td>$week.outTemp.mintime</td></tr>
+                        <tr><td>High Heat Index</td><td>$week.heatindex.max</td><td>$week.heatindex.maxtime</td></tr>
+                        <tr><td>Low Wind Chill</td><td>$week.windchill.min</td><td>$week.windchill.mintime</td></tr>
+                        <tr><td>High Dewpoint</td><td>$week.dewpoint.max</td><td>$week.dewpoint.maxtime</td></tr>
+                        <tr><td>Low Dewpoint</td><td>$week.dewpoint.min</td><td>$week.dewpoint.mintime</td></tr>
+                        <tr><td>High Humidity</td><td>$week.outHumidity.max</td><td>$week.outHumidity.maxtime</td></tr>
+                        <tr><td>Low Humidity</td><td>$week.outHumidity.min</td><td>$week.outHumidity.mintime</td></tr>
+                        <tr><td>High Barometer</td><td>$week.barometer.max</td><td>$week.barometer.maxtime</td></tr>
+                        <tr><td>Low Barometer</td><td>$week.barometer.min</td><td>$week.barometer.mintime</td></tr>
+                        <tr><td>Rain Total</td><td>$week.rain.sum</td><td></td></tr>
+                        <tr><td>High Rain Rate</td><td>$week.rainRate.max</td><td>$week.rainRate.maxtime</td></tr>
+                        <tr><td>High Wind Speed</td><td>$week.wind.max $week.wind.gustdir</td><td>$week.wind.maxtime</td></tr>
+                        <tr><td>Average Wind</td><td>$week.wind.avg</td><td></td></tr>
+                        <tr><td>RMS Wind</td><td>$week.wind.rms</td><td></td></tr>
+                        <tr><td>Vector Average Speed</td><td>$week.wind.vecavg</td><td></td></tr>
+                        <tr><td>Vector Average Direction</td><td>$week.wind.vecdir</td><td></td></tr>
+                        <tr><td>High Inside Temperature</td><td>$week.inTemp.max</td><td>$week.inTemp.maxtime</td></tr>
+                        <tr><td>Low Inside Temperature</td><td>$week.inTemp.min</td><td>$week.inTemp.mintime</td></tr>
+                        #if $week.extraTemp1.has_data
+                        <tr><td>High Pond Temp</td><td>$week.extraTemp1.max</td><td>$week.extraTemp1.maxtime</td></tr>
+                        <tr><td>Low Pond Temp</td><td>$week.extraTemp1.min</td><td>$week.extraTemp1.mintime</td></tr>
+                        #end if
+                        #if $week.UV.has_data
+                        <tr><td>High UV</td><td>$week.UV.max</td><td>$week.UV.maxtime</td></tr>
+                        <tr><td>Low UV</td><td>$week.UV.min</td><td>$week.UV.mintime</td></tr>
+                        #end if
+                        #if $week.ET.has_data and $week.ET.sum.raw >0.0
+                        <tr><td>High ET</td><td>$week.ET.max</td><td>$week.ET.maxtime</td></tr>
+                        <tr><td>Low ET</td><td>$week.ET.min</td><td>$week.ET.mintime</td></tr>
+                        #end if
+                        #if $week.radiation.has_data
+                        <tr><td>High Radiation</td><td>$week.radiation.max</td><td>$week.radiation.maxtime</td></tr>
+                        <tr><td>Low Radiation</td><td>$week.radiation.min</td><td>$week.radiation.mintime</td></tr>
+                        #end if
+                    </table>
+                </div>
+
+		<div class="card" >
+                    <h1><i class="fa fa-calendar m-orange" ></i> Yesterday ($yesterday.dateTime.format("%d-%b")) </h1>
+                    <table class="tablespacer">
+                        <tr><td>High Temperature</td><td>$yesterday.outTemp.max</td><td>$yesterday.outTemp.maxtime</td></tr>
+                        <tr><td>Low Temperature</td><td>$yesterday.outTemp.min</td><td>$yesterday.outTemp.mintime</td></tr>
+                        #if $yesterday.heatindex.max.raw >79.0
+			<tr><td>High Heat Index</td><td>$yesterday.heatindex.max</td><td>$yesterday.heatindex.maxtime</td></tr>
+                        #end if
+			#if $yesterday.windchill.min <10
+			<tr><td>Low Wind Chill</td><td>$yesterday.windchill.min</td><td>$yesterday.windchill.mintime</td></tr>
+                        #end if
+			<tr><td>High Dewpoint</td><td>$yesterday.dewpoint.max</td><td>$yesterday.dewpoint.maxtime</td></tr>
+                        <tr><td>Low Dewpoint</td><td>$yesterday.dewpoint.min</td><td>$yesterday.dewpoint.mintime</td></tr>
+                        <tr><td>High Humidity</td><td>$yesterday.outHumidity.max</td><td>$yesterday.outHumidity.maxtime</td></tr>
+                        <tr><td>Low Humidity</td><td>$yesterday.outHumidity.min</td><td>$yesterday.outHumidity.mintime</td></tr>
+                        <tr><td>High Barometer</td><td>$yesterday.barometer.max</td><td>$yesterday.barometer.maxtime</td></tr>
+                        <tr><td>Low Barometer</td><td>$yesterday.barometer.min</td><td>$yesterday.barometer.mintime</td></tr>
+                        <tr><td>Rain</td><td>$yesterday.rain.sum</td><td></td></tr>
+                        <tr><td>High Rain Rate</td><td>$yesterday.rainRate.max</td><td>$yesterday.rainRate.maxtime</td></tr>
+                        <tr><td>High Wind</td><td>$yesterday.wind.max $day.wind.gustdir</td><td>$yesterday.wind.maxtime</td></tr>
+                        <tr><td>Average Wind</td><td>$yesterday.wind.avg</td><td></td></tr>          
+                        <tr><td>Vector Average Direction</td><td>$yesterday.wind.vecdir</td><td></td></tr>
+                        <tr><td>High Inside Temperature</td><td>$yesterday.inTemp.max</td><td>$yesterday.inTemp.maxtime</td></tr>
+                        <tr><td>Low Inside Temperature</td><td>$yesterday.inTemp.min</td><td>$yesterday.inTemp.mintime</td></tr>
+                        #if $day.extraTemp1.has_data
+                        <tr><td>High Pond Temp</td><td>$yesterday.extraTemp1.max</td><td>$yesterday.extraTemp1.maxtime</td></tr>
+                        <tr><td>Low Pond Temp</td><td>$yesterday.extraTemp1.min</td><td>$yesterday.extraTemp1.mintime</td></tr>
+                        #end if
+                        #if $yesterday.UV.has_data
+                        <tr><td>High UV</td><td>$yesterday.UV.max</td><td>$yesterday.UV.maxtime</td></tr>
+                        <tr><td>Low UV</td><td>$yesterday.UV.min</td><td>$yesterday.UV.mintime</td></tr>
+                        #end if
+                        #if $yesterday.ET.has_data and $yesterday.ET.sum.raw >0.0
+                        <tr><td>High ET</td><td>$yesterday.ET.max</td><td>$yesterday.ET.maxtime</td></tr>
+                        <tr><td>Low ET</td><td>$yesterday.ET.min</td><td>$yesterday.ET.mintime</td></tr>
+                        #end if
+                        #if $day.radiation.has_data
+                        <tr><td>High Radiation</td><td>$yesterday.radiation.max</td><td>$yesterday.radiation.maxtime</td></tr>
+                        <tr><td>Low Radiation</td><td>$yesterday.radiation.min</td><td>$yesterday.radiation.mintime</td></tr>
+                        #end if
+                    </table>
+                </div>
+
+                <div class="card" >
+                    <h1><i class="fa fa-calendar m-orange" ></i> This Month</h1>
+                    <table class="tablespacer">
+                        <tr><td>High Temperature</td><td>$month.outTemp.max</td><td>$month.outTemp.maxtime</td></tr>
+                        <tr><td>Low Temperature</td><td>$month.outTemp.min</td><td>$month.outTemp.mintime</td></tr>
+                        <tr><td>High Heat Index</td><td>$month.heatindex.max</td><td>$month.heatindex.maxtime</td></tr>
+                        <tr><td>Low Wind Chill</td><td>$month.windchill.min</td><td>$month.windchill.mintime</td></tr>
+                        <tr><td>High Dewpoint</td><td>$month.dewpoint.max</td><td>$month.dewpoint.maxtime</td></tr>
+                        <tr><td>Low Dewpoint</td><td>$month.dewpoint.min</td><td>$month.dewpoint.mintime</td></tr>
+                        <tr><td>High Humidity</td><td>$month.outHumidity.max</td><td>$month.outHumidity.maxtime</td></tr>
+                        <tr><td>Low Humidity</td><td>$month.outHumidity.min</td><td>$month.outHumidity.mintime</td></tr>
+                        <tr><td>High Barometer</td><td>$month.barometer.max</td><td>$month.barometer.maxtime</td></tr>
+                        <tr><td>Low Barometer</td><td>$month.barometer.min</td><td>$month.barometer.mintime</td></tr>
+                        <tr><td>Rain Total</td><td>$month.rain.sum</td><td></td></tr>
+                        <tr><td>High Rain Rate</td><td>$month.rainRate.max</td><td>$month.rainRate.maxtime</td></tr>
+                        <tr><td>High Wind Speed</td><td>$month.wind.max $month.wind.gustdir</td><td>$month.wind.maxtime</td></tr>
+                        <tr><td>Average Wind</td><td>$month.wind.avg</td><td></td></tr>
+                        <tr><td>RMS Wind</td><td>$month.wind.rms</td><td></td></tr>
+                        <tr><td>Vector Average Speed</td><td>$month.wind.vecavg</td><td></td></tr>
+                        <tr><td>Vector Average Direction</td><td>$month.wind.vecdir</td><td></td></tr>
+                        <tr><td>High Inside Temperature</td><td>$month.inTemp.max</td><td>$month.inTemp.maxtime</td></tr>
+                        <tr><td>Low Inside Temperature</td><td>$month.inTemp.min</td><td>$month.inTemp.mintime</td></tr>
+                        #if $month.extraTemp1.has_data
+                        <tr><td>High Pond Temp</td><td>$month.extraTemp1.max</td><td>$month.extraTemp1.maxtime</td></tr>
+                        <tr><td>Low Pond Temp</td><td>$month.extraTemp1.min</td><td>$month.extraTemp1.mintime</td></tr>
+                        #end if
+                        #if $month.UV.has_data
+                        <tr><td>High UV</td><td>$month.UV.max</td><td>$month.UV.maxtime</td></tr>
+                        <tr><td>Low UV</td><td>$month.UV.min</td><td>$month.UV.mintime</td></tr>
+                        #end if
+                        #if $month.ET.has_data and $month.ET.sum.raw >0.0
+                        <tr><td>High ET</td><td>$month.ET.max</td><td>$month.ET.maxtime</td></tr>
+                        <tr><td>Low ET</td><td>$month.ET.min</td><td>$month.ET.mintime</td></tr>
+                        #end if
+                        #if $month.radiation.has_data
+                        <tr><td>High Radiation</td><td>$month.radiation.max</td><td>$month.radiation.maxtime</td></tr>
+                        <tr><td>Low Radiation</td><td>$month.radiation.min</td><td>$month.radiation.mintime</td></tr>
+                        #end if
+                    </table>
+                </div>
+
+            </div>
+            
+            <div class="right" >
+
+                <div class="card cc graphs" >
+                    <h1><i class="fa fa-line-chart m-gruen" ></i> Weekly Statistics and Plots</h1>
+                    
+                    <img src="weektempdew.png" alt="temperatures" />
+                    <img src="weekrain.png" alt="rain" />
+                    <img src="weekwind.png" alt="wind" />
+                    <img src="weekwinddir.png" alt="Hi Wind" />
+                    <img src="weekwindvec.png" alt="Wind Vector" />
+		    <img src="weektempchill.png" alt="heatchill" />
+                    <img src="weekbarometer.png" alt="barometer"/>
+                    <img src="weekinside.png" alt="Inside" />
+		    <img src="weekinhumid.png" alt="Inside Humidity" />
+                    #if $week.UV.has_data
+                    <img src="weekuv.png" alt="UV index" />
+                    #end if
+                    #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
+                    #if $week.extraTemp1.has_data
+                    <img src="weekpond.png" alt="Pond Temperatures" />
+                    #end if
+                </div>
+                
+            </div>
+        </div>
+        </div>
+        
+       <footer>
+            <div class="container-fix">
+	    <center>
+		#if $Extras.has_key('you')
+            	<i class="fa fa-pied-piper-pp"> </i><a href=mailto:$Extras.email> $Extras.you</a> 
+            	#end if
+		&sdot;
+	    	Copyright <i class="fa fa-copyright"></i> $latest.dateTime.format("%Y") 
+	   	<br>
+	    	Design by <a href="http://blauesledersofa.de">blaues Ledersofa</a>
+	    	&sdot; 
+            	Powered by<i class="fa fa-cog fa-spin fa-fw" aria-hidden="true"></i><a href="http://weewx.com/" target="_blank">WeeWX</a> and 
+            	<!-- Raspberry Pi icon by Icons8 --> <img src="https://maxcdn.icons8.com/Color/PNG/24/Logos/raspberry_pi-24.png" title="Raspberry Pi" height="18" width="18"> <a href="https://www.raspberrypi.org/" target="_blank"> Raspberry Pi 2 Model B</a>.
+	    </center>
+	    </div>
+        </footer>
+
+        #if $Extras.has_key('googleAnalyticsId')
+        <!-- Google Analytics -->
+        <script>
+            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+            
+            ga('create', '$Extras.googleAnalyticsId', 'auto');
+            ga('send', 'pageview');
+        </script>
+        #end if
+
+<!-- Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon -->
+<script>
+function myFunction() {
+    var x = document.getElementById("myTopnav");
+    if (x.className === "topnav") {
+        x.className += " responsive";
+    } else {
+        x.className = "topnav";
+    }
+}
+</script>
+
+    </body>
+</html>

+ 206 - 0
year.html.tmpl

@@ -0,0 +1,206 @@
+<!DOCTYPE html>
+<html class="no-js">
+    <head itemscope itemtype="http://schema.org/Website">
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta http-equiv="Refresh" content="180">
+        <meta name="description" content="$station.location Weather Station ($Extras.cwop) - weather web site powered by WeeWX">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link rel="profile" href="http://gmpg.org/xfn/11" itemprop="url"/>
+	#if $Extras.has_key('web_url')
+	<link rel="canonical" href="$Extras.web_url/year.html"/>
+	#end if
+        
+        <title itemprop="name">$station.location ($Extras.cwop) Yearly Weather Summary</title>
+        
+        <!-- Open Graph -->
+        <meta property="og:site_name" content="$station.location ($Extras.cwop) Yearly Weather Summary" />
+	<meta property="og:title" content="Yearly Weather Summary"/>
+	#if $Extras.has_key('web_url')
+	<meta property="og:url" content="$Extras.web_url/year.html"/>
+	#end if
+        <meta property="og:description" content="Yearly Weather Summary for $station.location ($Extras.cwop)- weather web site powered by WeeWX" />
+	<meta property="og:type" content="website" />
+
+        <!-- Icons -->
+        <link rel="icon" href="favicon.ico" type="image/png">
+	<link rel="apple-touch-icon" href="touch-icon.png"/>
+        
+        <!-- Styles -->
+        <link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
+	<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
+        <link rel="stylesheet" href="css/main.css">
+        
+        <!-- Skripte -->
+        <script src="js/modernizr-2.6.2.min.js"></script>
+        
+    </head>
+    <body>
+        <header>
+            <div class="container-fix" >
+                <div class="h-left" >
+                <h1><i class="fa fa-cloud" ></i> $station.location </h1>
+                <p>$station.latitude[0]&deg; $station.latitude[1]' $station.latitude[2] | $station.longitude[0]&deg; $station.longitude[1]' $station.longitude[2] | $station.altitude | <a href="https://www.google.com/maps/?q=$station.location" target="_blank" ><i class="fa fa-map-marker" ></i> Show on map</a></p>
+                <h2>Yearly Weather Summary</h2>
+                <p><i class="fa fa-clock-o" ></i> $current.dateTime $current.dateTime.format("%Z")</p>
+                </div>
+                
+                <div class="h-right" >
+                    <table>
+                        <tr><td><b>Station:</b></td><td>$station.hardware</td></tr>
+                        <tr><td><b>Software:</b></td><td><a href="http://weewx.com/" target="_blank" >WeeWX v$station.version</a></td></tr>
+                        <tr><td><b>Weewx uptime:</b></td><td>$station.uptime</td></tr>
+                        <tr><td><b>Server uptime:</b></td><td>$station.os_uptime</td></tr>
+			<tr><td><b>Station IDs:</b></td><td><a href="http://www.findu.com/cgi-bin/wxpage.cgi?call=$Extras.cwop&last=24" >$Extras.cwop</a> | <a href="http://www.wunderground.com/cgi-bin/findweather/getForecast?query=pws:$Extras.wunderground&MR=1" >$Extras.wunderground</a></td></tr>
+                    </table>
+                </div>
+
+                <nav>
+                    <ul class="topnav" id="myTopnav">
+			<li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars" ></i></a></li>
+                        <li><a href="/" >Current</a></li>
+                        <li><a href="week.html" >Week</a></li>
+                        <li><a href="month.html" >Month</a></li>
+                        <li class="active" ><a href="year.html" >Year</a></li>
+			<li><a href="station.html" >Station</a></li>
+			<li><a href="summary.html" >Summaries</a></li>
+                        <li><a href="RSS/weewx_rss.xml" ><i class="fa fa-rss" ></i></a></li>
+                    </ul>
+                </nav>
+            </div>
+        </header>
+        
+        <div class="main" >
+        <div class="container" >
+            
+            <div class="left" >
+                
+                <div class="card" >
+                    <h1><i class="fa fa-calendar-o m-rot" ></i> Calendar Year</h1>
+                    <table class="tablespacer">
+                        <tr><td>High Temperature</td><td>$year.outTemp.max</td><td>$year.outTemp.maxtime</td></tr>
+                        <tr><td>Low Temperature</td><td>$year.outTemp.min</td><td>$year.outTemp.mintime</td></tr>
+                        <tr><td>High Heat Index</td><td>$year.heatindex.max</td><td>$year.heatindex.maxtime</td></tr>
+                        <tr><td>Low Wind Chill</td><td>$year.windchill.min</td><td>$year.windchill.mintime</td></tr>
+                        <tr><td>High Dewpoint</td><td>$year.dewpoint.max</td><td>$year.dewpoint.maxtime</td></tr>
+                        <tr><td>Low Dewpoint</td><td>$year.dewpoint.min</td><td>$year.dewpoint.mintime</td></tr>
+                        <tr><td>High Humidity</td><td>$year.outHumidity.max</td><td>$year.outHumidity.maxtime</td></tr>
+                        <tr><td>Low Humidity</td><td>$year.outHumidity.min</td><td>$year.outHumidity.mintime</td></tr>
+                        <tr><td>High Barometer</td><td>$year.barometer.max</td><td>$year.barometer.maxtime</td></tr>
+                        <tr><td>Low Barometer</td><td>$year.barometer.min</td><td>$year.barometer.mintime</td></tr>
+                        <tr><td>High Wind Speed</td><td>$year.wind.max $year.wind.gustdir</td><td>$year.wind.maxtime</td></tr>
+                        <tr><td>Average Wind</td><td>$year.wind.avg</td><td></td></tr>
+                        <tr><td>RMS Wind</td><td>$year.wind.rms</td><td></td></tr>
+                        <tr><td>Vector Average Speed</td><td>$year.wind.vecavg</td><td></td></tr>
+                        <tr><td>Vector Average Direction</td><td>$year.wind.vecdir</td><td></td></tr>
+                        <tr><td>High Inside Temperature</td><td>$year.inTemp.max</td><td>$year.inTemp.maxtime</td></tr>
+                        <tr><td>Low Inside Temperature</td><td>$year.inTemp.min</td><td>$year.inTemp.mintime</td></tr>
+                        #if $year.extraTemp1.has_data
+                        <tr><td>High Pond Temp</td><td>$year.extraTemp1.max</td><td>$year.extraTemp1.maxtime</td></tr>
+                        <tr><td>Low Pond Temp</td><td>$year.extraTemp1.min</td><td>$year.extraTemp1.mintime</td></tr>
+                        #end if
+                        #if $year.UV.has_data
+                        <tr><td>High UV</td><td>$year.UV.max</td><td>$year.UV.maxtime</td></tr>
+                        <tr><td>Low UV</td><td>$year.UV.min</td><td>$year.UV.mintime</td></tr>
+                        #end if
+                        #if $year.ET.has_data and $year.ET.sum.raw >0.0
+                        <tr><td>High ET</td><td>$year.ET.max</td><td>$year.ET.maxtime</td></tr>
+                        <tr><td>Low ET</td><td>$year.ET.min</td><td>$year.ET.mintime</td></tr>
+                        #end if
+                        #if $year.radiation.has_data
+                        <tr><td>High Radiation</td><td>$year.radiation.max</td><td>$year.radiation.maxtime</td></tr>
+                        <tr><td>Low Radiation</td><td>$year.radiation.min</td><td>$year.radiation.mintime</td></tr>
+                        #end if
+                    </table>
+                </div>
+
+                <div class="card" >
+                    <h1><i class="fa fa-cloud m-blau" ></i> Rain Year (1-$station.rain_year_str start)</h1>
+                    <table class="tablespacer">
+                        <tr><td>Rain Year Total</td><td>$rainyear.rain.sum</td><td></td></tr>
+                        <tr><td>High Rain Rate</td><td>$rainyear.rainRate.max</td><td>$rainyear.rainRate.maxtime</td></tr>
+                    </table>
+                </div>
+
+            </div>
+            
+            <div class="right" >
+
+                <div class="card cc graphs" >
+                    <h1><i class="fa fa-line-chart m-gruen" ></i> Yearly Statistics and Plots</h1>
+                    
+                    <img src="yeartempdew.png" alt="temperatures" />
+                    <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="yearwinddir.png" alt="Hi Wind" /> 
+                    <img src="yearwindvec.png" alt="Wind Vector" />
+		    <img src="yeartempchill.png" alt="heatchill" />
+		    <img src="yearbarometer.png" alt="barometer"/>
+		    <img src="yearinside.png" alt="Inside" />
+		    <img src="yearinhumid.png" alt="Inside Humidity" />
+                    #if $year.UV.has_data
+                    <img src="yearuv.png" alt="UV Index" />
+                    #end if
+                    #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
+                    #if $year.extraTemp1.has_data
+                    <img src="yearpond.png" alt="Pond Temperatures" />
+                    #end if
+                </div>
+                
+            </div>
+        </div>
+        </div>
+        
+        <footer>
+            <div class="container-fix">
+	    <center>
+		#if $Extras.has_key('you')
+            	<i class="fa fa-pied-piper-pp"> </i><a href=mailto:$Extras.email> $Extras.you</a> 
+            	#end if
+		&sdot;
+	    	Copyright <i class="fa fa-copyright"></i> $latest.dateTime.format("%Y") 
+	   	<br>
+	    	Design by <a href="http://blauesledersofa.de">blaues Ledersofa</a>
+	    	&sdot; 
+            	Powered by<i class="fa fa-cog fa-spin fa-fw" aria-hidden="true"></i><a href="http://weewx.com/" target="_blank">WeeWX</a> and 
+            	<!-- Raspberry Pi icon by Icons8 --> <img src="https://maxcdn.icons8.com/Color/PNG/24/Logos/raspberry_pi-24.png" title="Raspberry Pi" height="18" width="18"> <a href="https://www.raspberrypi.org/" target="_blank"> Raspberry Pi 2 Model B</a>.
+	    </center>
+	    </div>
+        </footer>
+
+        #if $Extras.has_key('googleAnalyticsId')
+        <!-- Google Analytics -->
+        <script>
+            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+            
+            ga('create', '$Extras.googleAnalyticsId', 'auto');
+            ga('send', 'pageview');
+        </script>
+        #end if
+
+<!-- Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon -->
+<script>
+function myFunction() {
+    var x = document.getElementById("myTopnav");
+    if (x.className === "topnav") {
+        x.className += " responsive";
+    } else {
+        x.className = "topnav";
+    }
+}
+</script>
+
+    </body>
+</html>

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff