Skip to content

Reference: report options

This section contains the options available in the skin configuration file, skin.conf. The same options apply to the language files found in the subdirectory lang, such as lang/en.conf for English.

We recommend to put

  • options that control the behavior of the skin into skin.conf; and
  • language dependent labels and texts into the language files.

It is worth noting that, like the main configuration file weewx.conf, UTF-8 is used throughout.

[Extras]

This section is available to add any static tags you might want to use in your templates.

As an example, the skin.conf file for the Seasons skin includes three options:

Skin option Template tag
radar_img $Extras.radar_img
radar_url $Extras.radar_url
googleAnalyticsId $Extras.googleAnalyticsId

If you take a look at the template radar.inc you will see examples of testing for these tags.

radar_img

Set to an URL to show a local radar image for your region.

radar_url

If the radar image is clicked, the browser will go to this URL. This is usually used to show a more detailed, close-up, radar picture.

For me in Oregon, setting the two options to:

[Extras]
    radar_img = http://radar.weather.gov/ridge/lite/N0R/RTX_loop.gif
    radar_url = http://radar.weather.gov/ridge/radar.php?product=NCR&rid=RTX&loop=yes

results in a nice image of a radar centered on Portland, Oregon. When you click on it, it gives you a detailed, animated view. If you live in the USA, take a look at the NOAA radar website to find a nice one that will work for you. In other countries, you will have to consult your local weather service.

googleAnalyticsId

If you have a Google Analytics ID, you can set it here. The Google Analytics Javascript code will then be included, enabling analytics of your website usage. If commented out, the code will not be included.

Extending [Extras]

Other tags can be added in a similar manner, including sub-sections. For example, say you have added a video camera, and you would like to add a still image with a hyperlink to a page with the video. You want all of these options to be neatly contained in a sub-section.

[Extras]
    [[video]]
        still = video_capture.jpg
        hyperlink = http://www.eatatjoes.com/video.html

Then in your template you could refer to these as:

<a href="$Extras.video.hyperlink">
    <img src="$Extras.video.still" alt="Video capture"/>
</a>

[Labels]

This section defines various labels.

hemispheres

Comma separated list for the labels to be used for the four hemispheres. The default is N, S, E, W.

latlon_formats

Comma separated list for the formatting to be used when converting latitude and longitude to strings. There should be three elements:

  1. The format to be used for whole degrees of latitude
  2. The format to be used for whole degrees of longitude
  3. The format to be used for minutes.

This allows you to decide whether you want leading zeroes. The default includes leading zeroes and is "%02d", "%03d", "%05.2f".

[[Generic]]

This sub-section specifies default labels to be used for each observation type. For example, options

inTemp  = Temperature inside the house
outTemp = Outside Temperature
UV      = UV Index

would cause the given labels to be used for plots of inTemp and outTemp. If no option is given, then the observation type itself will be used (e.g., outTemp).

[Almanac]

This section controls what text to use for the almanac. It consists of only one entry

moon_phases

This option is a comma separated list of labels to be used for the eight phases of the moon. Default is New, Waxing crescent, First quarter, Waxing gibbous, Full, Waning gibbous, Last quarter, Waning crescent.

[Units]

This section controls how units are managed and displayed.

[[Groups]]

This sub-section lists all the Unit Groups and specifies which measurement unit is to be used for each one of them.

As there are many different observational measurement types (such as outTemp, barometer, etc.) used in WeeWX (more than 50 at last count), it would be tedious, not to say possibly inconsistent, to specify a different measurement system for each one of them. At the other extreme, requiring all of them to be "U.S. Customary" or "Metric" seems overly restrictive. WeeWX has taken a middle route and divided all the different observation types into 12 different unit groups. A unit group is something like group_temperature. It represents the measurement system to be used by all observation types that are measured in temperature, such as inside temperature (type inTemp), outside temperature (outTemp), dewpoint (dewpoint), wind chill (windchill), and so on. If you decide that you want unit group group_temperature to be measured in degree_C then you are saying all members of its group will be reported in degrees Celsius.

Note that the measurement unit is always specified in the singular. That is, specify degree_C or foot, not degrees_C or feet. See the Appendix: Units for more information, including a concise summary of the groups, their members, and which options can be used for each group.

