Thanks Vince - you're right, there are references to group_sun in belchertown.py, weewx.conf and skin.conf (the latter two are just "group_sun = hour"). I think I added these because I wanted to add records page entries for sunniest day and sunniest month, and so I followed the same format as for the calculation of the rainfall records (wettest day/month), the lines for which involve group_rain and rain_unit in belchertown.py. Any idea why the upgrade to weewx 5.2 would have caused this to break? On Friday, 31 October 2025 at 11:55:59 UTC-6 vince wrote:
> 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/482726bd-47fd-4e77-adc5-03b81dc38e07n%40googlegroups.com.
