Unfortunately, the ImageGenerator does not allow you to use an expression
as a data type; only type that appear in the schema, or as an xtype.
Defining a new xtype is not terribly hard. It would look something like
this (NOT TESTED):
File *user/rainet.py*:
import weewx.units
import weewx.xtypes
class RainET(weewx.xtypes.XType):
@staticmethod
def get_scalar(obs_type, record, db_manager=None):
if obs_type != 'rain-ET':
raise weewx.UnknownType
rain = record.get('rain')
ET = record.get('ET')
if rain is not None and ET is not None:
record['rain-ET'] = rain - ET
@staticmethod
def get_aggregate(obs_type, timespan, aggregate_type, db_manager,
**option_dict):
if obs_type != 'rain-ET':
raise weewx.UnknownType
if aggregate_type != 'sum':
raise weewx.UnknownAggregation
sql = "SELECT SUM(rain - ET) FROM %s WHERE dateTime>? AND
dateTime<=?;" % db_manager.table_name
row = db_manager.getSql(sql, timespan)
if row is not None:
value = row[0]
else:
value = None
# There is probably a more elegant way of doing this:
if db_manager.std_unit_system == weewx.US:
unit = 'inch'
elif db_manager.std_unit_system == weewx.METRIC:
unit = 'cm'
else:
unit = 'mm'
vt = weewx.units.ValueTuple(value, unit, 'group_rain')
return vt
# Insert my new class into the xtypes system:
weewx.xtypes.xtypes.append(RainET())
The final detail is that you have to make sure this file gets run, so that
the new type will get inserted into the xtypes system. The easiest is to
import it from a file that you know will get executed before the reporting
happens.
import user.rainet
-tk
On Sat, Nov 23, 2019 at 8:54 AM Hartmut Schweidler <[email protected]>
wrote:
> this is not a datentype
> it is an operation rain minus ET
>
> At some point here was reported in the forum about it
>
> I have graphically compared the two different calculations
> rain sum minus evaporation water balance
>
> but has no relevance anymore
>
> gruss Hartmut
>
> Am Samstag, 23. November 2019 17:15:56 UTC+1 schrieb Tom Keffer:
>>
>> What is type 'rain-ET'? Is it defined in the schemas for bindings
>> wx_binding and wd_binding?
>>
>> If it is not defined, you will get this error. With beta 3, I've improved
>> the error message.
>>
>> -tk
>>
>> On Sat, Nov 23, 2019 at 6:15 AM Hartmut Schweidler <[email protected]>
>> wrote:
>>
>>> supplement
>>>
>>> Die Auswertung aus zwei Datenbanken scheint so nicht mehr möglich
>>>
>>> The evaluation of two databases seems no longer possible
>>>
>>> i had in skin.conf
>>>
>>> [[[monthET_rain]]]
>>> data_binding = wd_binding
>>> [[[[rain_ET]]]]
>>> aggregate_type = cumulative
>>> aggregate_interval = 10800
>>> label = 'Wasser-Verdunstung /'
>>> [[[[data]]]]
>>> data_binding = wx_binding
>>> *data_type = rain-ET*
>>> aggregate_type = cumulative
>>> aggregate_interval = 10800
>>> label = 'Wasserbilanz ges.'
>>>
>>>
>>> also the following error "weewx.UnknownAggregation: sum" found like
>>> here
>>>
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> reportengine: Caught unrecoverable exception in generator
>>> 'weewx.imagegenerator.ImageGenerator'
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** sum
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** Traceback (most recent call last):
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** File "/home/weewx/bin/weewx/reportengine.py", line 202, in
>>> run
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** obj.start()
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** File "/home/weewx/bin/weewx/reportengine.py", line 285, in
>>> start
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** self.run()
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** File "/home/weewx/bin/weewx/imagegenerator.py", line 41, in
>>> run
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** self.genImages(self.gen_ts)
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** File "/home/weewx/bin/weewx/imagegenerator.py", line 180, in
>>> genImages
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** aggregate_interval=aggregate_interval)
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** File "/home/weewx/bin/weewx/xtypes.py", line 77, in
>>> get_series
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** return xtype.get_series(obs_type, timespan, db_manager,
>>> aggregate_type, aggregate_interval)
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** File "/home/weewx/bin/weewx/xtypes.py", line 126, in
>>> get_series
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** agg_vt = get_aggregate(obs_type, stamp, do_aggregate,
>>> db_manager)
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** File "/home/weewx/bin/weewx/xtypes.py", line 94, in
>>> get_aggregate
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** raise weewx.UnknownAggregation(aggregate_type)
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** weewx.UnknownAggregation: sum
>>> Nov 21 06:46:33 wetter weewx-weewx[6777] ERROR weewx.reportengine:
>>> **** Generator terminated
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "weewx-development" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/weewx-development/5f89788c-37d5-46f2-8750-41b25b2b99fa%40googlegroups.com
>>> <https://groups.google.com/d/msgid/weewx-development/5f89788c-37d5-46f2-8750-41b25b2b99fa%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "weewx-development" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/weewx-development/1672886f-7237-4e29-95b8-3bf39e5e30b4%40googlegroups.com
> <https://groups.google.com/d/msgid/weewx-development/1672886f-7237-4e29-95b8-3bf39e5e30b4%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
--
You received this message because you are subscribed to the Google Groups
"weewx-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/weewx-development/CAPq0zEA_cBcuYanwLMJ3RCdns62qk%3DDKXJqK6yNmgsYCnF3H6w%40mail.gmail.com.