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.

Reply via email to