I did a test install of the sunduration extension in a VM and it runs ok 
although I didn't alter Belchertown to try to graph the sunduration items. 
 An unaltered Belchertown runs fine.

FWIW - a clean weewx+Belchertown+sunduration setup has no mention of 
"group_sun" at all. My guess is you have a reference to group_sun in 
Belchertown's skin.conf or graphs.conf, or perhaps in weewx.conf if you did 
other edits there.

You can search for that via something like "grep -rHi group_sun /etc/weewx 
/usr/share/weewx" and see if it finds anything.

On Friday, October 31, 2025 at 9:44:15 AM UTC-7 Jon B wrote:

> Sorry for the delayed reply. It seems that I'm already running the latest 
> version of the Belchertown skin. weectl extension list returns Version 1.3.1
>
> On Sunday, 26 October 2025 at 08:22:08 UTC-6 Tom Keffer wrote:
>
>> Try upgrading the Belchertown skin.
>>
>> On Sat, Oct 25, 2025 at 8:14 PM Jon B <[email protected]> wrote:
>>
>>> My dad recently upgraded weewx for his Davis Vantage Pro2 to version 5.2 
>>> and it's not fully working any more. He's using the Belchertown skin on 
>>> Ubuntu (I think). Here is a section from the logs:
>>>
>>> 2025-10-23T23:10:15.901050+01:00  weewxd[4698]: DEBUG 
>>> weewx.drivers.vantage: Getting archive packets since 2025-10-23 23:05:00 
>>> BST (1761257100)
>>> 2025-10-23T23:10:16.408056+01:00  weewxd[4698]: DEBUG 
>>> weewx.drivers.vantage: Successfully woke up Vantage console
>>> 2025-10-23T23:10:16.429478+01:00  weewxd[4698]: DEBUG 
>>> weewx.drivers.vantage: Retrieving 1 page(s); starting index= 4
>>> 2025-10-23T23:10:16.572128+01:00  weewxd[4698]: INFO user.sunduration: 
>>> Sunshine duration from loop packets = 0.000000 min
>>> 2025-10-23T23:10:16.624541+01:00  weewxd[4698]: INFO weewx.manager: 
>>> Added record 2025-10-23 23:10:00 BST (1761257400) to database 'weewx.sdb'
>>> 2025-10-23T23:10:16.654449+01:00  weewxd[4698]: INFO weewx.manager: 
>>> Added record 2025-10-23 23:10:00 BST (1761257400) to daily summary in 
>>> 'weewx.sdb'
>>> 2025-10-23T23:10:16.687827+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Running reports for latest time in the database.
>>> 2025-10-23T23:10:16.688035+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Report 'SeasonsReport' not enabled. Skipping.
>>> 2025-10-23T23:10:16.688166+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.
>>> 2025-10-23T23:10:16.688293+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Report 'MobileReport' not enabled. Skipping.
>>> 2025-10-23T23:10:16.688424+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
>>> 2025-10-23T23:10:16.688560+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Running report 'Belchertown'
>>> 2025-10-23T23:10:16.702619+01:00  weewxd[4698]: DEBUG 
>>> weewx.drivers.vantage: Requesting 200 LOOP packets.
>>> 2025-10-23T23:10:16.713309+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Found configuration file 
>>> /etc/weewx/skins/Belchertown/skin.conf for report 'Belchertown'
>>> 2025-10-23T23:10:16.726182+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Running generators for report 'Belchertown' in 
>>> directory '/etc/weewx/skins/Belchertown' with locale 'en_GB.UTF-8'
>>> 2025-10-23T23:10:16.731197+01:00  weewxd[4698]: DEBUG 
>>> weewx.cheetahgenerator: Using search list ['user.belchertown.getData', 
>>> 'user.historygenerator.MyXSearch', 'weewx.cheetahgenerator.Almanac', 
>>> 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.DisplayOptions', 
>>> 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.Gettext', 
>>> 'weewx.cheetahgenerator.JSONHelpers', 'weewx.cheetahgenerator.PlotInfo', 
>>> 'weewx.cheetahgenerator.SkinInfo', 'weewx.cheetahgenerator.Station', 
>>> 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo']
>>> 2025-10-23T23:10:16.731584+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: Navigation: No historygenerator.py specific labels 
>>> found
>>> 2025-10-23T23:10:16.731697+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: StationInfo: No historygenerator.py specific labels 
>>> found
>>> 2025-10-23T23:10:16.731791+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: TranslationLinks: No historygenerator.py specific 
>>> labels found
>>> 2025-10-23T23:10:16.731869+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: ImageGenerator: No historygenerator.py specific 
>>> labels found
>>> 2025-10-23T23:10:16.731967+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: BootstrapLabels: No historygenerator.py specific 
>>> labels found
>>> 2025-10-23T23:10:16.732047+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: JSONGenerator: No historygenerator.py specific 
>>> labels found
>>> 2025-10-23T23:10:16.732139+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: LiveGauges: No historygenerator.py specific labels 
>>> found
>>> 2025-10-23T23:10:16.732216+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: Stats: No historygenerator.py specific labels found
>>> 2025-10-23T23:10:16.732336+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: News: No historygenerator.py specific labels found
>>> 2025-10-23T23:10:16.732415+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: LiveCharts: No historygenerator.py specific labels 
>>> found
>>> 2025-10-23T23:10:16.732523+01:00  weewxd[4698]: DEBUG 
>>> user.historygenerator: locale: No historygenerator.py specific labels found
>>> 2025-10-23T23:10:16.737843+01:00  weewxd[4698]: DEBUG weewx.manager: 
>>> Daily summary version is 4.0
>>> 2025-10-23T23:10:16.772512+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine: Caught unrecoverable exception in generator 
>>> 'weewx.cheetahgenerator.CheetahGenerator'
>>> 2025-10-23T23:10:16.772686+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****  'group_sun'
>>> 2025-10-23T23:10:16.802108+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****  Traceback (most recent call last):
>>> 2025-10-23T23:10:16.802315+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/share/weewx/weewx/reportengine.py", line 248, in run
>>> 2025-10-23T23:10:16.802412+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      obj.start()
>>> 2025-10-23T23:10:16.802489+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/share/weewx/weewx/reportengine.py", line 465, in start
>>> 2025-10-23T23:10:16.802561+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      self.run()
>>> 2025-10-23T23:10:16.802632+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 166, in run
>>> 2025-10-23T23:10:16.802709+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      ngen = 
>>> self.generate(gen_dict[section_name], section_name, self.gen_ts)
>>> 2025-10-23T23:10:16.802780+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****             
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.802853+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate
>>> 2025-10-23T23:10:16.802943+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      ngen += 
>>> self.generate(section[subsection], subsection, gen_ts)
>>> 2025-10-23T23:10:16.803017+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****             
>>>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.803089+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate
>>> 2025-10-23T23:10:16.803161+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      ngen += 
>>> self.generate(section[subsection], subsection, gen_ts)
>>> 2025-10-23T23:10:16.803232+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****             
>>>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.803330+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 309, in generate
>>> 2025-10-23T23:10:16.803411+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      searchList = 
>>> self._getSearchList(encoding, timespan,
>>> 2025-10-23T23:10:16.803483+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****                   
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.803554+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 401, in _getSearchList
>>> 2025-10-23T23:10:16.803628+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      search_list += 
>>> obj.get_extension_list(timespan, db_lookup)
>>> 2025-10-23T23:10:16.803701+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****                     
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.803773+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/etc/weewx/bin/user/belchertown.py", line 797, in get_extension_list
>>> 2025-10-23T23:10:16.803843+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      sun_unit = 
>>> converter.group_unit_dict["group_sun"]
>>> 2025-10-23T23:10:16.803919+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****                 
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.803985+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/lib/python3.12/collections/__init__.py", line 1015, in __getitem__
>>> 2025-10-23T23:10:16.804053+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      return self.__missing__(key)         
>>>    # support subclasses that define __missing__
>>> 2025-10-23T23:10:16.804120+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****             ^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.804180+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****    File 
>>> "/usr/lib/python3.12/collections/__init__.py", line 1007, in __missing__
>>> 2025-10-23T23:10:16.804280+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****      raise KeyError(key)
>>> 2025-10-23T23:10:16.804360+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****  KeyError: 'group_sun'
>>> 2025-10-23T23:10:16.804428+01:00  weewxd[4698]: ERROR 
>>> weewx.reportengine:         ****  Generator terminated
>>> 2025-10-23T23:10:16.806325+01:00  weewxd[4698]: Traceback (most recent 
>>> call last):
>>> 2025-10-23T23:10:16.807242+01:00  weewxd[4698]:   File 
>>> "/usr/share/weewx/weewx/reportengine.py", line 248, in run
>>> 2025-10-23T23:10:16.807474+01:00  weewxd[4698]:     obj.start()
>>> 2025-10-23T23:10:16.807584+01:00  weewxd[4698]:   File 
>>> "/usr/share/weewx/weewx/reportengine.py", line 465, in start
>>> 2025-10-23T23:10:16.807665+01:00  weewxd[4698]:     self.run()
>>> 2025-10-23T23:10:16.807739+01:00  weewxd[4698]:   File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 166, in run
>>> 2025-10-23T23:10:16.807873+01:00  weewxd[4698]:     ngen = 
>>> self.generate(gen_dict[section_name], section_name, self.gen_ts)
>>> 2025-10-23T23:10:16.807958+01:00  weewxd[4698]:           
>>>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.808040+01:00  weewxd[4698]:   File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate
>>> 2025-10-23T23:10:16.808121+01:00  weewxd[4698]:     ngen += 
>>> self.generate(section[subsection], subsection, gen_ts)
>>> 2025-10-23T23:10:16.808204+01:00  weewxd[4698]:             
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.808315+01:00  weewxd[4698]:   File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate
>>> 2025-10-23T23:10:16.808398+01:00  weewxd[4698]:     ngen += 
>>> self.generate(section[subsection], subsection, gen_ts)
>>> 2025-10-23T23:10:16.808480+01:00  weewxd[4698]:             
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.808610+01:00  weewxd[4698]:   File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 309, in generate
>>> 2025-10-23T23:10:16.808704+01:00  weewxd[4698]:     searchList = 
>>> self._getSearchList(encoding, timespan,
>>> 2025-10-23T23:10:16.808818+01:00  weewxd[4698]:                 
>>>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.808908+01:00  weewxd[4698]:   File 
>>> "/usr/share/weewx/weewx/cheetahgenerator.py", line 401, in _getSearchList
>>> 2025-10-23T23:10:16.808992+01:00  weewxd[4698]:     search_list += 
>>> obj.get_extension_list(timespan, db_lookup)
>>> 2025-10-23T23:10:16.809071+01:00  weewxd[4698]:                   
>>>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.809150+01:00  weewxd[4698]:   File 
>>> "/etc/weewx/bin/user/belchertown.py", line 797, in get_extension_list
>>> 2025-10-23T23:10:16.809231+01:00  weewxd[4698]:     sun_unit = 
>>> converter.group_unit_dict["group_sun"]
>>> 2025-10-23T23:10:16.809340+01:00  weewxd[4698]:               
>>>  ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.809426+01:00  weewxd[4698]:   File 
>>> "/usr/lib/python3.12/collections/__init__.py", line 1015, in __getitem__
>>> 2025-10-23T23:10:16.809509+01:00  weewxd[4698]:     return 
>>> self.__missing__(key)            # support subclasses that define 
>>> __missing__
>>> 2025-10-23T23:10:16.809592+01:00  weewxd[4698]:           
>>>  ^^^^^^^^^^^^^^^^^^^^^
>>> 2025-10-23T23:10:16.809804+01:00  weewxd[4698]:   File 
>>> "/usr/lib/python3.12/collections/__init__.py", line 1007, in __missing__
>>> 2025-10-23T23:10:16.809983+01:00  weewxd[4698]:     raise KeyError(key)
>>> 2025-10-23T23:10:16.810116+01:00  weewxd[4698]: KeyError: 'group_sun'
>>> 2025-10-23T23:10:16.810832+01:00  weewxd[4698]: INFO weewx.reportengine: 
>>> Copied 3 files to /var/www/html/weewx/belchertown
>>> 2025-10-23T23:10:16.833554+01:00  weewxd[4698]: DEBUG weewx.manager: 
>>> Daily summary version is 4.0
>>> 2025-10-23T23:10:17.220871+01:00  weewxd[4698]: DEBUG 
>>> weewx.drivers.vantage: Successfully woke up Vantage console
>>> 2025-10-23T23:10:17.283215+01:00  weewxd[4698]: DEBUG user.sunduration: 
>>> Calculated LOOP sunshine_time = 1.000000, based on radiation = 0.000000, 
>>> and threshold = 0.000000
>>> 2025-10-23T23:10:17.894062+01:00  weewxd[4698]: DEBUG user.sunduration: 
>>> Calculated LOOP sunshine_time = 1.000000, based on radiation = 0.000000, 
>>> and threshold = 0.000000
>>> 2025-10-23T23:10:17.951423+01:00  weewxd[4698]: INFO weewx.restx: WOW: 
>>> Published record 2025-10-23 23:10:00 BST (1761257400)
>>> 2025-10-23T23:10:18.176479+01:00  weewxd[4698]: INFO weewx.restx: 
>>> Wunderground-PWS: Published record 2025-10-23 23:10:00 BST (1761257400)
>>> 2025-10-23T23:10:19.894694+01:00  weewxd[4698]: DEBUG user.sunduration: 
>>> Calculated LOOP sunshine_time = 2.000000, based on radiation = 0.000000, 
>>> and threshold = 0.000000
>>> 2025-10-23T23:10:20.435013+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Report 'FTP' not enabled. Skipping.
>>> 2025-10-23T23:10:20.435195+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Running report 'RSYNC'
>>> 2025-10-23T23:10:20.436971+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Found configuration file 
>>> /etc/weewx/skins/Rsync/skin.conf for report 'RSYNC'
>>> 2025-10-23T23:10:20.443733+01:00  weewxd[4698]: DEBUG 
>>> weewx.reportengine: Running generators for report 'RSYNC' in directory 
>>> '/etc/weewx/skins/Rsync' with locale 'en_GB.UTF-8'
>>> 2025-10-23T23:10:20.443910+01:00  weewxd[4698]: DEBUG 
>>> weeutil.rsyncupload: rsyncupload: cmd: [['rsync', '--archive', '--stats', 
>>> '-e', 'ssh', '/var/www/html/weewx/', 'server@server:/server/path']]
>>> 2025-10-23T23:10:21.895922+01:00  weewxd[4698]: DEBUG user.sunduration: 
>>> Calculated LOOP sunshine_time = 2.000000, based on radiation = 0.000000, 
>>> and threshold = 0.000000
>>> 2025-10-23T23:10:23.580487+01:00  weewxd[4698]: INFO 
>>> weeutil.rsyncupload: rsync'd 13 files (3,471,491 bytes) in 3.14 seconds
>>> 2025-10-23T23:10:23.895215+01:00  weewxd[4698]: DEBUG user.sunduration: 
>>> Calculated LOOP sunshine_time = 2.000000, based on radiation = 0.000000, 
>>> and threshold = 0.000000
>>>
>>> Seemingly it's an error related to the sunshine hours variable that I 
>>> added using this: https://github.com/Jterrettaz/sunduration. I'm in a 
>>> different country to my dad so it's a bit difficult for me to debug it, so 
>>> I thought I'd see if anyone can suggest something obvious that would be 
>>> causing it. It didn't seem like any of the main files in /etc/weewx/ or 
>>> /usr/share/weewx/ had been modified recently by the upgrade but I could 
>>> have missed it. He chose the option to keep the existing weewx.conf when 
>>> prompted, so I've already had him make the change to "schema = 
>>> weewx.schemas.wview_extended.schema" 
>>> in that in case that's necessary.
>>>
>>> -- 
>>>
>> 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/3c0ef64d-c84a-4915-adcd-6bfa5342d9dan%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/weewx-user/3c0ef64d-c84a-4915-adcd-6bfa5342d9dan%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 visit 
https://groups.google.com/d/msgid/weewx-user/79df5506-907b-4fd9-a3c5-c5615fe638dcn%40googlegroups.com.

Reply via email to