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)
>
>
> [image: 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 
> <https://github.com/glennmckechnie/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.

Reply via email to