group_altitude

Which measurement unit to be used for altitude. Possible options are foot or meter.

group_direction

Which measurement unit to be used for direction. The only option is degree_compass.

group_distance

Which measurement unit to be used for distance (such as for wind run). Possible options are mile or km.

group_moisture

The measurement unit to be used for soil moisture. The only option is centibar.

group_percent

The measurement unit to be used for percentages. The only option is percent.

group_pressure

The measurement unit to be used for pressure. Possible options are one of inHg (inches of mercury), mbar, hPa, or kPa.

group_pressurerate

The measurement unit to be used for rate of change in pressure. Possible options are one of inHg_per_hour (inches of mercury per hour), mbar_per_hour, hPa_per_hour, or kPa_per_hour.

group_radiation

The measurement unit to be used for radiation. The only option is watt_per_meter_squared.

group_rain

The measurement unit to be used for precipitation. Options are inch, cm, or mm.

group_rainrate

The measurement unit to be used for rate of precipitation. Possible options are one of inch_per_hour, cm_per_hour, or mm_per_hour.

group_speed

The measurement unit to be used for wind speeds. Possible options are one of mile_per_hour, km_per_hour, knot, meter_per_second, or beaufort.

group_speed2

This group is similar to group_speed, but is used for calculated wind speeds which typically have a slightly higher resolution. Possible options are one mile_per_hour2, km_per_hour2, knot2, or meter_per_second2.

group_temperature

The measurement unit to be used for temperatures. Options are degree_C, degree_E, degree_F, or degree_K.

group_volt

The measurement unit to be used for voltages. The only option is volt.

[[StringFormats]]

This sub-section is used to specify what string format is to be used for each unit when a quantity needs to be converted to a string. Typically, this happens with y-axis labeling on plots and for statistics in HTML file generation. For example, the options

degree_C = %.1f
inch     = %.2f

would specify that the given string formats are to be used when formatting any temperature measured in degrees Celsius or any precipitation amount measured in inches, respectively. The formatting codes are those used by Python, and are very similar to C's sprintf() codes.

You can also specify what string to use for an invalid or unavailable measurement (value None). For example,

NONE = " N/A "

[[Labels]]

This sub-section specifies what label is to be used for each measurement unit type. For example, the options

degree_F = °F
inch     = ' in'

would cause all temperatures to have unit labels °F and all precipitation to have labels in. If any special symbols are to be used (such as the degree sign) they should be encoded in UTF-8. This is generally what most text editors use if you cut-and-paste from a character map.

If the label includes two values, then the first is assumed to be the singular form, the second the plural form. For example,

foot   = " foot",   " feet"
...
day    = " day",    " days"
hour   = " hour",   " hours"
minute = " minute", " minutes"
second = " second", " seconds"

[[TimeFormats]]

This sub-section specifies what time format to use for different time contexts. For example, you might want to use a different format when displaying the time in a day, versus the time in a month. It uses strftime() formats. The default looks like this:

    [[TimeFormats]]
        hour        = %H:%M
        day         = %X
        week        = %X (%A)
        month       = %x %X
        year        = %x %X
        rainyear    = %x %X
        current     = %x %X
        ephem_day   = %X
        ephem_year  = %x %X

The specifiers %x, %X, and %A code locale dependent date, time, and weekday names, respectively. Hence, if you set an appropriate environment variable LANG, then the date and times should follow local conventions (see section Environment variable LANG for details on how to do this). However, the results may not look particularly nice, and you may want to change them. For example, I use this in the U.S.:

    [[TimeFormats]]
        #
        # More attractive formats that work in most Western countries.
        #
        day        = %H:%M
        week       = %H:%M on %A
        month      = %d-%b-%Y %H:%M
        year       = %d-%b-%Y %H:%M
        rainyear   = %d-%b-%Y %H:%M
        current    = %d-%b-%Y %H:%M
        ephem_day  = %H:%M
        ephem_year = %d-%b-%Y %H:%M

The last two formats, ephem_day and ephem_year allow the formatting to be set for almanac times The first, ephem_day, is used for almanac times within the day, such as sunrise or sunset. The second, ephem_year, is used for almanac times within the year, such as the next equinox or full moon.

