URL that rsync uploads to is https://www.skahan.net/weewx/purpleair.html - this will not be available unless you're in US/CA/AU probably due to some geoip blocking that I have set up on the ISP side to try to limit how many bots bang on the site.
Same thing happens on chrome on mac os and iphone as well as Safari on mac os. The weewx host is a current RaspiOS pi4. Adding the encoding=utf_8 line didn't help, unfortunately. The encoding was previously set to html_entities in skin.conf I've attached the .tmpl file and skin.conf for the skin in case there are obvious errors therein. FWIW the skin is kinda ancient so it's possible I missed adding something along the way. On Thursday, August 24, 2023 at 3:58:44 PM UTC-7 Tom Keffer wrote: > Internal to WeeWX, the label microgram_per_meter_cubed is encoded in > Unicode. To be included in a template, it has to be converted to an > appropriate byte string using an encoding. By default, the Seasons > templates use html entities to do this encoding. The results will be in > simple ASCII. > > Note: this is *separate* from the encoding used by the templates > themselves, which is generally UTF-8. This is what you're setting with the > #encoding directive. This is useful if one were to include UTF-8 characters > *directly > in the templates themselves*. But, that's not what's happening here. > > The html entity encoding for the cube symbol is either "³", or > "³". For whatever reason, your Python installation is choosing the > latter, which your browser does not seem to be capable of interpreting as > the cube symbol. I've seen this happen when the file suffix is ".txt", but > yours is ".html" (check!). > > It may be a browser specific thing. What browser are you using? Perhaps > you can point us to the page? > > One thing you can try is another encoding besides html entities. For > example, utf-8. > > *[CheetahGenerator]* > * encoding=utf_8 * > > > > On Thu, Aug 24, 2023 at 3:30 PM vince <[email protected]> wrote: > >> Thanks. No joy. >> >> Added to top of the file under the echo line ala... >> >> ## Copyright 2009-2018 Tom Keffer, Matthew Wall >> ## Distributed under terms of GPLv3. See LICENSE.txt for your rights. >> #errorCatcher Echo >> #encoding UTF-8 >> >> #set $periods = $to_list($DisplayOptions.get('periods', ['day', 'week', >> 'month', 'year'])) >> #set $plot_groups = $to_list($DisplayOptions.get('plot_groups', >> ['tempdew', 'wind', 'rain'])) >> >> ## use this span to determine whether there are any data to consider. >> #set $recent=$span($day_delta=30, boundary='midnight') >> >> <!DOCTYPE html> >> <html lang="$lang"> >> <head> >> <meta charset="UTF-8"> >> <title>$station.location</title> >> <link rel="icon" type="image/png" href="favicon.ico" /> >> <link rel="stylesheet" type="text/css" href="seasons.css"/> >> #if $station.station_url >> <link rel="canonical" href="$station.station_url/$filename" /> >> #end if >> <script src="seasons.js"></script> >> </head> >> >> <body onload="setup();"> >> #include "titlebar.inc" >> >> And appended the AQI line to the footer to make it easier for me to find >> during testing... >> >> <p class="footnote"> >> $gettext("This station is controlled by <a >> href='https://weewx.com'>WeeWX</a>, >> an experimental weather software system written in Python.") >> AQI: >> $latest('purpleair_binding').aqi2_5.format(format_string="%.0f") >> ($latest('purpleair_binding').pm2_5_cf_1.format(format_string="%.1f")) >> >> >> Result looks like: >> This station is controlled by WeeWX <https://weewx.com/>, an >> experimental weather software system written in Python. AQI: 64 (17.9 >> µg/m³) >> >> Output in the .html is: >> <p class="footnote"> >> This station is controlled by <a href='https://weewx.com'>WeeWX</a>, >> an experimental weather software system written in Python. >> AQI: 64 (17.9 µg/m³) >> >> On Thursday, August 24, 2023 at 3:16:01 PM UTC-7 gjr80 wrote: >> >>> I notice the Seasons index.html.tmpl does not have a #encoding >>> directive (though the other Seasons .html.tmpl files do). Have you >>> tried adding a #encoding directive à la: >>> >>> #errorCatcher Echo #encoding UTF-8 <!DOCTYPE html> >>> >>> Gary >>> >>> On Friday, 25 August 2023 at 07:19:12 UTC+10 vince wrote: >>> >>>> Well I can't explain it at all. I appended the same .tmpl line at the >>>> bottom of index.html.tmpl for the Seasons skin (trusting Tom gets this >>>> stuff correctly) and I still see funny encoding in Safari + Chrome (mac) >>>> and in Chrome (iphone). I can only guess it has something to do with the >>>> locale or i18n settings on the pi4 that weewx is running on, but I'm just >>>> guessing completely at this point. >>>> >>>> On Thursday, August 24, 2023 at 12:54:21 PM UTC-7 Karen K wrote: >>>> >>>>> Unfortunately the greek my character and the cubic symbol are not >>>>> US-ASCII. So they have the 8th bit set. There are different methods to do >>>>> that. The older one is ISO 8859, where one byte is always one character. >>>>> The newer one is UTF-8 where one character can be 1, 2 or even more >>>>> bytes. >>>>> So if you have an UTF-8 character, containing of 2 bytes interpreted as >>>>> ISO >>>>> 8859, you see 2 characters instead of the one you want to see. >>>>> >>>>> So the question is: What does the browser think about the character >>>>> set? And what character set is used for Cheetah? >>>>> >>>>> See the first line of the templates *.html.tmpl. There is a line >>>>> beginning with #encoding followed by the name of a character set. That >>>>> name >>>>> must match the character set you used to save the file. >>>>> >>>>> Then there may be a line <meta charset="UTF-8" /> (or ISO-8859-1 >>>>> instead of UTF-8). >>>>> >>>>> Then, in skin.conf there may be lines "encoding = ...". What do they >>>>> say? >>>>> >>>>> Make sure, all the encoding directives match your file's encoding. >>>>> >>>>> vince schrieb am Donnerstag, 24. August 2023 um 21:29:46 UTC+2: >>>>> >>>>>> I have absolutely no idea what you just said. Sorry - US ASCII >>>>>> person here :-) >>>>>> >>>>>> View source shows >>>>>> AQI: 56 (14.6 µg/m³) >>>>>> >>>>>> and https://www.w3schools.com/charsets/ref_html_8859.asp matches up >>>>>> (circumflex accent and micro symbol) but I have no idea what to do about >>>>>> it. >>>>>> >>>>>> >>>>>> -- >> You received this message because you are subscribed to the Google Groups >> "weewx-user" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/weewx-user/d39d52c7-3a0d-4a2a-93a8-97fb2f329b7fn%40googlegroups.com >> >> <https://groups.google.com/d/msgid/weewx-user/d39d52c7-3a0d-4a2a-93a8-97fb2f329b7fn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/34810d7b-e939-4f26-9868-41da36ffc992n%40googlegroups.com.
purpleair.html.tmpl
Description: Binary data
[CheetahGenerator]
#encoding = html_entities
encoding = utf_8
# for alltime
#search_list_extensions = examples.xsearch.MyXSearch,
user.lastrain.vdsLastRainTags
#search_list_extensions = user.stats.MyStats, user.lastrain.vdsLastRainTags
# stats.py no longer needed in 5.0 (perhaps earlier
#####search_list_extensions = user.stats.MyStats, user.lastrain.lastRainTags
search_list_extensions = user.lastrain.lastRainTags
[[SummaryByMonth]]
# Reports that summarize "by month"
[[[NOAA_month]]]
encoding = strict_ascii
template = NOAA/NOAA-YYYY-MM.txt.tmpl
[[SummaryByYear]]
# Reports that summarize "by year"
[[[NOAA_year]]]
encoding = strict_ascii
template = NOAA/NOAA-YYYY.txt.tmpl
[[ToDate]]
[[[current]]]
template = current.html.tmpl
[[[phone]]]
template = phone.html.tmpl
[[[day]]]
template = index.html.tmpl
[[[week]]]
template = week.html.tmpl
[[[month]]]
template = month.html.tmpl
[[[year]]]
template = year.html.tmpl
[[[alltime]]]
template = alltime.html.tmpl
# [[[10year]]]
# template = 10year.html.tmpl
[[[purpleair]]]
template = purpleair.html.tmpl
[[[about]]]
template = about.html.tmpl
###############################################################################
[CopyGenerator]
copy_once = *.css, icons/*, favicon.ico, backgrounds/*, *.js,
RGraph/libraries/*, *.png
[Generators]
generator_list = weewx.cheetahgenerator.CheetahGenerator,
weewx.reportengine.CopyGenerator, weewx.imagegenerator.ImageGenerator
[Extras]
# forecast_table = /home/weewx/skins/forecast/forecast_table.inc
#radar_img = http://radar.weather.gov/ridge/lite/N0R/ATX_loop.gif
radar_img = https://www.ssd.noaa.gov/goes/west/wfo/sew/cvis.jpg
#radar_url =
http://radar.weather.gov/ridge/radar.php?product=NCR&rid=ATX&loop=yes
radar_url = https://www.ssd.noaa.gov/goes/west/wfo/sew/h5-loop-vis.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_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 = %.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"
hour = " hrs"
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 = %
second = " secs"
volt = " V"
watt_per_meter_squared = " W/m²"
NONE = ""
[[TimeFormats]]
# This section sets the string format to be used
# each time scale.
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
[[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
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
###############################################################################
[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
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
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
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.
# 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 = %m/%d/%y %H:%M
time_length = 97200 # == 27 hours
[[[daybarometer]]]
[[[[barometer]]]]
[[[dayhumidity]]]
[[[[outHumidity]]]]
[[[[inHumidity]]]]
[[[daytempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[daytempchill]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[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]]]]
[[[dayBaseball]]]
[[[[outTemp]]]]
label = OutTemp
[[[[extraTemp1]]]]
label = Ecowitt
[[[[extraTemp5]]]]
label = BaseballRoom
[[[dayecowitt]]]
yscale = None, None, 0.5
[[[[extraTemp1]]]]
[[[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]]]]
[[[daySensorStatus]]]
[[[[consBatteryVoltage]]]]
[[[[txBatteryStatus]]]]
# tom's quickie way
[[[dayMem]]]
#image_width = 800
#image_height = 400
y_label = "Mb"
[[[[soilMoist1]]]]
label = VmSize
[[[[soilMoist2]]]]
label = VmRSS
[[[[soilMoist3]]]]
label = Shared
[[[dayLoad]]]
#image_width = 800
#image_height = 400
y_label = "Load Average"
#[[[[soilTemp1]]]]
#label = 1min
[[[[soilTemp2]]]]
label = 5min
#[[[[soilTemp3]]]]
#label = 15min
[[[daypurpleair]]]
[[[[aqi2_5]]]]
data_binding = purpleair_binding
[[week_images]]
x_label_format = %d
bottom_label_format = %m/%d/%y %H:%M
time_length = 604800 # == 7 days
aggregate_type = avg
aggregate_interval = 3600
[[[weekbarometer]]]
[[[[barometer]]]]
[[[weekhumidity]]]
[[[[outHumidity]]]]
[[[[inHumidity]]]]
[[[weektempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[weektempchill]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[weekrain]]]
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
aggregate_interval = 86400
label = Rain (daily total)
[[[weekecowitt]]]
yscale = None, None, 0.5
[[[[extraTemp1]]]]
[[[weekBaseball]]]
[[[[outTemp]]]]
label = OutTemp
[[[[extraTemp1]]]]
label = Ecowitt
[[[[extraTemp5]]]]
label = BaseballRoom
[[[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]]]]
[[[weekSensorStatus]]]
[[[[consBatteryVoltage]]]]
[[[[txBatteryStatus]]]]
# tom's quickie way
[[[weekMem]]]
#image_width = 800
#image_height = 400
y_label = "Mb"
[[[[soilMoist1]]]]
label = VmSize
[[[[soilMoist2]]]]
label = VmRSS
[[[[soilMoist3]]]]
label = Shared
[[[weekLoad]]]
#image_width = 800
#image_height = 400
y_label = "Load Average"
#[[[[soilTemp1]]]]
#label = 1min
[[[[soilTemp2]]]]
label = 5min
#[[[[soilTemp3]]]]
#label = 15min
[[[weekpurpleair]]]
[[[[aqi2_5]]]]
data_binding = purpleair_binding
[[month_images]]
x_label_format = %d
bottom_label_format = %m/%d/%y %H:%M
time_length = 2592000 # == 30 days
aggregate_type = avg
aggregate_interval = 10800 # == 3 hours
show_daynight = false
[[[monthbarometer]]]
[[[[barometer]]]]
[[[monthhumidity]]]
[[[[outHumidity]]]]
[[[[inHumidity]]]]
[[[monthtempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[monthtempchill]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[monthrain]]]
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
aggregate_interval = 86400
label = Rain (daily total)
#[[[monthBaseball]]]
# [[[[outTemp]]]]
# label = OutTemp
# [[[[extraTemp5]]]]
# label = BaseballRoom
[[[monthecowitt]]]
yscale = None, None, 0.5
[[[[extraTemp1]]]]
[[[monthrx]]]
[[[[rxCheckPercent]]]]
[[[daywindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[monthwind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
aggregate_type = max
[[[monthinside]]]
[[[[inTemp]]]]
[[[monthwinddir]]]
yscale = 0.0, 360.0, 45.0
[[[[windDir]]]]
[[[monthwindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[monthradiation]]]
[[[[radiation]]]]
[[[monthSensorStatus]]]
[[[[consBatteryVoltage]]]]
[[[[txBatteryStatus]]]]
# tom's quickie way
[[[weekMem]]]
#image_width = 800
#image_height = 400
y_label = "Mb"
[[[[soilMoist1]]]]
label = VmSize
[[[[soilMoist2]]]]
label = VmRSS
[[[[soilMoist3]]]]
label = Shared
[[[monthLoad]]]
#image_width = 800
#image_height = 400
y_label = "Load Average"
#[[[[soilTemp1]]]]
#label = 1min
[[[[soilTemp2]]]]
label = 5min
#[[[[soilTemp3]]]]
#label = 15min
[[[monthpurpleair]]]
[[[[aqi2_5]]]]
data_binding = purpleair_binding
#
# # superseded by xaggs
# # this uses the 'historical' extension
# [[[historical]]]
# image_width = 800
# image_height = 500
# [[[[hi]]]]
# data_type = outTemp
# aggregate_type = max
# label = High
# [[[[low]]]]
# data_type = outTemp
# aggregate_type = min
# label = Low
# [[[[hist_hi]]]]
# data_type = outTemp
# aggregate_type = historical_max
# marker_type = cross
# line_type = none
# label = Historical High
# [[[[hist_lo]]]]
# data_type = outTemp
# aggregate_type = historical_min
# marker_type = cross
# line_type = none
# label = Historical Low Temperature
#
[[year_images]]
x_label_format = %m/%d
bottom_label_format = %m/%d/%y
time_length = 31536000 # == 365 days
aggregate_type = avg
aggregate_interval = 86400
show_daynight = false
[[[yearbarometer]]]
[[[[barometer]]]]
[[[yearhumidity]]]
[[[[outHumidity]]]]
[[[[inHumidity]]]]
[[[yeartempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
# 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)
#[[[yearBaseball]]]
# [[[[outTemp]]]]
# label = OutTemp
# [[[[extraTemp1]]]]
# label = Ecowitt
# [[[[extraTemp5]]]]
# label = BaseballRoom
[[[yearecowitt]]]
yscale = None, None, 0.5
[[[[extraTemp1]]]]
[[[yearrx]]]
[[[[rxCheckPercent]]]]
[[[yearinside]]]
[[[[inTemp]]]]
[[[yearwinddir]]]
yscale = 0.0, 360.0, 45.0
[[[[windDir]]]]
[[[yearwindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[yearradiation]]]
[[[[radiation]]]]
[[[yearSensorStatus]]]
[[[[consBatteryVoltage]]]]
[[[[txBatteryStatus]]]]
[[[yearpurpleair]]]
[[[[aqi2_5]]]]
data_binding = purpleair_binding
# 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
#-------------
## these courtesy of John Masters -
https://groups.google.com/forum/?hl=en&fromgroups#!searchin/weewx-user/10$20year%7Csort:date/weewx-user/C6buuzJcKVs/0MiJ6yqkBgAJ
#
#[[10year_images]]
# x_label_format = %m/%y
# bottom_label_format = %m/%d/%y
# top_label_font_size = 14
# time_length = 283824000 # == 9years
# aggregate_type = avg
# aggregate_interval = 86400 # == 1day
# show_daynight = false
# image_width = 800
# image_height = 300
#
# # Daily high/lows:
# [[[10yearhilow]]]
# [[[[hi]]]]
# data_type = outTemp
# aggregate_type = max
# label = High
# [[[[low]]]]
# data_type = outTemp
# aggregate_type = min
# label = Low Temperature
#
# [[[10yearwind]]]
# [[[[windSpeed]]]]
# [[[[windGust]]]]
# aggregate_type = max
#
# [[[10yearwindvec]]]
# [[[[windvec]]]]
# plot_type = vector
#
# [[[10yearrain]]]
# 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)
#
# [[[10yearhumidity]]]
# [[[[outHumidity]]]]
# [[[[inHumidity]]]]
#
# [[[10yearbarometer]]]
# [[[[barometer]]]]
#
#
###############################################################################
