Thanks for your intrest in my problem. I do have two major changes within
section [imagegenerator]. I've increased the image_width from 500 to 600.
And I've added a second line within some images to include forcast data
from a different database like e.g.
[[[daybarometer]]]
[[[[barometer]]]]
[[[[forecast_barometer]]]]
data_type = barometer
data_binding = dwd_binding
label = ' '
color = blue
And to draw that forecast data I use my new option "time_offset = 36000 #
10 hours". It's intention is to use the additional 100pixel to be filled by
forecast.
See my full skin.conf appended here.
Regards, Michael
gjr80 schrieb am Montag, 1. Januar 2024 um 21:46:42 UTC+1:
> Thank you, so that is the code, just need the plot definition. In fact,
> the entire [ImageGenerator] stanza from the config file in use would be
> best.
>
> Gary
>
> On Monday 1 January 2024 at 23:19:52 UTC+10 [email protected] wrote:
>
>> My code is available as a (rejected) pull request
>> https://github.com/weewx/weewx/pull/906 - but the code itself works
>> fine. It enhances the timescale some days into the future to plot forecast
>> data. See my first post for a sample (only forecast data is plotted,
>> measurement data are missing). I assume that my change has a sideeffect
>> when weewx checks if there is data to be drawn. But I have no idea why my
>> problem only arise for the measurement data. From the sample you clearly
>> see that the forecast data contains data from 2023 and 2024, and is
>> plotted. The measuretdata of course only contains data from the past. And
>> even images where no forecast data is to be plotted (e. g dayUV) are
>> missing completely, as soon as the timescale has parts in 2024 and current
>> time is 2023.
>>
>> And the problem is difficult to reproduce - as soon as the measurement
>> data has reached 2024, even images generated for old times are fine.
>>
>> gjr80 schrieb am Montag, 1. Januar 2024 um 11:19:42 UTC+1:
>>
>>> I suspect you will not get too much feedback of value until you post the
>>> exact code you are using along with the plot definition from skin.conf. The
>>> post you linked is very general in nature and it's not clear if the code
>>> you are using is that same as the PRs you submitted or otherwise. I am
>>> happy to have a look through your code but I don't want to be chasing my
>>> tail or going down the wrong path.
>>>
>>> Gary
>>> On Monday 1 January 2024 at 18:10:10 UTC+10 [email protected]
>>> wrote:
>>>
>>>> As expected all images are fine as soon as current time has reached the
>>>> new year 2024. To be more precise - it has to be 5 min past midnight
>>>> before
>>>> the images are fine.
>>>>
>>>> I've tried to understand the logic within imagegenerator.py near its
>>>> call of scaletime. Since the x-axis is labelled fine & day/night rendering
>>>> works I assume that x_domain is calculated correctly.
>>>> There is a loop over all line_name - it might miss the entry for
>>>> measured data. Here I should debug, but:
>>>>
>>>> I've tried to reproduce my problems using e.g.
>>>>
>>>> sudo wee_reports --date=2023-12-31 --time=22:00
>>>>
>>>> Now it is generated perfectly as expected. Of course I do no longer
>>>> have the same input data - the measurement data now is available for times
>>>> within 2024, and the forecast data is more recent. Thus it's more
>>>> difficult
>>>> to reproduce the problem - I've to use older weewx.sdb (luckily I do have
>>>> a
>>>> recent backup)....
>>>>
>>>> BTW Happy new year, Michael
>>>>
>>>> Michael Waldor schrieb am Sonntag, 31. Dezember 2023 um 20:05:58 UTC+1:
>>>>
>>>>> I would agree, but why is the forecast data drawn fine and only the
>>>>> measured data not? My change to scaletime only calculates the time range
>>>>> -
>>>>> and that looks fine to me (see the included image within my first post).
>>>>> scaletime does return a triple of data - start, stop, and stepwidth.
>>>>> Works
>>>>> fine for forecast. AND works fine if there is no change of the year. I
>>>>> assume furthermore that scaletime does not use any global variables. But
>>>>> your program is very clean designed, thus I do not expect, that scaletime
>>>>> could create sideeffects. Tomorrow I'll know more...
>>>>>
>>>>> Tom Keffer schrieb am Sonntag, 31. Dezember 2023 um 16:40:55 UTC+1:
>>>>>
>>>>>> Your modified version of scaletime() is surely causing the problem.
>>>>>> Its semantics were never clear to me, and now it appears we're
>>>>>> discovering
>>>>>> the side effects.
>>>>>>
>>>>>> If you have a debugger, use it to step through running wee_reports.
>>>>>> It will probably become evident what the problem is.
>>>>>>
>>>>>> On Sun, Dec 31, 2023 at 7:17 AM 'Michael Waldor' via weewx-user <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> And since now I encounter the same problem with my day images. And
>>>>>>> the timescale is extended into the first hours of next year. Thus I'm
>>>>>>> quite
>>>>>>> confident that my problems will disappear as soon as the next year
>>>>>>> starts.
>>>>>>>
>>>>>>> To me it looks as if the access to weewx.sdb searches at a wrong
>>>>>>> time. Sadly I can't look deeper to debug that. There are no error
>>>>>>> messages
>>>>>>> within journalctl.
>>>>>>>
>>>>>>> I'm using two sqlite DBs - the original weewx.sdb of course and a
>>>>>>> second one with forecast data. Maybe if the border of a year is crossed
>>>>>>> the
>>>>>>> weewx.sdb becomes unavailable? I can even report the time - it happens
>>>>>>> exactly at 14:00. Afterwards the timeaxis starts to go till 3 o'clock
>>>>>>> in
>>>>>>> the night (till 14:00 it goes till midnight). And only forecast data is
>>>>>>> drawn (but containing data from today and tomorrow - no problem with
>>>>>>> year
>>>>>>> boundary). Even dayUV is no longer updated despite not using forecast
>>>>>>> data
>>>>>>> at all (but with the same timeaxis crossing the year boundary).
>>>>>>>
>>>>>>> Michael Waldor schrieb am Samstag, 30. Dezember 2023 um 10:20:05
>>>>>>> UTC+1:
>>>>>>>
>>>>>>>> Since (today?) all week images contain no measured data, only the
>>>>>>>> forecast data are visible.
>>>>>>>> [image: weektempdew.png]
>>>>>>>> I have to admit that I've patched utilities.py to shift the right
>>>>>>>> border of the timescale into the "future". It works fine all over the
>>>>>>>> year.
>>>>>>>> To my surprise all (measured) data is missing. If I drop my shift the
>>>>>>>> data
>>>>>>>> re-appears. But - as you see from the image above - the timescale
>>>>>>>> looks
>>>>>>>> fine and is exactly as intended. I've even debugged my modification
>>>>>>>> for the
>>>>>>>> current date, and everythind works as intended. But why are there no
>>>>>>>> data
>>>>>>>> from the past? Even from the above image one can see that
>>>>>>>> imagegenerator.py
>>>>>>>> can cross the year boundary perfectly.
>>>>>>>>
>>>>>>>> And there IS data available within the past (I've checked this by
>>>>>>>> dropping my change, and I've got a plot between 23. and 31.).
>>>>>>>>
>>>>>>>> Why does weewx don't see the missing data? Images without forecast
>>>>>>>> data aren't generated at all, e.g. weekUV.
>>>>>>>>
>>>>>>>> For more details on my patch see
>>>>>>>> https://groups.google.com/g/weewx-user/c/76qdbSy3bbQ/m/oIlk3sKrBgAJ
>>>>>>>>
>>>>>>>> Regards, Michael
>>>>>>>>
>>>>>>>> --
>>>>>>> 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/b4d802ee-c929-4ebb-aee9-e52c040a24c0n%40googlegroups.com
>>>>>>>
>>>>>>> <https://groups.google.com/d/msgid/weewx-user/b4d802ee-c929-4ebb-aee9-e52c040a24c0n%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/378e1cee-a998-4899-bd65-1f251ccfdd08n%40googlegroups.com.
###############################################################################
# SEASONS SKIN CONFIGURATION FILE #
# Copyright (c) 2018-2021 Tom Keffer <[email protected]> and Matthew Wall #
# See the file LICENSE.txt for your rights. #
###############################################################################
SKIN_NAME = Seasons_DWD
SKIN_VERSION = 4.10.2d
###############################################################################
# The following section is for any extra tags that you want to be available in
# the templates
[Extras]
# This radar image would be available as $Extras.radar_img
radar_img = https://www.dwd.de/DWD/wetter/radar/rad_baw_akt.jpg
# This URL will be used as the image hyperlink:
radar_url =
https://www.dwd.de/DE/leistungen/radarbild_film/radarbild_film.html
# This water gauge image would be available as $Extras.water_gauge_img
water_gauge_img = https://www.hvz.baden-wuerttemberg.de/gifs/00015-2001.GIF
# This URL will be used as the image hyperlink:
water_gauge_url = https://www.hvz.baden-wuerttemberg.de/pegel.html?id=00015
# Similar to radar, but for satellite image.
#satellite_img =
http://images.intellicast.com/WxImages/SatelliteLoop/hipacsat_None_anim.gif
#satellite_url =
http://images.intellicast.com/WxImages/SatelliteLoop/hipacsat_None_anim.gif
# To display a map, enter an API key for google maps
#google_maps_apikey = xxx
# If you have a Google Analytics ID, uncomment and edit the next line, and
# the analytics code will be included in your generated HTML files:
#googleAnalyticsId = UA-12345678-1
###############################################################################
# The following section contains variables that determine which observations
# and plots will be shown in the template files, and their order. Like other
# configuration options, these can be overridden in the weewx config file.
[DisplayOptions]
# Show link to RSS feed?
show_rss = False
# Show link to NOAA-style summary reports?
show_reports = True
# This list determines which types will appear in the "current conditions"
# section, as well as in which order.
observations_current = outTemp, heatindex, windchill, dewpoint,
outHumidity, barometer, windSpeed, rain, rainRate, UV, radiation,
lightning_strike_count, inTemp, inHumidity, extraTemp1, extraHumid1,
extraTemp2, extraHumid2, pm1_0, pm2_5, pm10_0
# This list determines which types will appear in the "statistics" and
# "statistical summary" sections, as well as in which order.
observations_stats = outTemp, heatindex, windchill, dewpoint, outHumidity,
barometer, windSpeed, rain, rainRate, ET, hail, hailRate, snow, UV, radiation,
lightning_strike_count, lightning_distance, inTemp, inHumidity, extraTemp1,
extraHumid1, extraTemp2, extraHumid2, extraTemp3, extraHumid3, extraTemp4,
extraHumid4, extraTemp5, extraHumid5, extraTemp6, extraHumid6, extraTemp7,
extraHumid7, extraTemp8, extraHumid8, leafTemp1, leafTemp2, leafWet1, leafWet2,
soilTemp1, soilTemp2, soilTemp3, soilTemp4, soilMoist1, soilMoist2, soilMoist3,
soilMoist4, pm1_0, pm2_5, pm10_0, co, co2, nh3, no2, o3, so2
# This list determines which types will appear in the RSS feed.
observations_rss = outTemp, inTemp, barometer, windSpeed, rain, rainRate,
windchill, heatindex, dewpoint, outHumidity, inHumidity
# Some observations display a sum rather than min/max values
obs_type_sum = rain, ET, hail, snow, lightning_strike_count
# Some observations display only the max value
obs_type_max = rainRate, hailRate, snowRate, UV
# The sensor status information is used in the sensor pages. These lists
# determine which database fields will be shown, as well as the order in
# which they will be displayed.
sensor_connections = rxCheckPercent, signal1, signal2, signal3, signal4,
signal5, signal6, signal7, signal8
sensor_batteries = outTempBatteryStatus, inTempBatteryStatus,
rainBatteryStatus, hailBatteryStatus, snowBatteryStatus, windBatteryStatus,
uvBatteryStatus, txBatteryStatus, batteryStatus1, batteryStatus2,
batteryStatus3, batteryStatus4, batteryStatus5, batteryStatus6, batteryStatus7,
batteryStatus8
sensor_voltages = consBatteryVoltage, heatingVoltage, supplyVoltage,
referenceVoltage
# This list determines which plots will be shown, as well as the order in
# which they will be displayed. The names refer to the plots defined in
# the ImageGenerator section, without any time span prefix. For example,
# the name 'wind' refers to 'daywind', 'weekwind', 'monthwind', and
# 'yearwind'.
plot_groups = barometer, tempdew, tempfeel, hum, wind, winddir, windvec,
rain, ET, UV, radiation, lightning, tempin, humin, tempext, humext, tempext2,
humext2, templeaf, wetleaf, tempsoil, moistsoil, pm
telemetry_plot_groups =rx, volt
# The list of time spans used within the skin
periods = day, week, month, year
###############################################################################
# The CheetahGenerator creates files from templates. This section
# specifies which files will be generated from which template.
[CheetahGenerator]
# Possible encodings include 'html_entities', 'strict_ascii',
'normalized_ascii',
# as well as those listed in
https://docs.python.org/3/library/codecs.html#standard-encodings
encoding = html_entities
[[SummaryByMonth]]
# Reports that summarize "by month"
[[[NOAA_month]]]
encoding = normalized_ascii
template = NOAA/NOAA-%Y-%m.txt.tmpl
[[SummaryByYear]]
# Reports that summarize "by year"
[[[NOAA_year]]]
encoding = normalized_ascii
template = NOAA/NOAA-%Y.txt.tmpl
[[ToDate]]
# Reports that show statistics "to date", such as day-to-date,
# week-to-date, month-to-date, etc.
[[[index]]]
template = index.html.tmpl
[[[statistics]]]
template = statistics.html.tmpl
[[[dwd_forecast]]]
template = forecast-KL.html.tmpl
[[[telemetry]]]
template = telemetry.html.tmpl
[[[tabular]]]
template = tabular.html.tmpl
[[[celestial]]]
template = celestial.html.tmpl
# Uncomment the following to generate a celestial page only once
# an hour instead of every report cycle.
# stale_age = 3600
[[[RSS]]]
template = rss.xml.tmpl
###############################################################################
# The CopyGenerator copies files from one location to another.
[CopyGenerator]
# List of files to be copied only the first time the generator runs
copy_once = seasons.css, seasons.js, favicon.ico, font/*.woff, font/*.woff2
# List of files to be copied each time the generator runs
# copy_always =
###############################################################################
# The ImageGenerator creates image plots of data.
[ImageGenerator]
# This section lists all the images to be generated, what SQL types are to
be included in them,
# along with many plotting options. There is a default for almost
everything. Nevertheless,
# values for most options are included to make it easy to see and
understand the options.
#
# Nearly all types in the wview-extended schema are included. However,
because of the
# 'skip_if_empty' option, only the plots with non-null data will be
actually produced.
#
# Fonts can be anything accepted by the Python Imaging Library (PIL), which
includes truetype
# (.ttf), or PIL's own font format (.pil). 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). A relative path for a font is
relative to the SKIN_ROOT.
# 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 = 600
image_height = 180
image_background_color = "#ffffff"
chart_background_color = "#ffffff"
chart_gridline_color = "#d0d0d0"
# Setting to 2 or more might give a sharper image with fewer jagged edges
anti_alias = 1
top_label_font_path = font/OpenSans-Bold.ttf
top_label_font_size = 14
unit_label_font_path = font/OpenSans-Bold.ttf
unit_label_font_size = 12
unit_label_font_color = "#787878"
bottom_label_font_path = font/OpenSans-Regular.ttf
bottom_label_font_size = 12
bottom_label_font_color = "#787878"
bottom_label_offset = 3
axis_label_font_path = font/OpenSans-Regular.ttf
axis_label_font_size = 10
axis_label_font_color = "#787878"
# Options for the compass rose, used for progressive vector plots
rose_label = N
rose_label_font_path = font/OpenSans-Regular.ttf
rose_label_font_size = 9
rose_label_font_color = "#222222"
# Default colors for the plot lines. These can be overridden for
# individual lines using option 'color'.
chart_line_colors = "#4282b4", "#b44242", "#42b442", "#42b4b4", "#b442b4"
# Default fill colors for bar charts. These can be overridden for
# individual bar plots using option 'fill_color'.
chart_fill_colors = "#72b2c4", "#c47272", "#72c472", "#72c4c4", "#c472c4"
# Type of line. Options are 'solid' or 'none'.
line_type = 'solid'
# Size of marker in pixels
marker_size = 8
# Type of marker. Options are 'cross', 'x', 'circle', 'box', or 'none'.
marker_type ='none'
# 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.05
# This controls whether day/night bands will be shown. They only look good
# on plots wide enough to show individual days such as 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 = "#fdfaff"
daynight_night_color = "#dfdfe2"
daynight_edge_color = "#e0d8d8"
# Here's an alternative, using a blue/yellow tint:
#daynight_day_color = "#fffff8"
#daynight_night_color = "#f8f8ff"
#daynight_edge_color = "#fff8f8"
# Default will be a line plot of width 1, without aggregation.
# Can get overridden at any level.
plot_type = line
width = 1
aggregate_type = none
# Do not generate a plot if it does not have any non-null data:
skip_if_empty = year
# 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.
[[day_images]]
x_label_format = %H:%M
# x_interval = 21600 # 6h
bottom_label_format = %x %X
time_length = 97200 # 27 hours
# time_length = 100800 # 28 hours
time_offset = 36000 # 10 hours
[[[daybarometer]]]
[[[[barometer]]]]
[[[[forecast_barometer]]]]
data_type = barometer
data_binding = dwd_binding
label = ' '
color = blue
[[[daytempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[[forecast_outTemp]]]]
data_type = outTemp
data_binding = dwd_binding
label = ' '
color = blue
[[[[forecast_dewpoint]]]]
data_type = dewpoint
data_binding = dwd_binding
label = ' '
color = red
# [[[daytempdew]]]
# [[[[outTemp]]]]
# [[[[dewpoint]]]]
[[[daytempfeel]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[[forecast_heatindex]]]]
data_type = heatindex
data_binding = dwd_binding
label = ' '
color = red
[[[[forecast_windchill]]]]
data_type = windchill
data_binding = dwd_binding
label = ' '
color = blue
[[[dayhum]]]
[[[[outHumidity]]]]
[[[[forecast_outHumidity]]]]
data_type = outHumidity
data_binding = dwd_binding
label = ' '
color = blue
[[[daytempin]]]
[[[[inTemp]]]]
[[[dayhumin]]]
[[[[inHumidity]]]]
# Plot extra temperatures. You can add more temperature sensors here.
# However, you might want to make a second plot if your system has more
# than 3 extra sensors, otherwise the plots can become rather busy.
[[[daytempext]]]
yscale = None, None, 0.5
[[[[extraTemp1]]]]
[[[[extraTemp2]]]]
[[[[extraTemp3]]]]
[[[[extraTemp4]]]]
[[[daytempext2]]]
yscale = None, None, 0.5
[[[[extraTemp5]]]]
[[[[extraTemp6]]]]
[[[[extraTemp7]]]]
[[[[extraTemp8]]]]
[[[dayhumext]]]
[[[[extraHumid1]]]]
[[[[extraHumid2]]]]
[[[[extraHumid3]]]]
[[[[extraHumid4]]]]
[[[dayhumext2]]]
[[[[extraHumid5]]]]
[[[[extraHumid6]]]]
[[[[extraHumid7]]]]
[[[[extraHumid8]]]]
[[[daytempleaf]]]
[[[[leafTemp1]]]]
[[[[leafTemp2]]]]
[[[daywetleaf]]]
[[[[leafWet1]]]]
[[[[leafWet2]]]]
[[[daytempsoil]]]
[[[[soilTemp1]]]]
[[[[soilTemp2]]]]
[[[[soilTemp3]]]]
[[[[soilTemp4]]]]
[[[daymoistsoil]]]
[[[[soilMoist1]]]]
[[[[soilMoist2]]]]
[[[[soilMoist3]]]]
[[[[soilMoist4]]]]
[[[daypm]]]
[[[[pm1_0]]]]
[[[[pm2_5]]]]
[[[[pm10_0]]]]
[[[daylightning]]]
yscale = None, None, 1
plot_type = bar
[[[[lightning_strike_count]]]]
aggregate_type = sum
aggregate_interval = hour
label = Lightning (hourly total)
[[[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 = hour
label = Rain (hourly total)
[[[[forecast_rain]]]]
data_type = rain
data_binding = dwd_binding
label = ' '
color = blue
fill_color = lightblue
aggregate_type = sum
aggregate_interval = hour
[[[daywind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
[[[[forecast_windSpeed]]]]
data_type = windSpeed
data_binding = dwd_binding
label = ' '
color = blue
[[[[forecast_windGust]]]]
data_type = windGust
data_binding = dwd_binding
label = ' '
color = red
[[[daywinddir]]]
# Hardwire in the y-axis scale for wind direction
yscale = 0.0, 360.0, 45.0
line_type = None
marker_type = box
marker_size = 2
[[[[windDir]]]]
[[[[forecast_windDir]]]]
data_type = windDir
data_binding = dwd_binding
label = ' '
color = blue
[[[daywindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[[forecast_windvec]]]]
data_type = windvec
data_binding = dwd_binding
plot_type = vector
label = ' '
color = blue
[[[dayET]]]
# Make sure the y-axis increment is at least 0.02 for the ET plot
yscale = None, None, 0.02
plot_type = bar
[[[[ET]]]]
aggregate_type = sum
aggregate_interval = hour
label = Evapotranspiration (hourly total)
[[[dayUV]]]
# If your radiation sensor has a bounded scale, enforce that here.
# yscale = 0, 16, 1
[[[[UV]]]]
[[[dayradiation]]]
[[[[radiation]]]]
[[[dayrx]]]
yscale = 0.0, 100.0, 25.0
[[[[rxCheckPercent]]]]
[[[dayvolt]]]
[[[[consBatteryVoltage]]]]
[[[[heatingVoltage]]]]
[[[[supplyVoltage]]]]
[[[[referenceVoltage]]]]
[[week_images]]
x_label_format = %d
bottom_label_format = %x %X
time_length = 604800 # 7 days
time_offset = 259200 # 3 days
aggregate_type = avg
aggregate_interval = hour
[[[weekbarometer]]]
[[[[barometer]]]]
[[[[forecast_barometer]]]]
data_type = barometer
data_binding = dwd_binding
label = ' '
color = blue
[[[weektempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[[forecast_outTemp]]]]
data_type = outTemp
data_binding = dwd_binding
label = ' '
color = blue
[[[[forecast_dewpoint]]]]
data_type = dewpoint
data_binding = dwd_binding
label = ' '
color = red
[[[weektempfeel]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[[forecast_heatindex]]]]
data_type = heatindex
data_binding = dwd_binding
label = ' '
color = red
[[[[forecast_windchill]]]]
data_type = windchill
data_binding = dwd_binding
label = ' '
color = blue
[[[weektempin]]]
[[[[inTemp]]]]
[[[weektempext]]]
yscale = None, None, 0.5
[[[[extraTemp1]]]]
[[[[extraTemp2]]]]
[[[[extraTemp3]]]]
[[[[extraTemp4]]]]
[[[weektempext2]]]
yscale = None, None, 0.5
[[[[extraTemp5]]]]
[[[[extraTemp6]]]]
[[[[extraTemp7]]]]
[[[[extraTemp8]]]]
[[[weekhum]]]
[[[[outHumidity]]]]
[[[[forecast_outHumidity]]]]
data_type = outHumidity
data_binding = dwd_binding
label = ' '
color = blue
[[[weekhumin]]]
[[[[inHumidity]]]]
[[[weekhumext]]]
[[[[extraHumid1]]]]
[[[[extraHumid2]]]]
[[[[extraHumid3]]]]
[[[[extraHumid4]]]]
[[[weekhumext2]]]
[[[[extraHumid5]]]]
[[[[extraHumid6]]]]
[[[[extraHumid7]]]]
[[[[extraHumid8]]]]
[[[weektempleaf]]]
[[[[leafTemp1]]]]
[[[[leafTemp2]]]]
[[[weekwetleaf]]]
[[[[leafWet1]]]]
[[[[leafWet2]]]]
[[[weektempsoil]]]
[[[[soilTemp1]]]]
[[[[soilTemp2]]]]
[[[[soilTemp3]]]]
[[[[soilTemp4]]]]
[[[weekmoistsoil]]]
[[[[soilMoist1]]]]
[[[[soilMoist2]]]]
[[[[soilMoist3]]]]
[[[[soilMoist4]]]]
[[[weekpm]]]
[[[[pm1_0]]]]
[[[[pm2_5]]]]
[[[[pm10_0]]]]
[[[weeklightning]]]
yscale = None, None, 1
plot_type = bar
[[[[lightning_strike_count]]]]
aggregate_type = sum
aggregate_interval = day
label = Lightning (daily total)
[[[weekrain]]]
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
aggregate_interval = day
label = Rain (daily total)
[[[[forecast_rain]]]]
data_type = rain
data_binding = dwd_binding
label = ' '
color = blue
fill_color = lightblue
aggregate_type = sum
aggregate_interval = day
[[[weekwind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
aggregate_type = max
[[[[forecast_windSpeed]]]]
data_type = windSpeed
data_binding = dwd_binding
label = ' '
color = blue
[[[[forecast_windGust]]]]
data_type = windGust
data_binding = dwd_binding
aggregate_type = max
label = ' '
color = red
[[[weekwinddir]]]
yscale = 0.0, 360.0, 45.0
line_type = None
marker_type = box
marker_size = 2
[[[[windDir]]]]
[[[[forecast_windDir]]]]
data_type = windDir
data_binding = dwd_binding
label = ' '
color = blue
[[[weekwindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[[forecast_windvec]]]]
data_type = windvec
data_binding = dwd_binding
plot_type = vector
label = ' '
color = blue
[[[weekET]]]
yscale = None, None, 0.02
plot_type = bar
[[[[ET]]]]
aggregate_type = sum
aggregate_interval = day
label = Evapotranspiration (daily total)
[[[weekUV]]]
# yscale = 0, 16, 1
[[[[UV]]]]
[[[weekradiation]]]
[[[[radiation]]]]
[[[weekrx]]]
yscale = 0.0, 100.0, 25.0
[[[[rxCheckPercent]]]]
[[[weekvolt]]]
[[[[consBatteryVoltage]]]]
[[[[heatingVoltage]]]]
[[[[supplyVoltage]]]]
[[[[referenceVoltage]]]]
[[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]]]]
[[[monthtempfeel]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[monthtempin]]]
[[[[inTemp]]]]
[[[monthtempext]]]
yscale = None, None, 0.5
[[[[extraTemp1]]]]
[[[[extraTemp2]]]]
[[[[extraTemp3]]]]
[[[[extraTemp4]]]]
[[[monthtempext2]]]
yscale = None, None, 0.5
[[[[extraTemp5]]]]
[[[[extraTemp6]]]]
[[[[extraTemp7]]]]
[[[[extraTemp8]]]]
[[[monthhum]]]
[[[[outHumidity]]]]
[[[monthhumin]]]
[[[[inHumidity]]]]
[[[monthhumext]]]
[[[[extraHumid1]]]]
[[[[extraHumid2]]]]
[[[[extraHumid3]]]]
[[[[extraHumid4]]]]
[[[monthhumext2]]]
[[[[extraHumid5]]]]
[[[[extraHumid6]]]]
[[[[extraHumid7]]]]
[[[[extraHumid8]]]]
[[[monthtempleaf]]]
[[[[leafTemp1]]]]
[[[[leafTemp2]]]]
[[[monthwetleaf]]]
[[[[leafWet1]]]]
[[[[leafWet2]]]]
[[[monthtempsoil]]]
[[[[soilTemp1]]]]
[[[[soilTemp2]]]]
[[[[soilTemp3]]]]
[[[[soilTemp4]]]]
[[[monthmoistsoil]]]
[[[[soilMoist1]]]]
[[[[soilMoist2]]]]
[[[[soilMoist3]]]]
[[[[soilMoist4]]]]
[[[monthpm]]]
[[[[pm1_0]]]]
[[[[pm2_5]]]]
[[[[pm10_0]]]]
[[[monthlightning]]]
yscale = None, None, 1
plot_type = bar
[[[[lightning_strike_count]]]]
aggregate_type = sum
aggregate_interval = day
label = Lightning (daily total)
[[[monthrain]]]
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
aggregate_interval = day
label = Rain (daily total)
[[[monthwind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
aggregate_type = max
[[[monthwinddir]]]
yscale = 0.0, 360.0, 45.0
line_type = None
marker_type = box
marker_size = 2
[[[[windDir]]]]
[[[monthwindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[monthET]]]
yscale = None, None, 0.02
plot_type = bar
[[[[ET]]]]
aggregate_type = sum
aggregate_interval = day
label = Evapotranspiration (daily total)
[[[monthUV]]]
# yscale = 0, 16, 1
[[[[UV]]]]
[[[monthradiation]]]
[[[[radiation]]]]
[[[monthrx]]]
yscale = 0.0, 100.0, 25.0
[[[[rxCheckPercent]]]]
[[[monthvolt]]]
[[[[consBatteryVoltage]]]]
[[[[heatingVoltage]]]]
[[[[supplyVoltage]]]]
[[[[referenceVoltage]]]]
[[year_images]]
x_label_format = %m
bottom_label_format = %x %X
time_length = 31536000 # 365 days
aggregate_type = avg
aggregate_interval = day
show_daynight = false
[[[yearbarometer]]]
[[[[barometer]]]]
[[[yeartempdew]]]
[[[[outTemp]]]]
[[[[dewpoint]]]]
[[[yeartempfeel]]]
[[[[windchill]]]]
[[[[heatindex]]]]
[[[yeartempin]]]
[[[[inTemp]]]]
[[[yeartempext]]]
yscale = None, None, 0.5
[[[[extraTemp1]]]]
[[[[extraTemp2]]]]
[[[[extraTemp3]]]]
[[[[extraTemp4]]]]
[[[yeartempext2]]]
yscale = None, None, 0.5
[[[[extraTemp5]]]]
[[[[extraTemp6]]]]
[[[[extraTemp7]]]]
[[[[extraTemp8]]]]
[[[yearhum]]]
[[[[outHumidity]]]]
[[[yearhumin]]]
[[[[inHumidity]]]]
[[[yearhumext]]]
[[[[extraHumid1]]]]
[[[[extraHumid2]]]]
[[[[extraHumid3]]]]
[[[[extraHumid4]]]]
[[[yearhumext2]]]
[[[[extraHumid5]]]]
[[[[extraHumid6]]]]
[[[[extraHumid7]]]]
[[[[extraHumid8]]]]
[[[yeartempleaf]]]
[[[[leafTemp1]]]]
[[[[leafTemp2]]]]
[[[yearwetleaf]]]
[[[[leafWet1]]]]
[[[[leafWet2]]]]
[[[yeartempsoil]]]
[[[[soilTemp1]]]]
[[[[soilTemp2]]]]
[[[[soilTemp3]]]]
[[[[soilTemp4]]]]
[[[yearmoistsoil]]]
[[[[soilMoist1]]]]
[[[[soilMoist2]]]]
[[[[soilMoist3]]]]
[[[[soilMoist4]]]]
[[[yearpm]]]
[[[[pm1_0]]]]
[[[[pm2_5]]]]
[[[[pm10_0]]]]
[[[yearlightning]]]
yscale = None, None, 1
plot_type = bar
[[[[lightning_strike_count]]]]
aggregate_type = sum
aggregate_interval = week
label = Lightning (weekly total)
[[[yearrain]]]
yscale = None, None, 0.02
plot_type = bar
[[[[rain]]]]
aggregate_type = sum
aggregate_interval = week
label = Rain (weekly total)
[[[yearwind]]]
[[[[windSpeed]]]]
[[[[windGust]]]]
aggregate_type = max
[[[yearwinddir]]]
yscale = 0.0, 360.0, 45.0
line_type = None
marker_type = box
marker_size = 2
[[[[windDir]]]]
[[[yearwindvec]]]
[[[[windvec]]]]
plot_type = vector
[[[yearET]]]
yscale = None, None, 0.02
plot_type = bar
[[[[ET]]]]
aggregate_type = sum
aggregate_interval = week
label = Evapotranspiration (weekly total)
[[[yearUV]]]
# yscale = 0, 16, 1
[[[[UV]]]]
[[[yearradiation]]]
[[[[radiation]]]]
[[[yearrx]]]
yscale = 0.0, 100.0, 25.0
[[[[rxCheckPercent]]]]
[[[yearvolt]]]
[[[[consBatteryVoltage]]]]
[[[[heatingVoltage]]]]
[[[[supplyVoltage]]]]
[[[[referenceVoltage]]]]
# This is how to generate a plot of high/low temperatures for the year:
# [[[yearhilow]]]
# [[[[hi]]]]
# data_type = outTemp
# aggregate_type = max
# label = High
# [[[[low]]]]
# data_type = outTemp
# aggregate_type = min
# label = Low Temperature
###############################################################################
[Generators]
# The list of generators that are to be run:
generator_list = weewx.cheetahgenerator.CheetahGenerator,
weewx.imagegenerator.ImageGenerator, weewx.reportengine.CopyGenerator