Hi,
How are you capturing the data from your solar panels?

https://claydonsweather.org.uk

On 21 Oct 2024, at 14:55, mike.t...@noworries.plus.com <mike.thomp...@noworries.plus.com> wrote:

I forgot to say that solar.py is in weewx.conf engine section
[Engine]
    # The following section specifies which services should be run and in what order.
    [[Services]]
        prep_services = weewx.engine.StdTimeSynch,
        data_services = user.solar.AddSolar,
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        xtype_services = weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta
        # archive_services = weewx.engine.StdArchive, user.forecast.ZambrettiForecast, user.forecast.WUForecast, user.forecast.NWSForecast, user.forecast.XTideForecast, user.forecast.OWMFor$
        archive_services = weewx.engine.StdArchive
        restful_services = weewx.restx.StdWunderground, weewx.restx.StdWOW, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdStationRegistry, user.owm.OpenWeatherMap
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport, user.alarm.MyAlarm, user.badData.MyBadData

solar.py
import syslog
import weewx
from weewx.engine import StdService
import weewx.units
weewx.units.obs_group_dict['solar'] = 'group_energy'
"""
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'
"""

class AddSolar(StdService):

    def __init__(self, engine, config_dict):

      # Initialize my superclass first:
      super(AddSolar, self).__init__(engine, config_dict)
      
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)


monthsolar_using_solar_column.png
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

 
 

  
 

--
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/4d9b3aa2-d1ea-4fc1-9678-7849d5d93906n%40googlegroups.com.

--
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/64E76E5D-3603-4F60-B622-DFB38CC8D8B9%40btinternet.com.

Reply via email to