Yep, I've done that and it seems to work! Putting this here in case anyone
else wants to do this - still need to finish customising it but this is
what I added under [StdReport] [[Belchertown]]:
* [[[HistoryColors]]] # minvalues and colors and fontColors should contain
the same number of elements. # # For example, the [min_temp] example
below, if the minimum temperature measured in # a month is between -50 and
-10 (degC) then the cell will be shaded in html color code #0029E5. # #
colors = background color # fontColors = foreground color [optional,
defaults to black if omitted] [[[[outTemp]]]] [[[[[degree_C]]]]] #
These are for Celsius minvalues = -50, -30, -28, -26, -24, -22, -20,
-18, -16, -14, -12, -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 45 colors = "#404240",
"#646664", "#8C8A8C", "#B4B2B4", "#CCCECC", "#E4E6E4", "#743274",
"#AC32AC", "#CC32CC", "#FC32FC", "#FC9AFC", "#143dde", "#3466FC",
"#349AFC", "#34CEFC", "#34FEFC", "#047604", "#049A04", "#04BA04",
"#04DE04", "#04FE04", "#FCFE34", "#FCEE34", "#FCDE34", "#FCCE34",
"#FCBA34", "#FCAA04", "#FC9A04", "#FC7604", "#FC0204", "#EC0204",
"#CC0204", "#BC0204", "#AC0204", "#9C0204", "#8C0204", "#740204", "#5C0204"
fontColors = "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#333333",
"#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#333333",
"#bbbbbb", "#bbbbbb", "#333333", "#333333", "#333333", "#bbbbbb",
"#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
"#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
"#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb",
"#bbbbbb", "#bbbbbb", "#bbbbbb" [[[[[degree_F]]]]] # Use these for
Fahrenheit minvalues = -60, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
colors = "#0029E5", "#0186E7", "#02E3EA", "#04EC97", "#05EF3D",
"#2BF207", "#8AF408", "#E9F70A", "#F9A90B", "#FC4D0D", "#FF0F2D"
fontColors = "#FFFFFF", "#FFFFFF", "#000000", "#000000", "#000000",
"#000000", "#000000", "#000000", "#FFFFFF", "#FFFFFF", "#FFFFFF"
[[[[rain]]]] [[[[[mm]]]]] # These are for mm minvalues = 0, 25, 50,
75, 100, 150, 200, 250, 300, 350 colors = "#e6e5fc", "#cccafc",
"#acaafc", "#8486fc", "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4",
"#9c029c", "#6d016d" fontColors = "#333333", "#333333", "#333333",
"#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#bbbbbb", "#bbbbbb"
# if the summary is to be calculated independently, specify here.
[[[[[[summary]]]]]] minvalues = 600, 650, 700, 750, 800, 850, 900,
950, 1000, 1050 colors = "#e6e5fc", "#cccafc", "#acaafc",
"#8486fc", "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
fontColors = "#333333", "#333333", "#333333", "#333333", "#bbbbbb",
"#bbbbbb", "#333333", "#333333", "#bbbbbb", "#bbbbbb" [[[[[inch]]]]] #
Use these instead for inches minvalues = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc",
"#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d" fontColors =
"#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb",
"#333333", "#333333", "#bbbbbb", "#bbbbbb" # if the summary is to be
calculated independently, specify here. [[[[[[summary]]]]]]
minvalues = 40, 44, 48, 52, 56, 60, 64, 68, 72, 76 colors =
"#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc", "#5c5afc",
"#fc02fc", "#d402d4", "#9c029c", "#6d016d" fontColors = "#333333",
"#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#333333",
"#333333", "#bbbbbb", "#bbbbbb" [[[[rainRate]]]] [[[[[mm_per_hour]]]]]
# These are for mm per hour minvalues = 0, 10, 20, 30, 40, 50, 60, 70,
80, 90 colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc",
"#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d" fontColors =
"#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb",
"#333333", "#333333", "#bbbbbb", "#bbbbbb" [[[[[inch_per_hour]]]]] #
Use these instead for inches per hour minvalues = 0, 0.5, 1, 1.5, 2,
2.5, 3, 3.5, 4, 4.5 colors = "#e6e5fc", "#cccafc", "#acaafc",
"#8486fc", "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
fontColors = "#333333", "#333333", "#333333", "#333333", "#bbbbbb",
"#bbbbbb", "#333333", "#333333", "#bbbbbb", "#bbbbbb" [[[[rainDays]]]]
[[[[[count]]]]] minvalues = 1, 5, 10, 15, 20, 25 colors =
"#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc", "#5c5afc"
fontColors = "#333333", "#333333", "#333333", "#333333", "#bbbbbb",
"#bbbbbb" [[[[[[summary]]]]]] minvalues = 1, 100, 120, 140,
160, 180 colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
"#6c6efc", "#5c5afc" fontColors = "#333333", "#333333", "#333333",
"#333333", "#bbbbbb", "#bbbbbb" [[[[frostDays]]]] [[[[[count]]]]]
minvalues = 1, 3, 5, 7, 9, 11 colors = "#e6e5fc", "#cccafc",
"#acaafc", "#8486fc", "#6c6efc", "#5c5afc" fontColors = "#333333",
"#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb"
[[[[[[summary]]]]]] minvalues = 3, 6, 9, 12, 15, 18 colors
= "#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc", "#5c5afc"
fontColors = "#333333", "#333333", "#333333", "#333333", "#bbbbbb",
"#bbbbbb" [[[[windGust]]]] [[[[[meter_per_second]]]]] minvalues = 0,
0.3, 1.5, 3.3, 5.4, 7.9, 10.7, 13.8, 17.1, 20.7, 24.4, 28.4, 32.6
colors = "#ffffff", "#72d475", "#10cd24", "#00b900", "#f1eea5", "#f6ef27",
"#fed6d3", "#ffb6b3", "#ff9e9a", "#ff8281", "#ff6160", "#ff453c", "#ff200e"
fontColors = "#333333", "#333333", "#333333", "#333333", "#333333",
"#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
"#333333", "#333333" [[[[[km_per_hour]]]]] minvalues = 0, 1, 5, 11, 19,
29, 39, 50, 61, 74, 88, 102, 118 colors = "#ffffff", "#72d475",
"#10cd24", "#00b900", "#f1eea5", "#f6ef27", "#fed6d3", "#ffb6b3",
"#ff9e9a", "#ff8281", "#ff6160", "#ff453c", "#ff200e" fontColors =
"#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
"#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333"
[[[[[mile_per_hour]]]]] minvalues = 0, 1, 3, 7, 12, 18, 24, 31, 38, 46,
54, 63, 72 colors = "#ffffff", "#72d475", "#10cd24", "#00b900",
"#f1eea5", "#f6ef27", "#fed6d3", "#ffb6b3", "#ff9e9a", "#ff8281",
"#ff6160", "#ff453c", "#ff200e" fontColors = "#333333", "#333333",
"#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
"#333333", "#333333", "#333333", "#333333", "#333333" [[[[[knot]]]]]
minvalues = 0, 1, 3, 6, 10, 16, 21, 27, 33, 40, 47, 54, 63 colors =
"#ffffff", "#72d475", "#10cd24", "#00b900", "#f1eea5", "#f6ef27",
"#fed6d3", "#ffb6b3", "#ff9e9a", "#ff8281", "#ff6160", "#ff453c", "#ff200e"
fontColors = "#333333", "#333333", "#333333", "#333333", "#333333",
"#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
"#333333", "#333333" [[[HistoryReport]]] # # Settings for the HTML
month/year color coded summary table generator # # This list determines
which tables will appear in the history report, as well as in which order.
history_items = min_temp, avg_temp, max_temp, rain, rain_days, max_wind,
NOAA # Restrict the size of the table by ignoring everything before
startdate # Specify in unix epoch time. e.g. 1325376000 is 1-Jan-2012 #
Note: whatever you specify as startdate, the whole year (or better: all #
the values availlable for this year) this startdate is within, will be
included in the table. #startdate = 1325376000 # The Raspberry Pi typically
takes 15+ seconds to calculate all the summaries with a few years of
weather date. # refresh_interval is how often in minutes the tables are
calculated. refresh_interval = 5 [[[[min_temp]]]] obs_type = outTemp
# obs_type can be any weewx reading aggregate_type = min
# Any of these: 'sum', 'count', 'avg', 'max', 'min' summary_column =
true # # You can also use these aggregate_types: 'max_ge', 'max_le',
'min_le', 'sum_ge' to count days # where an observation is ge: greater of
equalto, or le: lessthan or equal to a threshold value # To specify this
threshold, use: aggregate_threshold = [value], [units] # # e.g Specify
temperature threshold of 20C: aggregate_threshold = 20, degree_C #
[[[[avg_temp]]]] obs_type = outTemp aggregate_type = avg summary_column =
true [[[[max_temp]]]] obs_type = outTemp aggregate_type = max
summary_column = true "max_temp_tableheader_text" = "Maximum Temperature"
[[[[rain]]]] obs_type = rain aggregate_type = sum summary_column = true
[[[[rain_days]]]] obs_type = rain colors = rainDays, count # colors are
derived from obs_type per default, specify colors from [Colors] to override
units = "" # Override default table units label
aggregate_type = sum_ge aggregate_threshold = 1, mm summary_column = true
[[[[frost_days]]]] obs_type = outTemp colors = frostDays, count # colors
are derived from obs_type per default, specify colors from [Colors] to
override units = "" # Override default table units
label aggregate_type = min_le aggregate_threshold = 0, degree_C
summary_column = true [[[[max_wind]]]] obs_type = windGust aggregate_type =
max summary_column = true [[[[NOAA]]]] # # Creates a table of links to NOAA
reports with the tag $NOAA_table # Comment out [[NOAATable]] if you do not
need this. # # Where to find the NOAA files and how they are named # Uses
Python datetime convention (docs.python.org/2/library/datetime.html): # %Y
= YYYY, %y = YY, %m = MM, etc. # year_filename = ../NOAA/NOAA-%Y.txt
month_filename = ../NOAA/NOAA-%Y-%m.txt*
And then in /etc/weewx/skins/Belchertown/records.inc I have the following:
*#set $HistoryReport = { 'max_temp': 'Maximum Temperature',
'min_temp': 'Minimum Temperature', 'avg_temp': 'Average Temperature',
'rain': 'Rainfall Accumulation', 'rain_days': 'Days With At Least 1 mm
Rainfall', 'frost_days': 'Days of Air Frost', 'max_wind': 'Maximum
Wind Gust', 'NOAA': 'Month-by-month Data'}#for $key, $label in
$HistoryReport.items() #if $key in $history_tables #set $table =
$history_tables[$key] <h3 class="historyHeader">$label</h3>
<table class="table historyTable text-center"> #if not $table.noaa
<thead> <tr> <th
class="head">$table.header.head</th> #for $headervalue
in $table.header.values <th
class="month">$gettext($headervalue)</th> #end for
#if "summary" in $table.header <th
class="year">$gettext($table.header.summary)</th> #end
if </tr> </thead> <tbody>
#for $line in $table.lines <tr>
<th class="head">$line.head.value</th> #for
$linevalue in $line.values #set $value =
$linevalue.value if $linevalue.value else '-'
#set $style = '' #if $linevalue.value
#set $style = ' style="background-color:' +
$linevalue.bgcolor + '; color:' + $linevalue.fontcolor + ';"'
#end if <td
class="month"$style>$value</td> #end for
#if "summary" in $line #set $style =
' style="background-color:' + $line.summary.bgcolor + '; color:' +
$line.summary.fontcolor + ';"' <td
class="year"$style>$line.summary.value</td> #end if
</tr> #end for </tbody>
#else <!-- NOAA-specific rendering --> <thead>
<tr> <th class="head">$table.header.head</th>
#for $headervalue in $table.header.values
<th>$gettext($headervalue)</th> #end for
</tr> </thead> <tbody> #for
$line in $table.lines <tr> <th
class="noaa"> <a href="$line.head.url"
class="btn btn-sm btn-primary primaryLive btnNOAA">$line.head.value</a>
</th> #for $linevalue in
$line.values #set $data = '-'
#if $linevalue.value #set $data =
'<a href="' + $linevalue.url + '" class="btn btn-sm btn-light primaryLight
btnNOAA">' + $linevalue.value + '</a>' #end if
<td class="noaa">$data</td>
#end for </tr> #end for
</tbody> #end if </table> <br> #end if#end for*
Which produces this page: https://empslocal.ex.ac.uk/uoeweather/records/
I think the only other necessary change that I made was adding "version =
4.3" at the top of the Belchertown skin.conf file, but obviously this won't
be necessary when you next update fuzzy-archer skin.
Thanks for your help!
On Wednesday, 25 June 2025 at 06:56:46 UTC+1 [email protected] wrote:
> It should be possible to move everything you customized in skin.conf under
> the corresponding sections below [StdReport]. For the "version", which is
> just for information, I'll fix it in fuzzy-archer for the next version,
> that it isn't required any more.
>
> Jon B schrieb am Dienstag, 24. Juni 2025 um 20:37:37 UTC+2:
>
>> Thanks again - I've now got it working. But yes, coding it that way is
>> obviously not a good idea so I'll now work on implementing it in such a way
>> that I don't need to edit the skin.conf
>>
>> On Tuesday, 24 June 2025 at 14:15:51 UTC+1 [email protected] wrote:
>>
>>> That's in line 18
>>> https://github.com/brewster76/fuzzy-archer/blob/master/skins/Bootstrap/skin.conf#L18
>>> But you obviously see how you are messing up your skin.conf that will be
>>> overwritten with the next skin update.
>>>
>>> Jon B schrieb am Dienstag, 24. Juni 2025 um 14:46:09 UTC+2:
>>>
>>>> Thanks - I did have that there but had commented it out while I was
>>>> testing things before!
>>>>
>>>> I'm now getting a different error, though:
>>>>
>>>> 2025-06-24T13:38:16.053220+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: Caught unrecoverable exception in generator
>>>> 'weewx.cheetahgenerator.CheetahGenerator'
>>>> 2025-06-24T13:38:16.053295+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** 'version'
>>>> 2025-06-24T13:38:16.054253+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** Traceback (most recent call last):
>>>> 2025-06-24T13:38:16.054305+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** File
>>>> "/usr/share/weewx/weewx/reportengine.py", line 248, in run
>>>> 2025-06-24T13:38:16.054348+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** obj.start()
>>>> 2025-06-24T13:38:16.054392+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** File
>>>> "/usr/share/weewx/weewx/reportengine.py", line 465, in start
>>>> 2025-06-24T13:38:16.054461+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** self.run()
>>>> 2025-06-24T13:38:16.054531+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** File
>>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 163, in run
>>>> 2025-06-24T13:38:16.054580+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: ****
>>>> self.init_extensions(gen_dict[section_name])
>>>> 2025-06-24T13:38:16.054620+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** File
>>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 196, in init_extensions
>>>> 2025-06-24T13:38:16.054665+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: ****
>>>> self.search_list_objs.append(klass(self))
>>>> 2025-06-24T13:38:16.054707+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: ****
>>>> ^^^^^^^^^^^
>>>> 2025-06-24T13:38:16.054747+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** File
>>>> "/etc/weewx/bin/user/historygenerator.py", line 62, in __init__
>>>> 2025-06-24T13:38:16.054794+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: ****
>>>> self.search_list_extension['fuzzy_archer_version'] =
>>>> generator.skin_dict['version']
>>>> 2025-06-24T13:38:16.054836+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: ****
>>>> ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
>>>> 2025-06-24T13:38:16.054871+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** File
>>>> "/usr/lib/python3/dist-packages/configobj/__init__.py", line 553, in
>>>> __getitem__
>>>> 2025-06-24T13:38:16.054905+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** val = dict.__getitem__(self, key)
>>>> 2025-06-24T13:38:16.054940+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>> 2025-06-24T13:38:16.054975+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** KeyError: 'version'
>>>> 2025-06-24T13:38:16.055017+01:00 weewxd[3755918]: ERROR
>>>> weewx.reportengine: **** Generator terminated
>>>>
>>>> On Tuesday, 24 June 2025 at 13:32:00 UTC+1 [email protected] wrote:
>>>>
>>>>> Here's how fuzzy-archer uses the history report:
>>>>> https://github.com/brewster76/fuzzy-archer/blob/master/skins/Bootstrap/skin.conf
>>>>>
>>>>> First idea: add user.historygenerator.MyXSearch to the
>>>>> search_list_extensions, just like in line 70:
>>>>> https://github.com/brewster76/fuzzy-archer/blob/master/skins/Bootstrap/skin.conf#L70
>>>>>
>>>>>
>>>>>
>>>>> Jon B schrieb am Dienstag, 24. Juni 2025 um 14:07:08 UTC+2:
>>>>>
>>>>>> I'm having a bit of trouble getting it to work. I thought I'd try to
>>>>>> get it to work in the way that I had it set up before, by editing the
>>>>>> Belchertown skin.conf (I know this is bad practice, but I wanted to get
>>>>>> the
>>>>>> new skin version working first before making the changes to weewx.conf
>>>>>> instead).
>>>>>>
>>>>>> I installed the latest version of fuzzy-archer (4.3) and copied the
>>>>>> following sections into the Belchertown skin.conf:
>>>>>>
>>>>>>
>>>>>> [HistoryColors]
>>>>>> # minvalues and colors and fontColors should contain the same
>>>>>> number of elements.
>>>>>> #
>>>>>> # For example, the [min_temp] example below, if the minimum
>>>>>> temperature measured in
>>>>>> # a month is between -50 and -10 (degC) then the cell will be
>>>>>> shaded in html color code #0029E5.
>>>>>> #
>>>>>> # colors = background color
>>>>>> # fontColors = foreground color [optional, defaults to black if
>>>>>> omitted]
>>>>>>
>>>>>> [[outTemp]]
>>>>>> [[[degree_C]]]
>>>>>> # These are for Celsius
>>>>>> minvalues = -50, -30, -28, -26, -24, -22, -20, -18, -16,
>>>>>> -14, -12, -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
>>>>>> 22,
>>>>>> 24, 26, 28, 30, 32, 34, 36, 38, 40, 45
>>>>>> colors = "#404240", "#646664", "#8C8A8C", "#B4B2B4",
>>>>>> "#CCCECC", "#E4E6E4", "#743274", "#AC32AC", "#CC32CC", "#FC32FC",
>>>>>> "#FC9AFC", "#143dde", "#3466FC", "#349AFC", "#34CEFC", "#34FEFC",
>>>>>> "#047604", "#049A04", "#04BA04", "#04DE04", "#04FE04", "#FCFE34",
>>>>>> "#FCEE34", "#FCDE34", "#FCCE34", "#FCBA34", "#FCAA04", "#FC9A04",
>>>>>> "#FC7604", "#FC0204", "#EC0204", "#CC0204", "#BC0204", "#AC0204",
>>>>>> "#9C0204", "#8C0204", "#740204", "#5C0204"
>>>>>> fontColors = "#bbbbbb", "#bbbbbb", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333",
>>>>>> "#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#333333",
>>>>>> "#bbbbbb", "#333333", "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb",
>>>>>> "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb"
>>>>>> [[[degree_F]]]
>>>>>> # Use these for Fahrenheit
>>>>>> minvalues = -60, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
>>>>>> colors = "#0029E5", "#0186E7", "#02E3EA", "#04EC97",
>>>>>> "#05EF3D", "#2BF207", "#8AF408", "#E9F70A", "#F9A90B", "#FC4D0D",
>>>>>> "#FF0F2D"
>>>>>> fontColors = "#FFFFFF", "#FFFFFF", "#000000",
>>>>>> "#000000", "#000000", "#000000", "#000000", "#000000", "#FFFFFF",
>>>>>> "#FFFFFF", "#FFFFFF"
>>>>>>
>>>>>> [[rain]]
>>>>>> [[[mm]]]
>>>>>> # These are for mm
>>>>>> minvalues = 0, 25, 50, 75, 100, 150, 200, 250, 300, 350
>>>>>> colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
>>>>>> "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#bbbbbb", "#bbbbbb"
>>>>>> # if the summary is to be calculated independently,
>>>>>> specify here.
>>>>>> [[[[summary]]]]
>>>>>> minvalues = 1000, 1100, 1200, 1300, 1400, 1500, 1600,
>>>>>> 1700, 1800, 1900
>>>>>> colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
>>>>>> "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
>>>>>> fontColors = "#333333", "#333333", "#333333",
>>>>>> "#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#bbbbbb",
>>>>>> "#bbbbbb"
>>>>>> [[[inch]]]
>>>>>> # Use these instead for inches
>>>>>> minvalues = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
>>>>>> colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
>>>>>> "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#bbbbbb", "#bbbbbb"
>>>>>> # if the summary is to be calculated independently,
>>>>>> specify here.
>>>>>> [[[[summary]]]]
>>>>>> minvalues = 40, 44, 48, 52, 56, 60, 64, 68, 72, 76
>>>>>> colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
>>>>>> "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
>>>>>> fontColors = "#333333", "#333333", "#333333",
>>>>>> "#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#bbbbbb",
>>>>>> "#bbbbbb"
>>>>>>
>>>>>> [[rainRate]]
>>>>>> [[[mm_per_hour]]]
>>>>>> # These are for mm per hour
>>>>>> minvalues = 0, 10, 20, 30, 40, 50, 60, 70, 80, 90
>>>>>> colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
>>>>>> "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#bbbbbb", "#bbbbbb"
>>>>>> [[[inch_per_hour]]]
>>>>>> # Use these instead for inches per hour
>>>>>> minvalues = 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5
>>>>>> colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
>>>>>> "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#bbbbbb", "#bbbbbb"
>>>>>>
>>>>>> [[rainDays]]
>>>>>> [[[count]]]
>>>>>> minvalues = 1, 5, 10, 15, 20, 25
>>>>>> colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
>>>>>> "#6c6efc", "#5c5afc"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#bbbbbb", "#bbbbbb"
>>>>>> [[[[summary]]]]
>>>>>> minvalues = 1, 100, 120, 140, 160, 180
>>>>>> colors = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc",
>>>>>> "#6c6efc", "#5c5afc"
>>>>>> fontColors = "#333333", "#333333", "#333333",
>>>>>> "#333333", "#bbbbbb", "#bbbbbb"
>>>>>>
>>>>>> [[windGust]]
>>>>>> [[[meter_per_second]]]
>>>>>> minvalues = 0, 0.3, 1.5, 3.3, 5.4, 7.9, 10.7, 13.8, 17.1,
>>>>>> 20.7, 24.4, 28.4, 32.6
>>>>>> colors = "#ffffff", "#72d475", "#10cd24", "#00b900",
>>>>>> "#f1eea5", "#f6ef27", "#fed6d3", "#ffb6b3", "#ff9e9a", "#ff8281",
>>>>>> "#ff6160", "#ff453c", "#ff200e"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333"
>>>>>> [[[km_per_hour]]]
>>>>>> minvalues = 0, 1, 5, 11, 19, 29, 39, 50, 61, 74, 88, 102,
>>>>>> 118
>>>>>> colors = "#ffffff", "#72d475", "#10cd24", "#00b900",
>>>>>> "#f1eea5", "#f6ef27", "#fed6d3", "#ffb6b3", "#ff9e9a", "#ff8281",
>>>>>> "#ff6160", "#ff453c", "#ff200e"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333"
>>>>>> [[[mile_per_hour]]]
>>>>>> minvalues = 0, 1, 3, 7, 12, 18, 24, 31, 38, 46, 54, 63, 72
>>>>>> colors = "#ffffff", "#72d475", "#10cd24", "#00b900",
>>>>>> "#f1eea5", "#f6ef27", "#fed6d3", "#ffb6b3", "#ff9e9a", "#ff8281",
>>>>>> "#ff6160", "#ff453c", "#ff200e"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333"
>>>>>> [[[knot]]]
>>>>>> minvalues = 0, 1, 3, 6, 10, 16, 21, 27, 33, 40, 47, 54, 63
>>>>>> colors = "#ffffff", "#72d475", "#10cd24", "#00b900",
>>>>>> "#f1eea5", "#f6ef27", "#fed6d3", "#ffb6b3", "#ff9e9a", "#ff8281",
>>>>>> "#ff6160", "#ff453c", "#ff200e"
>>>>>> fontColors = "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333", "#333333", "#333333", "#333333",
>>>>>> "#333333", "#333333", "#333333"
>>>>>>
>>>>>> [HistoryReport]
>>>>>> #
>>>>>> # Settings for the HTML month/year color coded summary table
>>>>>> generator
>>>>>> #
>>>>>>
>>>>>> # This list determines which tables will appear in the history
>>>>>> report, as well as in which order.
>>>>>> history_items = min_temp, avg_temp, max_temp, rain, rain_days,
>>>>>> max_wind, NOAA
>>>>>>
>>>>>> # Restrict the size of the table by ignoring everything before
>>>>>> startdate
>>>>>> # Specify in unix epoch time. e.g. 1325376000 is 1-Jan-2012
>>>>>> # Note: whatever you specify as startdate, the whole year (or
>>>>>> better: all
>>>>>> # the values availlable for this year) this startdate is within,
>>>>>> will be included in the table.
>>>>>> #startdate = 1325376000
>>>>>>
>>>>>> # The Raspberry Pi typically takes 15+ seconds to calculate all
>>>>>> the summaries with a few years of weather date.
>>>>>> # refresh_interval is how often in minutes the tables are
>>>>>> calculated.
>>>>>> refresh_interval = 5
>>>>>>
>>>>>> [[min_temp]]
>>>>>> obs_type = outTemp # obs_type can be any
>>>>>> weewx reading
>>>>>> aggregate_type = min # Any of these: 'sum',
>>>>>> 'count', 'avg', 'max', 'min'
>>>>>> summary_column = true
>>>>>>
>>>>>> #
>>>>>> # You can also use these aggregate_types: 'max_ge', 'max_le',
>>>>>> 'min_le', 'sum_ge' to count days
>>>>>> # where an observation is ge: greater of equalto, or le: lessthan
>>>>>> or equal to a threshold value
>>>>>> # To specify this threshold, use: aggregate_threshold = [value],
>>>>>> [units]
>>>>>> #
>>>>>> # e.g Specify temperature threshold of 20C: aggregate_threshold
>>>>>> = 20, degree_C
>>>>>> #
>>>>>>
>>>>>> [[avg_temp]]
>>>>>> obs_type = outTemp
>>>>>> aggregate_type = avg
>>>>>> summary_column = true
>>>>>>
>>>>>> [[max_temp]]
>>>>>> obs_type = outTemp
>>>>>> aggregate_type = max
>>>>>> summary_column = true
>>>>>>
>>>>>> [[rain]]
>>>>>> obs_type = rain
>>>>>> aggregate_type = sum
>>>>>> summary_column = true
>>>>>>
>>>>>> [[rain_days]]
>>>>>> obs_type = rain
>>>>>> colors = rainDays, count # colors are derived from obs_type
>>>>>> per default, specify colors from [Colors] to override
>>>>>> units = "" # Override default table
>>>>>> units label
>>>>>> aggregate_type = sum_ge
>>>>>> aggregate_threshold = 1, mm
>>>>>> summary_column = true
>>>>>>
>>>>>> [[max_wind]]
>>>>>> obs_type = windGust
>>>>>> aggregate_type = max
>>>>>> summary_column = true
>>>>>>
>>>>>> [[NOAA]]
>>>>>> #
>>>>>> # Creates a table of links to NOAA reports with the tag
>>>>>> $NOAA_table
>>>>>> # Comment out [[NOAATable]] if you do not need this.
>>>>>> #
>>>>>>
>>>>>> # Where to find the NOAA files and how they are named
>>>>>> # Uses Python datetime convention (
>>>>>> docs.python.org/2/library/datetime.html):
>>>>>> # %Y = YYYY, %y = YY, %m = MM, etc.
>>>>>> #
>>>>>> year_filename = NOAA/NOAA-%Y.txt
>>>>>> month_filename = NOAA/NOAA-%Y-%m.txt
>>>>>>
>>>>>>
>>>>>> In the Belchertown records.inc file I then reference the tables
>>>>>> using, e.g.:
>>>>>>
>>>>>> <h3>$HistoryReport.max_temp</h3> $max_temp_table
>>>>>>
>>>>>> However I then get the following error in the logs:
>>>>>>
>>>>>> 2025-06-24T12:49:16.627475+01:00 weewxd[3747531]: ERROR
>>>>>> weewx.cheetahgenerator: Evaluation of template
>>>>>> /etc/weewx/skins/Belchertown/records/index.html.tmpl failed.
>>>>>> 2025-06-24T12:49:16.627569+01:00 weewxd[3747531]: ERROR
>>>>>> weewx.cheetahgenerator: **** Ignoring template
>>>>>> /etc/weewx/skins/Belchertown/records/index.html.tmpl
>>>>>> 2025-06-24T12:49:16.627595+01:00 weewxd[3747531]: ERROR
>>>>>> weewx.cheetahgenerator: **** Reason: cannot find 'HistoryReport'
>>>>>> 2025-06-24T12:49:16.627620+01:00 weewxd[3747531]: ERROR
>>>>>> weewx.cheetahgenerator: **** To debug, try inserting '#errorCatcher
>>>>>> Echo'
>>>>>> at top of template
>>>>>>
>>>>>>
>>>>>> Any ideas?
>>>>>> On Monday, 23 June 2025 at 10:54:57 UTC+1 Jon B wrote:
>>>>>>
>>>>>>> I like how the default fuzzy-archer tables look, so I think I'll
>>>>>>> likely just stick with that, at least initially. I'll do some digging
>>>>>>> to
>>>>>>> see if I can figure out how to incorporate it within the other skin. If
>>>>>>> you
>>>>>>> have any advice, that would be appreciated!
>>>>>>>
>>>>>>> On Monday, 23 June 2025 at 09:20:53 UTC+1 [email protected] wrote:
>>>>>>>
>>>>>>>> If you are satisfied with what fuzzy-archer produces, you need to
>>>>>>>> fin d a way to integrate it into the existing pages from Belchertown.
>>>>>>>> There
>>>>>>>> are probably many possible approaches.
>>>>>>>>
>>>>>>>> If you want to modify what fuzzy-archer produces, read it's
>>>>>>>> customization guide:
>>>>>>>> https://github.com/brewster76/fuzzy-archer/wiki/Customization
>>>>>>>>
>>>>>>>> Jon B schrieb am Sonntag, 22. Juni 2025 um 16:14:37 UTC+2:
>>>>>>>>
>>>>>>>>> I've installed the latest version of the fuzzy-archer skin (v4.3,
>>>>>>>>> and removed the previous version, as suggested in the upgrade guide).
>>>>>>>>> What
>>>>>>>>> should I add to weewx.conf in order to generate the coloured tables
>>>>>>>>> inside
>>>>>>>>> the Belchertown skin?
>>>>>>>>> On Thursday, 19 June 2025 at 22:04:07 UTC+1 Jon B wrote:
>>>>>>>>>
>>>>>>>>>> It's version 2.26 (I didn't realise it was so old!) - I'll try
>>>>>>>>>> updating it and see if that helps.
>>>>>>>>>>
>>>>>>>>>> Someone else suggested editing skin.conf but I'll change that as
>>>>>>>>>> well!
>>>>>>>>>> On Thursday, 19 June 2025 at 20:09:09 UTC+1 [email protected]
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> First and most important advice: do not modify any skin.conf.
>>>>>>>>>>> You can override any setting in your weewx.conf.
>>>>>>>>>>>
>>>>>>>>>>> Second: which version of the skin(s) are you using?
>>>>>>>>>>> [BootstrapLabels] is from a version that is outdated probably for
>>>>>>>>>>> years now.
>>>>>>>>>>>
>>>>>>>>>>> Jon B schrieb am Donnerstag, 19. Juni 2025 um 17:19:50 UTC+2:
>>>>>>>>>>>
>>>>>>>>>>>> I'm using part of the fuzzy-archer skin to generate history
>>>>>>>>>>>> tables on the records page, in conjunction with the Belchertown
>>>>>>>>>>>> skin. I'm
>>>>>>>>>>>> using this on two sites, both of which I set up myself. For one
>>>>>>>>>>>> site, these
>>>>>>>>>>>> tables stopped updating at the end of last year. In the logs, I
>>>>>>>>>>>> get this
>>>>>>>>>>>> error:
>>>>>>>>>>>>
>>>>>>>>>>>> 2025-06-19T15:45:18.871571+01:00 weewxd[121035]: ERROR
>>>>>>>>>>>> weewx.cheetahgenerator: Evaluation of template
>>>>>>>>>>>> /etc/weewx/skins/Belchertown/records/index.html.tmpl failed.
>>>>>>>>>>>> 2025-06-19T15:45:18.872969+01:00 weewxd[121035]: ERROR
>>>>>>>>>>>> weewx.cheetahgenerator: **** Ignoring template
>>>>>>>>>>>> /etc/weewx/skins/Belchertown/records/index.html.tmpl
>>>>>>>>>>>> 2025-06-19T15:45:18.873193+01:00 weewxd[121035]: ERROR
>>>>>>>>>>>> weewx.cheetahgenerator: **** Reason: cannot find 'BootstrapLabels'
>>>>>>>>>>>> 2025-06-19T15:45:18.873288+01:00 weewxd[121035]: ERROR
>>>>>>>>>>>> weewx.cheetahgenerator: **** To debug, try inserting
>>>>>>>>>>>> '#errorCatcher Echo'
>>>>>>>>>>>> at top of template
>>>>>>>>>>>>
>>>>>>>>>>>> I have defined 'BootstrapLabels' in the Belchertown skin.conf
>>>>>>>>>>>> as follows:
>>>>>>>>>>>>
>>>>>>>>>>>> [BootstrapLabels]
>>>>>>>>>>>>
>>>>>>>>>>>> #
>>>>>>>>>>>> # Labels specific to the Bootstrap template
>>>>>>>>>>>> #
>>>>>>>>>>>>
>>>>>>>>>>>> [[headings]]
>>>>>>>>>>>> front_page = The Weather
>>>>>>>>>>>> stats = Stats
>>>>>>>>>>>> history = History
>>>>>>>>>>>> news = News
>>>>>>>>>>>> about = About
>>>>>>>>>>>> last_update = Last updated
>>>>>>>>>>>>
>>>>>>>>>>>> [[timespans]]
>>>>>>>>>>>> day = Last 24 hours
>>>>>>>>>>>> today = Today # today = any time since
>>>>>>>>>>>> midnight
>>>>>>>>>>>> week = This week
>>>>>>>>>>>> month = This Month
>>>>>>>>>>>> year = This Year
>>>>>>>>>>>> ever = Since ever
>>>>>>>>>>>>
>>>>>>>>>>>> [[status]]
>>>>>>>>>>>> latitude = Latitude:
>>>>>>>>>>>> longitude = Longitude:
>>>>>>>>>>>> altitude = Altitude:
>>>>>>>>>>>> station_uptime = Station uptime:
>>>>>>>>>>>> server_uptime = Server uptime:
>>>>>>>>>>>>
>>>>>>>>>>>> [[history_tables]]
>>>>>>>>>>>> min_temp = Minimum Temperature
>>>>>>>>>>>> max_temp = Maximum Temperature
>>>>>>>>>>>> avg_temp = Average Temperature
>>>>>>>>>>>> rain = Rainfall Accumulation
>>>>>>>>>>>> rain_days = Days with at least 1 mm rainfall
>>>>>>>>>>>> sunHours = Total sunshine hours
>>>>>>>>>>>> max_wind_gust = Maximum Wind Gust
>>>>>>>>>>>> NOAA = Month-by-month Data
>>>>>>>>>>>>
>>>>>>>>>>>> [[minmax]]
>>>>>>>>>>>> min = Low
>>>>>>>>>>>> max = High
>>>>>>>>>>>>
>>>>>>>>>>>> In the Belchertown records.inc file I then have the following:
>>>>>>>>>>>>
>>>>>>>>>>>> #encoding UTF-8
>>>>>>>>>>>> <div class="entry-content about-outer" itemprop="text">
>>>>>>>>>>>> <h3>$BootstrapLabels.history_tables.max_temp</h3>
>>>>>>>>>>>> $max_temp_table
>>>>>>>>>>>> <h3>$BootstrapLabels.history_tables.min_temp</h3>
>>>>>>>>>>>> $min_temp_table
>>>>>>>>>>>> <h3>$BootstrapLabels.history_tables.avg_temp</h3>
>>>>>>>>>>>> $avg_temp_table
>>>>>>>>>>>> <h3>$BootstrapLabels.history_tables.rain</h3> $rain_table
>>>>>>>>>>>> <h3>$BootstrapLabels.history_tables.rain_days</h3>
>>>>>>>>>>>> $rain_days_table
>>>>>>>>>>>> <h3>$BootstrapLabels.history_tables.sunHours</h3>
>>>>>>>>>>>> $sunHours_table
>>>>>>>>>>>> <h3>$BootstrapLabels.history_tables.max_wind_gust</h3>
>>>>>>>>>>>> $max_wind_gust_table
>>>>>>>>>>>> <h3>$BootstrapLabels.history_tables.NOAA</h3> $NOAA_table
>>>>>>>>>>>> </div>
>>>>>>>>>>>>
>>>>>>>>>>>> As far as I can tell, everything relating to the history tables
>>>>>>>>>>>> and the fuzzy-archer skin is the same as in the working version
>>>>>>>>>>>> that I have
>>>>>>>>>>>> for the other site. I'm wondering if perhaps something updated
>>>>>>>>>>>> which I'm
>>>>>>>>>>>> not aware of (the broken site is my Dad's, and he may have run
>>>>>>>>>>>> some updates
>>>>>>>>>>>> without me realising). The broken site isn't publically available,
>>>>>>>>>>>> but the
>>>>>>>>>>>> other working one is here in case it's helpful to know what the
>>>>>>>>>>>> setup looks
>>>>>>>>>>>> like: https://empslocal.ex.ac.uk/uoeweather/records/
>>>>>>>>>>>>
>>>>>>>>>>>> Any advice would be much appreciated!
>>>>>>>>>>>>
>>>>>>>>>>>
--
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 visit
https://groups.google.com/d/msgid/weewx-user/066fc031-bfe6-4440-9290-f64389ec9fa8n%40googlegroups.com.