6.10   "skin.conf.cydia" As-Distributed Configuration

###############################################################################
# STANDARD SKIN CONFIGURATION FILE                                            #
# Copyright (c) 2010 Tom Keffer <tkeffer@gmail.com>                           #
###############################################################################

[Extras]
    # Put any extra tags here that you want to be available in the templates
    
    # Here's an example. 
    # This radar image would be available as $Extras.radar_img
    #radar_img = http://radar.weather.gov/ridge/lite/N0R/RTX_loop.gif
    # This URL will be used as the image hyperlink:
    #radar_url = http://radar.weather.gov/ridge/radar.php?product=NCR&rid=RTX&loop=yes
    
    # Here's another. If you have a Google Analytics ID, uncomment and edit 
    # the next line, and the analytics code will automatically be included
    # in your generated HTML files:
    #googleAnalyticsId = UA-12345678-1

    cydia_img = "Cydia/C_pomonella.png"  # 2018 Mar 21
    cydia_url = "Cydia/C_pomonella.html"
    
###############################################################################

[Units]
    # This section is for managing the selection and formatting of units.
    
    [[Groups]]
        # For each group of measurements, this section sets what units to
        # use for it.
        # NB: The unit is always in the singular. I.e., 'mile_per_hour',
        # NOT 'miles_per_hour'

        group_altitude     = foot                 # Options are 'foot' or 'meter'
        group_degree_day   = degree_F_day         # Options are 'degree_F_day' or 'degree_C_day'
        group_direction    = degree_compass
        group_moisture     = centibar
        group_percent      = percent
        group_pressure     = inHg                 # Options are 'inHg', 'mmHg', 'mbar', or 'hPa'
        group_radiation    = watt_per_meter_squared
        group_rain         = inch                 # Options are 'inch', 'cm', or 'mm'
        group_rainrate     = inch_per_hour        # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour'
        group_speed        = mile_per_hour        # Options are 'mile_per_hour', 'km_per_hour', 'knot', or 'meter_per_second'
        group_speed2       = mile_per_hour2       # Options are 'mile_per_hour2', 'km_per_hour2', 'knot2', or 'meter_per_second2'
        group_temperature  = degree_F             # Options are 'degree_F' or 'degree_C'
        group_uv           = uv_index
        group_volt         = volt

        # The following are used internally and should not be changed:
        group_count        = count
        group_interval     = minute
        group_time         = unix_epoch
        group_elapsed      = second

    [[StringFormats]]
        # This section sets the string formatting for each type of unit.

        centibar           = %.0f
        cm                 = %.2f
        cm_per_hour        = %.2f
        degree_C           = %.1f
        degree_F           = %.1f
        degree_compass     = %.0f
        foot               = %.0f
        hPa                = %.1f
        hour               = %.1f
        inHg               = %.3f
        inch               = %.2f
        inch_per_hour      = %.2f
        km_per_hour        = %.0f
        km_per_hour2       = %.1f
        knot               = %.0f
        knot2              = %.1f
        mbar               = %.1f
        meter              = %.0f
        meter_per_second   = %.1f
        meter_per_second2  = %.1f
        mile_per_hour      = %.0f
        mile_per_hour2     = %.1f
        mm                 = %.1f
        mmHg               = %.1f
        mm_per_hour        = %.1f
        percent            = %.0f
        second             = %.0f
        uv_index           = %.1f
        volt               = %.1f
        watt_per_meter_squared = %.0f
        NONE               = "   N/A"

    [[Labels]]
        # This section sets a label to be used for each type of unit.

        centibar          = " cb"
        cm                = " cm"
        cm_per_hour       = " cm/hr"
        degree_C          =   °C
        degree_F          =   °F
        degree_compass    =   °
        foot              = " feet"
        hPa               = " hPa"
        inHg              = " inHg"
        inch              = " in"
        inch_per_hour     = " in/hr"
        km_per_hour       = " km/h"
        km_per_hour2      = " km/h"
        knot              = " knots"
        knot2             = " knots"
        mbar              = " mbar"
        meter             = " meters"
        meter_per_second  = " m/s"
        meter_per_second2 = " m/s"
        mile_per_hour     = " mph"
        mile_per_hour2    = " mph"
        mm                = " mm"
        mmHg              = " mmHg"
        mm_per_hour       = " mm/hr"
        percent           =   %
        volt              = " V"
        watt_per_meter_squared = " W/m²"
        day               = " day",    " days"
        hour              = " hour",   " hours"
        minute            = " minute", " minutes"
        second            = " second", " seconds"
        NONE              = ""
        
    [[TimeFormats]]
        # This section sets the string format to be used for each time scale.
        # The values below will work in every locale, but may not look
        # particularly attractive. See the Customization Guide for alternatives.

        day        = %X
        week       = %X (%A)
        month      = %x %X
        year       = %x %X
        rainyear   = %x %X
        current    = %x %X
        ephem_day  = %X
        ephem_year = %x %X
        
    [[Ordinates]]    
        # The ordinal directions. The last one should be for no wind direction
        directions = N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW, N/A 

    [[DegreeDays]]
        # This section sets the base temperatures used for the calculation
        # of heating and cooling degree-days.
                
        # Base temperature for heating days, with unit:
        heating_base = 65, degree_F
        # Base temperature for cooling days, with unit:
        cooling_base = 65, degree_F

    [[Trend]]
        time_delta = 10800  # 3 hours
        time_grace = 300    # 5 minutes 
        
