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.