On Monday, October 21, 2024 at 2:42:19 PM UTC+1 mike.t...@noworries.plus.com wrote:
Hi All, I'm adding kw/h data from my solar panels to a daily summary table. I've followed the electrical example in the weewx docs and
- added a new database column, solar
- created a solar.py which doesn't do anything other than define the new unit group and add solar to it
from weewx.engine import StdService
import weewx.units
weewx.units.obs_group_dict['solar'] = 'group_solar'
weewx.units.USUnits['group_solar'] = 'kilowatt_hour'
weewx.units.MetricUnits['group_solar'] = 'kilowatt_hour'
weewx.units.MetricWXUnits['group_solar'] = 'kilowatt_hour'
weewx.units.default_unit_format_dict['kilowatt_hour'] = '%.1f'
weewx.units.default_unit_label_dict['kilowatt_hour'] = ' kw/h'
Image Generator creates a bar chart based on the new solar element and picks up the default label kw/h
skin.conf snippet
[[[monthsolar]]]
yscale = 0, None, 2
plot_type = bar
[[[[solar]]]]
aggregate_type = sum
aggregate_interval = 86400
label = Solar (daily total)
However when historygenerator.py runs it errors out with "obs_type solar no unit found".
This is not true as Image generator has worked correctly and also I have written the weewx.units.obs_group_dict dictionary to syslog so that I could see the contents and solar is present in the list.
syslog snippet
Oct 21 13:55:20 weepi weewxd[32025]: INFO weewx.imagegenerator: Generated 24 images for report SeasonsReport in 1.77 seconds
Oct 21 13:55:20 weepi weewxd[32025]: INFO weewx.reportengine: Copied 0 files to /home/weewx/public_html
Oct 21 13:55:20 weepi weewxd[32025]: INFO weewx.cheetahgenerator: Generated 6 files for report SmartphoneReport in 0.07 seconds
Oct 21 13:55:20 weepi weewxd[32025]: INFO weewx.imagegenerator: Generated 6 images for report SmartphoneReport in 0.23 seconds
Oct 21 13:55:20 weepi weewxd[32025]: INFO weewx.reportengine: Copied 0 files to /home/weewx/public_html/smartphone
Oct 21 13:55:20 weepi weewxd[32025]: INFO weewx.cheetahgenerator: Generated 3 files for report exfoliation in 0.37 seconds
Oct 21 13:55:21 weepi weewxd[32025]: INFO weewx.imagegenerator: Generated 15 images for report exfoliation in 0.69 seconds
Oct 21 13:55:21 weepi weewxd[32025]: INFO weewx.reportengine: Copied 0 files to /home/weewx/public_html/exfoliation
Oct 21 14:00:01 weepi CRON[1553]: (pi) CMD (/home/pi/testwifi.sh)
Oct 21 14:00:04 weepi /home/pi/testwifi.sh: WiFi seems up.
Oct 21 14:00:24 weepi weewxd[32025]: INFO weewx.manager: Added record 2024-10-21 14:00:00 BST (1729515600) to database 'weewx.sdb'
Oct 21 14:00:24 weepi weewxd[32025]: INFO weewx.manager: Added record 2024-10-21 14:00:00 BST (1729515600) to daily summary in 'weewx.sdb'
Oct 21 14:00:24 weepi weewxd[32025]: INFO weewx.restx: OWM: Published record 2024-10-21 14:00:00 BST (1729515600)
Oct 21 14:00:24 weepi weewxd[32025]: INFO weewx.restx: Wunderground-PWS: Published record 2024-10-21 14:00:00 BST (1729515600)
Oct 21 14:00:25 weepi /weewxd.py: historygenerator.py: obs_type solar no unit found
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.cheetahgenerator.CheetahGenerator'
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** local variable 'unit_type' referenced before assignment
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** Traceback (most recent call last):
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/reportengine.py", line 248, in run
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** obj.start()
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/reportengine.py", line 465, in start
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** self.run()
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", line 166, in run
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** ngen = self.generate(gen_dict[section_name], section_name, self.gen_ts)
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", line 226, in generate
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** ngen += self.generate(section[subsection], subsection, gen_ts)
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", line 226, in generate
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** ngen += self.generate(section[subsection], subsection, gen_ts)
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", line 313, in generate
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** _filename))
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", line 401, in _getSearchList
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** search_list += obj.get_extension_list(timespan, db_lookup)
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/weewx/bin/user/historygenerator.py", line 178, in get_extension_list
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** self.search_list_extension[table_name] = self._statsHTMLTable(table_options, table_stats, table_name, binding, NOAA=noaa)
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** File "/home/weewx/bin/user/historygenerator.py", line 277, in _statsHTMLTable
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** if unit_type == 'count':
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** UnboundLocalError: local variable 'unit_type' referenced before assignment
Oct 21 14:00:25 weepi weewxd[32025]: ERROR weewx.reportengine: **** Generator terminated
Oct 21 14:00:28 weepi weewxd[32025]: INFO weewx.imagegenerator: Generated 38 images for report SeasonsReport in 3.82 seconds
Oct 21 14:00:28 weepi weewxd[32025]: INFO weewx.reportengine: Copied 0 files to /home/weewx/public_html
Oct 21 14:00:28 weepi weewxd[32025]: INFO weewx.cheetahgenerator: Generated 6 files for report SmartphoneReport in 0.07 seconds
Oct 21 14:00:29 weepi weewxd[32025]: INFO weewx.imagegenerator: Generated 12 images for report SmartphoneReport in 1.01 seconds
My python is rudimentary but it looks like the try has failed
try:
unit_type = reading.converter.group_unit_dict[reading.value_t[2]]
except KeyError:
syslog.syslog(syslog.LOG_INFO, "%s: obs_type %s no unit found" % (os.path.basename(__file__),
obs_type))
If I assign solar to group_energy;
weewx.units.obs_group_dict['solar'] = 'group_energy'
historygenerator runs without error.
I hacked the historygenerator and printed the contents of reading.converter.group_unit_dict to syslog and solar wasn't in the list.
Hence my conclusion is that either I have not correctly defined the new unit and /or unit group or historygenerator is not picking up new units.
I have a work around, however as my python is not good I'd like to understand what's going on.
Any insight welcome, thanks
BTW My setup is RPi4 and weewx5.1 with the
AllTimeSeasons skin extension