[[Ordinates]]

directions

Set to the abbreviations to be used for ordinal directions. By default, this is N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW, N.

[[DegreeDays]]

heating_base

cooling_base

growing_base

Set to the base temperature for calculating heating, cooling, and growing degree-days, along with the unit to be used. Examples:

heating_base = 65.0, degree_F
cooling_base = 20.0, degree_C
growing_base = 50.0, degree_F

[[Trend]]

time_delta

Set to the time difference over which you want trends to be calculated. Alternatively, a duration notation can be used. The default is 3 hours.

time_grace

When searching for a previous record to be used in calculating a trend, a record within this amount of time_delta will be accepted. Default is 300 seconds.

[Texts]

The section [Texts] holds static texts that are used in the templates. Generally there are multiple language files, one for each supported language, named by the language codes defined in ISO 639-1. The entries give the translation of the texts to the target language. For example,

[Texts]
    "Current Conditions" = "Aktuelle Werte"

would cause "Aktuelle Werte" to be used whereever $gettext("Current Conditions" appeared. See the section on $gettext.

Note

Strings that include commas must be included in single or double quotes. Otherwise they will be misinterpreted as a list.

[CheetahGenerator]

This section contains the options for the Cheetah generator. It applies to skin.conf only.

search_list

This is the list of search list objects that will be scanned by the template engine, looking for tags. See the section Defining new tags and the Cheetah documentation for details on search lists. If no search_list is specified, a default list will be used.

search_list_extensions

This defines one or more search list objects that will be appended to the search_list. For example, if you are using the "seven day" and "forecast" search list extensions, the option would look like

search_list_extensions = user.seven_day.SevenDay, user.forecast.ForecastVariables

encoding

As Cheetah goes through the template, it substitutes strings for all tag values. This option controls which encoding to use for the new strings. The encoding can be chosen on a per-file basis. All the encodings listed in the Python documentation Standard Encodings are available, as well as these WeeWX-specific encodings:

Encoding Comments
html_entities Non 7-bit characters will be represented as HTML entities (e.g., the degree sign will be represented as "&#176;")
strict_ascii Non 7-bit characters will be ignored.
normalized_ascii Replace accented characters with non-accented analogs (e.g., 'ö' will be replaced with 'o').

The encoding html_entities is the default. Other common choices are utf8, cp1252 (a.k.a. Windows-1252), and latin1.

template

The name of a template file. A template filename must end with .tmpl. Filenames are case-sensitive. If the template filename has the letters YYYY, MM, WW or DD in its name, these will be substituted for the year, month, week and day of month, respectively. So, a template with the name summary-YYYY-MM.html.tmpl would have name summary-2010-03.html for the month of March, 2010.

generate_once

When set to True, the template is processed only on the first invocation of the report engine service. This feature is useful for files that do not change when data values change, such as HTML files that define a layout. The default is False.

stale_age

File staleness age, in seconds. If the file is older than this age it will be generated from the template. If no stale_age is specified, then the file will be generated every time the generator runs.

Note

Precise control over when a report is run is available through use of the report_timing option in weewx.conf. The report_timing option uses a CRON-like setting to control precisely when a report is run. See the guide Scheduling report generation for details.

[[SummaryByDay]]

The SummaryByDay section defines some special behavior. Each template in this section will be used multiple times, each time with a different per-day timespan. Be sure to include YYYY, MM, and DD in the filename of any template in this section.

[[SummaryByMonth]]

The SummaryByMonth section defines some special behavior. Each template in this section will be used multiple times, each time with a different per-month timespan. Be sure to include YYYY and MM in the filename of any template in this section.

[[SummaryByYear]]

The SummaryByYear section defines some special behavior. Each template in this section will be used multiple times, each time with a different per-year timespan. Be sure to include YYYY in the filename of any template in this section.

[ImageGenerator]

This section describes the various options available to the image generator.

Part names in a WeeWX image
Part names in a WeeWX image

Overall options

These are options that affect the overall image.

anti_alias

Setting to 2 or more might give a sharper image, with fewer jagged edges. Experimentation is in order. Default is 1.

Effect of anti_alias option
A GIF showing the same image
with anti_alias=1, 2, and 4.

chart_background_color

The background color of the chart itself. Optional. Default is #d8d8d8.

chart_gridline_color

The color of the chart grid lines. Optional. Default is #a0a0a0

Example of day/night bands
Example of day/night bands in a one week image

daynight_day_color

The color to be used for the daylight band. Optional. Default is #ffffff.

daynight_edge_color

The color to be used in the transition zone between night and day. Optional. Default is #efefef, a mid-gray.

daynight_night_color

The color to be used for the nighttime band. Optional. Default is #f0f0f0, a dark gray.

image_background_color

The background color of the whole image. Optional. Default is #f5f5f5 ("SmokeGray")

image_width

image_height

The width and height of the image in pixels. Optional. Default is 300 x 180 pixels.

show_daynight

Set to true to show day/night bands in an image. Otherwise, set to false. This only looks good with day or week plots. Optional. Default is false.

skip_if_empty

If set to true, then skip the generation of the image if all data in it are null. If set to a time period, such as month or year, then skip the generation of the image if all data in that period are null. Default is false.

stale_age

Image file staleness age, in seconds. If the image file is older than this age it will be generated. If no stale_age is specified, then the image file will be generated every time the generator runs.

unit

Normally, the unit used in a plot is set by whatever unit group the types are in. However, this option allows overriding the unit used in a specific plot.

Various label options

These are options for the various labels used in the image.

axis_label_font_color

The color of the x- and y-axis label font. Optional. Default is black.

axis_label_font_path

The path to the font to be use for the x- and y-axis labels. Optional. If not given, or if WeeWX cannot find the font, then the default PIL font will be used.

axis_label_font_size

The size of the x- and y-axis labels in pixels. Optional. The default is 10.

bottom_label_font_color

The color of the bottom label font. Optional. Default is black.

bottom_label_font_path

The path to the font to be use for the bottom label. Optional. If not given, or if WeeWX cannot find the font, then the default PIL font will be used.

bottom_label_font_size

The size of the bottom label in pixels. Optional. The default is 10.

bottom_label_format

The format to be used for the bottom label. It should be a strftime format. Optional. Default is '%m/%d/%y %H:%M'.

bottom_label_offset

The margin of the bottom label from the bottom of the plot. Default is 3.

top_label_font_path

The path to the font to be use for the top label. Optional. If not given, or if WeeWX cannot find the font, then the default PIL font will be used.

top_label_font_size

The size of the top label in pixels. Optional. The default is 10.

unit_label_font_color

The color of the unit label font. Optional. Default is black.

unit_label_font_path

The path to the font to be use for the unit label. Optional. If not given, or if WeeWX cannot find the font, then the default PIL font will be used.

unit_label_font_size

The size of the unit label in pixels. Optional. The default is 10.

x_interval

The time interval in seconds between x-axis tick marks. Optional. If not given, a suitable default will be chosen.

x_label_format

The format to be used for the time labels on the x-axis. It should be a strftime format. Optional. If not given, a sensible format will be chosen automatically.

x_label_spacing

Specifies the ordinal increment between labels on the x-axis: For example, 3 means a label every 3rd tick mark. Optional. The default is 2.

y_label_side

Specifies if the y-axis labels should be on the left, right, or both sides of the graph. Valid values are left, right or both. Optional. Default is left.

y_label_spacing

Specifies the ordinal increment between labels on the y-axis: For example, 3 means a label every 3rd tick mark. Optional. The default is 2.

y_nticks

The nominal number of ticks along the y-axis. The default is 10.

Plot scaling options

time_length

The nominal length of the time period to be covered in seconds. Alternatively, a duration notation can be used. The exact length of the x-axis is chosen by the plotting engine to cover this period. Optional. Default is 86400 (one day).

yscale

A 3-way tuple (ylow, yhigh, min_interval), where ylow and yhigh are the minimum and maximum y-axis values, respectively, and min_interval is the minimum tick interval. If set to None, the corresponding value will be automatically chosen. Optional. Default is None, None, None. (Choose the y-axis minimum, maximum, and minimum increment automatically.)

Compass rose options

Example of a progressive vector plot
Example of a vector plot with a compass rose
in the lower-left

rose_label

The label to be used in the compass rose to indicate due North. Optional. Default is N.

rose_label_font_path

The path to the font to be use for the rose label (the letter "N," indicating North). Optional. If not given, or if WeeWX cannot find the font, then the default PIL font will be used.

rose_label_font_size

The size of the compass rose label in pixels. Optional. The default is 10.

rose_label_font_color

The color of the compass rose label. Optional. Default is the same color as the rose itself.

vector_rotate

Causes the vectors to be rotated by this many degrees. Positive is clockwise. If westerly winds dominate at your location (as they do at mine), then you may want to specify +90 for this option. This will cause the average vector to point straight up, rather than lie flat against the x-axis. Optional. The default is 0.

Shared plot line options

These are options shared by all the plot lines.

chart_line_colors

Each chart line is drawn in a different color. This option is a list of those colors. If the number of lines exceeds the length of the list, then the colors wrap around to the beginning of the list. Optional. In the case of bar charts, this is the color of the outline of the bar. Default is #0000ff, #00ff00, #ff0000. Individual line color can be overridden by using option color.

chart_fill_colors

A list of the color to be used as the fill of the bar charts. Optional. The default is to use the same color as the outline color (option chart_line_colors).

chart_line_width

Each chart line can be drawn using a different line width. This option is a list of these widths. If the number of lines exceeds the length of the list, then the widths wrap around to the beginning of the list. Optional. Default is 1, 1, 1. Individual line widths can be overridden by using option width.

Individual line options

These are options that are set for individual lines.

aggregate_interval

The time period over which the data should be aggregated, in seconds. Alternatively, a duration notation can be used. Required if aggregate_type has been set.

aggregate_type

The default is to plot every data point, but this is probably not a good idea for any plot longer than a day. By setting this option, you can aggregate data by a set time interval. Available aggregation types include avg, count, cumulative, diff, last, max, min, sum, and tderiv.

color

This option is to override the color for an individual line. Optional. Default is to use the color in chart_line_colors.

data_type

The SQL data type to be used for this plot line. For more information, see the section Including a type more than once in a plot. Optional. The default is to use the section name.

fill_color

This option is to override the fill color for a bar chart. Optional. Default is to use the color in chart_fill_colors.

label

The label to be used for this plot line in the top label. Optional. The default is to use the SQL variable name.

line_gap_fraction

If there is a gap between data points bigger than this fractional amount of the x-axis, then a gap will be drawn, rather than a connecting line. See Section Line gaps. Optional. The default is to always draw the line.

line_type

The type of line to be used. Choices are solid or none. Optional. Default is solid.

marker_size

The size of the marker. Optional. Default is 8.

marker_type

The type of marker to be used to mark each data point. Choices are cross, x, circle, box, or none. Optional. Default is none.

plot_type

The type of plot for this line. Choices are line, bar, or vector. Optional. Default is line.

width

This option is to override the line width for an individual line. Optional. Default is to use the width in chart_line_width.

[CopyGenerator]

This section is used by generator weewx.reportengine.CopyGenerator and controls which files are to be copied over from the skin directory to the destination directory. Think of it as "file generation," except that rather than going through the template engine, the files are simply copied over. It is useful for making sure CSS and Javascript files are in place.

copy_once

This option controls which files get copied over on the first invocation of the report engine service. Typically, this is things such as style sheets or background GIFs. Wildcards can be used.

copy_always

This is a list of files that should be copied on every invocation. Wildcards can be used.

Here is the [CopyGenerator] section from the Standard skin.conf

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

    # List of files to be copied only the first time the generator runs
    copy_once = backgrounds/*, weewx.css, mobile.css, favicon.ico

    # List of files to be copied each time the generator runs
    # copy_always = 

The Standard skin includes some background images, CSS files, and icons that need to be copied once. There are no files that need to be copied every time the generator runs.

[Generators]

This section defines the list of generators that should be run.

generator_list

This option controls which generators get run for this skin. It is a comma separated list. The generators will be run in this order.

Here is the [Generators] section from the Standard skin.conf

[Generators]
    generator_list = weewx.cheetahgenerator.CheetahGenerator, weewx.imagegenerator.ImageGenerator, weewx.reportengine.CopyGenerator

The Standard skin uses three generators: CheetahGenerator, ImageGenerator, and CopyGenerator.