###############################################################################

[Labels]
    # Labels used in this skin
    
    # Set to hemisphere abbreviations suitable for your location: 
    hemispheres = N, S, E, W
    # Formats to be used for latitude whole degrees, longitude whole degrees,
    # and minutes:
    latlon_formats = "%02d", "%03d", "%05.2f"

    [[Generic]]
        # Generic labels, keyed by an observation type.

        barometer      = Barometer
        dewpoint       = Dew Point
        heatindex      = Heat Index
        inHumidity     = Inside Humidity
        inTemp         = Inside Temperature
        outHumidity    = Outside Humidity
        outTemp        = Outside Temperature
        radiation      = Radiation
        rain           = Rain
        rainRate       = Rain Rate
        rxCheckPercent = ISS Signal Quality
        UV             = UV Index
        windDir        = Wind Direction
        windGust       = Gust Speed
        windGustDir    = Gust Direction
        windSpeed      = Wind Speed
        windchill      = Wind Chill
        windgustvec    = Gust Vector
        windvec        = Wind Vector
    
###############################################################################

[Almanac]
    # The labels to be used for the phases of the moon:
    moon_phases = New, Waxing crescent, First quarter, Waxing gibbous, Full, Waning gibbous, Last quarter, Waning crescent

###############################################################################

[CheetahGenerator]
    # This section is used by the generator CheetahGenerator, and specifies
    # which files are to be generated from which template.

    # Possible encodings are 'html_entities', 'utf8', or 'strict_ascii'
    encoding = html_entities

    [[SummaryByMonth]]
        # Reports that summarize "by month"
        [[[NOAA_month]]]
            encoding = strict_ascii
            template = NOAA/NOAA-YYYY-MM.txt.tmpl

    [[SummaryByYear]]
        # Reports that summarize "by year"
        [[[NOAA_year]]]
            encoding = strict_ascii
            template = NOAA/NOAA-YYYY.txt.tmpl

        [[[CydiaDDData]]]  # 2018 Feb 14
            # This creates a *.csv file used by the CydiaGenerator.
            encoding = strict_ascii
        template = Cydia/NOAA-YYYY.csv.tmpl
            
    [[ToDate]]
        # Reports that show statistics "to date", such as day-to-date,
        # week-to-date, month-to-date, etc.
        [[[day]]]
            template = index.html.tmpl
        
        [[[week]]]
            template = week.html.tmpl
        
        [[[month]]]
            template = month.html.tmpl
        
        [[[year]]]
            template = year.html.tmpl
            
        [[[RSS]]]
            template = RSS/weewx_rss.xml.tmpl
                
        [[[Mobile]]]
            template = mobile.html.tmpl
            
        [[[MobileSmartphone]]]
            template = smartphone/index.html.tmpl
            
        [[[MobileTempOutside]]]
            template = smartphone/temp_outside.html.tmpl

        [[[MobileRain]]]
            template = smartphone/rain.html.tmpl

        [[[MobileBarometer]]]
            template = smartphone/barometer.html.tmpl

        [[[MobileWind]]]
            template = smartphone/wind.html.tmpl
            
        [[[MobileRadar]]]
            template = smartphone/radar.html.tmpl

