Nothing clever, the data is exported to a spreadsheet retrospectively. The manipulate the spreadsheet to create a SQL script. One day I might have the time and like the challenge of sniffing the network traffic!
On Monday, October 21, 2024 at 5:00:36 PM UTC+1 steepleian wrote: > 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.t...@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) >> >> >> [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+...@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 > > <https://groups.google.com/d/msgid/weewx-user/4d9b3aa2-d1ea-4fc1-9678-7849d5d93906n%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 weewx-user+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/weewx-user/7de135b6-0a56-4b81-a832-5f83bda12cadn%40googlegroups.com.