###############################################################################

[CopyGenerator]
    
    # This section is used by the generator CopyGenerator

    # List of files to be copied only the first time the generator runs  # 2018 Mar 20
    copy_once = backgrounds/*, weewx.css, cydia.css, mobile.css, favicon.ico, smartphone/icons/*, smartphone/custom.js  
    
    # List of files to be copied each time the generator runs
    # copy_always = 
        

###############################################################################

[ImageGenerator]
    
    # This section lists all the images to be generated, what SQL types are to
    # be included in them, along with many plotting options, such as color or
    # font. There's a default for almost everything, if not specified below.
    # Nevertheless, I have explicitly put in values, to make it easy to see
    # and understand the options.
    #
    # Fonts can be anything accepted by the Python Imaging Library (PIL), which
    # is currently truetype (.ttf), or PIL's own font format (.pil). See
    # http://www.pythonware.com/library/pil/handbook/imagefont.htm for more
    # details.  Note that "font size" is only used with truetype (.ttf)
    # fonts. For others, font size is determined by the bit-mapped size,
    # usually encoded in the file name (e.g., courB010.pil). If a font cannot
    # be found, then a default font will be used.
    #
    # Colors can be specified any of three ways:
    #   1. Notation 0xBBGGRR;
    #   2. Notation #RRGGBB; or
    #   3. Using an English name, such as 'yellow', or 'blue'.
    # So, 0xff0000, #0000ff, or 'blue' would all specify a pure blue color.
    
    image_width = 300
    image_height = 180
    image_background_color = 0xf5f5f5
    
    chart_background_color = 0xd8d8d8
    chart_gridline_color = 0xa0a0a0
    
    # Setting to 2 or more might give a sharper image with fewer jagged edges.
    anti_alias = 1
    
    top_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
    top_label_font_size = 10
    
    unit_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
    unit_label_font_size = 10
    unit_label_font_color = 0x000000
    
    bottom_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
    bottom_label_font_size = 12
    bottom_label_font_color = 0x000000
    bottom_label_offset = 3
    
    axis_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
    axis_label_font_size = 10
    axis_label_font_color = 0x000000
    
    # Options for the compass rose, used for progressive vector plots
    rose_label = N
    rose_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
    rose_label_font_size  = 10
    rose_label_font_color = 0x000000

    # Default colors for the plot lines. These can be overridden for
    # individual lines using option 'color'
    chart_line_colors = 0xb48242, 0x4242b4, 0x42b442
    
    # Type of line. Only 'solid' or 'none' is offered now    
    line_type = 'solid'

    # Size of marker in pixels
    marker_size = 8
    # Type of marker. Pick one of 'cross', 'x', 'circle', 'box', or 'none'
    marker_type ='none'
    
    # Default fill colors for bar charts. These can be overridden for
    # individual bar plots using option 'fill_color'
    chart_fill_colors = 0xc4b272, 0x7272c4, 0x72c472
        
    # The following option merits an explanation. The y-axis scale used for
    # plotting can be controlled using option 'yscale'. It is a 3-way tuple,
    # with values (ylow, yhigh, min_interval). If set to "None", a parameter is
    # set automatically, otherwise the value is used. However, in the case of
    # min_interval, what is set is the *minimum* y-axis tick interval. 
    yscale = None, None, None

    # For progressive vector plots, you can choose to rotate the vectors.
    # Positive is clockwise.
    # For my area, westerlies overwhelmingly predominate, so by rotating
    # positive 90 degrees, the average vector will point straight up.
    vector_rotate = 90

    # This defines what fraction of the difference between maximum and minimum
    # horizontal chart bounds is considered a gap in the samples and should not
    # be plotted.
    line_gap_fraction = 0.01

    # This controls whether day/night bands will be shown. They only look good
    # on the day and week plots.
    show_daynight = true
    # These control the appearance of the bands if they are shown.
    # Here's a monochrome scheme:
    daynight_day_color   = 0xdfdfdf
    daynight_night_color = 0xbbbbbb
    daynight_edge_color  = 0xd0d0d0
    # Here's an alternative, using a blue/yellow tint:
    #daynight_day_color   = 0xf8ffff
    #daynight_night_color = 0xfff8f8
    #daynight_edge_color  = 0xf8f8ff

    ## What follows is a list of subsections, each specifying a time span, such
    ## as a day, week, month, or year. There's nothing special about them or
    ## their names: it's just a convenient way to group plots with a time span
    ## in common. You could add a time span [[biweek_images]] and add the
    ## appropriate time length, aggregation strategy, etc., without changing
    ## any code.
    ##
    ## Within each time span, each sub-subsection is the name of a plot to be
    ## generated for that time span. The generated plot will be stored using
    ## that name, in whatever directory was specified by option 'HTML_ROOT'
    ## in weewx.conf.
    ##
    ## With one final nesting (four brackets!) is the sql type of each line to
    ## be included within that plot.
    ##
    ## Unless overridden, leaf nodes inherit options from their parent
    
    # Default plot and aggregation. Can get overridden at any level.
    plot_type = line
    aggregate_type = none
    width = 1
    time_length = 86400    # == 24 hours

    [[day_images]]
        x_label_format = %H:%M
        bottom_label_format = %x %X
        time_length = 97200    # == 27 hours
        
        [[[daybarometer]]]
            [[[[barometer]]]]
        
        [[[daytempdew]]]
            [[[[outTemp]]]]
            [[[[dewpoint]]]]
        
        [[[daytempchill]]]
            [[[[windchill]]]]
            [[[[heatindex]]]]

        [[[dayhumidity]]]
            [[[[outHumidity]]]]

        [[[dayrain]]]
            # Make sure the y-axis increment is at least 0.02 for the rain plot
            yscale = None, None, 0.02
            plot_type = bar
            [[[[rain]]]]
                aggregate_type = sum
                aggregate_interval = 3600
                label = Rain (hourly total)
                
        [[[dayrx]]]
            [[[[rxCheckPercent]]]]
        
        [[[daywind]]]
            [[[[windSpeed]]]]
            [[[[windGust]]]]
        
        [[[dayinside]]]
            [[[[inTemp]]]]
        
        [[[daywinddir]]]
            # Hardwire in the y-axis scale for wind direction
            yscale = 0.0, 360.0, 45.0
            [[[[windDir]]]]
    
        [[[daywindvec]]]
            [[[[windvec]]]]
                plot_type = vector

        [[[dayradiation]]]
            [[[[radiation]]]]
            [[[[radiation_max]]]]
                data_type = radiation
                aggregate_type = max
                aggregate_interval = 3600

        [[[dayuv]]]
            yscale = 0, 16, 1
            [[[[UV]]]]
            [[[[UV_max]]]]
                data_type = UV
                aggregate_type = max
                aggregate_interval = 3600
            
    [[week_images]]
        x_label_format = %d
        bottom_label_format = %x %X
        time_length = 604800    # == 7 days
        aggregate_type = avg
        aggregate_interval = 3600
        
        [[[weekbarometer]]]
            [[[[barometer]]]]
        
        [[[weektempdew]]]
            [[[[outTemp]]]]
            [[[[dewpoint]]]]
        
        [[[weektempchill]]]
            [[[[windchill]]]]
            [[[[heatindex]]]]
        
        [[[weekhumidity]]]
            [[[[outHumidity]]]]

        [[[weekrain]]]
            yscale = None, None, 0.02
            plot_type = bar
            [[[[rain]]]]
                aggregate_type = sum
                aggregate_interval = 86400
                label = Rain (daily total)
        
        [[[weekrx]]]
            [[[[rxCheckPercent]]]]
        
        [[[weekwind]]]
            [[[[windSpeed]]]]
            [[[[windGust]]]]
                aggregate_type = max
        
        [[[weekinside]]]
            [[[[inTemp]]]]
        
        [[[weekwinddir]]]
            yscale = 0.0, 360.0, 45.0
            [[[[windDir]]]]
    
        [[[weekwindvec]]]
            [[[[windvec]]]]
                plot_type = vector

        [[[weekradiation]]]
            [[[[radiation]]]]
            [[[[radiation_max]]]]
                data_type = radiation
                aggregate_type = max

        [[[weekuv]]]
            yscale = 0, 16, 1
            [[[[UV]]]]
            [[[[UV_max]]]]
                data_type = UV
                aggregate_type = max

    [[month_images]]
        x_label_format = %d
        bottom_label_format = %x %X
        time_length = 2592000    # == 30 days
        aggregate_type = avg
        aggregate_interval = 10800    # == 3 hours
        show_daynight = false
        
        [[[monthbarometer]]]
            [[[[barometer]]]]
        
        [[[monthtempdew]]]
            [[[[outTemp]]]]
            [[[[dewpoint]]]]
        
        [[[monthtempchill]]]
            [[[[windchill]]]]
            [[[[heatindex]]]]
        
        [[[monthhumidity]]]
            [[[[outHumidity]]]]

        [[[monthrain]]]
            yscale = None, None, 0.02
            plot_type = bar
            [[[[rain]]]]
                aggregate_type = sum
                aggregate_interval = 86400
                label = Rain (daily total)
        
        [[[monthrx]]]
            [[[[rxCheckPercent]]]]
        
        [[[monthwind]]]
            [[[[windSpeed]]]]
            [[[[windGust]]]]
                aggregate_type = max
        
        [[[monthinside]]]
            [[[[inTemp]]]]
        
        [[[monthwinddir]]]
            yscale = 0.0, 360.0, 45.0
            [[[[windDir]]]]
    
        [[[monthwindvec]]]
            [[[[windvec]]]]
                plot_type = vector

        [[[monthradiation]]]
            [[[[radiation]]]]
            [[[[radiation_max]]]]
                data_type = radiation
                aggregate_type = max

        [[[monthuv]]]
            yscale = 0, 16, 1
            [[[[UV]]]]
            [[[[UV_max]]]]
                data_type = UV
                aggregate_type = max

    [[year_images]]
        x_label_format = %m/%d
        bottom_label_format = %x %X
        time_length = 31536000    # == 365 days
        aggregate_type = avg
        aggregate_interval = 86400
        show_daynight = false
        
        [[[yearbarometer]]]
            [[[[barometer]]]]
        
        
        [[[yeartempdew]]]
            [[[[outTemp]]]]
            [[[[dewpoint]]]]
        
        [[[yearhumidity]]]
            [[[[outHumidity]]]]

        # Daily high/lows:
        [[[yearhilow]]]
            [[[[hi]]]]
                data_type = outTemp
                aggregate_type = max
                label = High
            [[[[low]]]]
                data_type = outTemp
                aggregate_type = min
                label = Low Temperature
                
        [[[yearwind]]]
            [[[[windSpeed]]]]
            [[[[windGust]]]]
                aggregate_type = max
        
        [[[yeartempchill]]]
            [[[[windchill]]]]
            [[[[heatindex]]]]
        
        [[[yearrain]]]
            yscale = None, None, 0.02
            plot_type = bar
            [[[[rain]]]]
                aggregate_type = sum
                # aggregate_interval = 2629800 # Magic number: the length of a nominal month
                aggregate_interval = 604800    # == 1 week
                label = Rain (weekly total)
        
        [[[yearrx]]]
            [[[[rxCheckPercent]]]]
        
        [[[yearinside]]]
            [[[[inTemp]]]]
        
        [[[yearwinddir]]]
            yscale = 0.0, 360.0, 45.0
            [[[[windDir]]]]

        [[[yearwindvec]]]
            [[[[windvec]]]]
                plot_type = vector

        [[[yearradiation]]]
            [[[[radiation]]]]
            [[[[radiation_max]]]]
                data_type = radiation
                aggregate_type = max

        [[[yearuv]]]
            yscale = 0, 16, 1
            [[[[UV]]]]
            [[[[UV_max]]]]
                data_type = UV
                aggregate_type = max

        # A progressive vector plot of daily gust vectors overlayed
        # with the daily wind average would look something like this:
#        [[[yeargustvec]]]
#            [[[[windvec]]]]
#                plot_type = vector
#                aggregate_type = avg
#            [[[[windgustvec]]]]
#                plot_type = vector
#                aggregate_type = max

###############################################################################

[CydiaGenerator]  # 2018 Mar 06
    
    # This section provides options to CydiaGenerator, which predicts
    # development stages of various insects.  The generator produces a
    # *.png graph and an *.html page for each species, below.  The
    # graph inherits defaults from [[year_images]] of
    # [ImageGenerator], above.  These may be overridden.

    # CydiaGenerator reads the *.csv file, which is output by
    # CheetahGenerator according to Cydia/YTD.csv.tmpl, above.  This
    # *.csv file contains daily max/min temps, which are needed for
    # the special degree-day (DD) model implemented by CydiaGenerator.
    # This model is quite different from and ought not to be confused
    # with "heating degree-days."  CydiaGenerator performs similar
    # calculations for each species and creates a graph and a report
    # for each one.  Species may differ by temperature thresholds
    # between which development can occur and for which DDs are
    # accumulated.  CydiaGenerator projects a treatment schedule for
    # each species, based on the year-to-date accumulation of DDs.

    image_width = 600
    image_height = 360
    plot_type = line
    x_label_format = "%m '%y"
    top_label_font_size = 18
    unit_label_font_size = 12
    bottom_label_font_size = 12
    axis_label_font_size = 12
    horizon__font_color = 0x0000ff
    horizon_top_color = 0xbbbbff
    horizon_bottom_color = 0xdfdfdf
    horizon_edge_color = 0x0000ff
    horizon_gradient = 20
    horizon_label_font_path = /usr/share/fonts/truetype/freefont/FreeMonoBold.ttf
    horizon_label_font_size = 12
    horizon_label_font_color = 0x0000f0
    horizon_label_offset = 3

    [[Cydia/C_pomonella]]

        # Biofix is the cumulative degree days at which the first
        # sustained capture occurs of male codling moths in pheromone
        # traps.

        # The essence of the degree-day model of insect development is
        # that it is more or less consistently predictive in various
        # locations and in succeeding years.  The degree day
        # calculation uses the max and min temps for each day.  It is
        # thus immune to missing readings.  In fact, precise
        # calculation of degree days is probably less important than
        # proper interpretation of results and prompt application of
        # suggested insect controls.  The estimated Biofix, the
        # thresholds, and the offsets, below, are generally applicable
        # to most apple-growing regions of the country.  You are
        # encouraged to check with your County Agent of the United
        # States Department of Agriculture Cooperative Extension for
        # exact model parameters for your location.

        label = Cumulative Degree-Days -- C. pomonella
        threshold_lo = 50, degree_F
        threshold_hi = 88, degree_F
        biofix_estimated = 175, degree_F_day
        biofix_actual = None

        [[[Offsets_from_Biofix]]]

            [[[[Egg Laying]]]]
                offset = 100, degree_F_day

            [[[[Egg Hatching]]]]
                offset = 250, degree_F_day

###############################################################################

#
# The list of generators that are to be run:
#
[Generators]
        generator_list = weewx.cheetahgenerator.CheetahGenerator, weewx.imagegenerator.ImageGenerator, weewx.cydiagenerator.CydiaGenerator, weewx.reportengine.CopyGenerator  # 2018 Feb 14