Thanks Tom,
I have modified my extension, and when the aggregate type is used within a tag
such as $day.outTemp.rolling_avg_years(10) it works.
But it is not working with the ImageGenerator.
In my extension, I am checking that the aggregate type is "rolling_avg_year",
and if not it will raise a weewx.UnknownAggregationexception
When using the aggregate type without parameter, with this ImageGenerator
definition :
[[other_images]]
x_label_format = %Y
bottom_label_format = %x %X
time_length = 220752000 # 7 years
aggregate_interval = day
show_daynight = false
[[[trol10]]]
[[[[rol10]]]]
label = "Température : moyenne glissante sur 10 ans"
aggregate_type = rolling_avg_years10
data_type = outTemp
The image is generated :
But when using the modified extension accepting a parameter :
[[other_images]]
x_label_format = %Y
bottom_label_format = %x %X
time_length = 220752000 # 7 years
aggregate_interval = day
show_daynight = false
[[[trol10]]]
[[[[rol10]]]]
label = "Température : moyenne glissante sur 10 ans"
aggregate_type = rolling_avg_years(10)
data_type = outTemp
I have the following error :
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: Caught
unrecoverable exception in generator 'weewx.imagegenerator.ImageGenerator'
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
'outTemp' or 'rolling_avg_years(10)'
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
Traceback (most recent call last):
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
File "/usr/share/weewx/weewx/reportengine.py", line 197, in run
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
obj.start()
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
File "/usr/share/weewx/weewx/reportengine.py", line 385, in start
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
self.run()
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
File "/usr/share/weewx/weewx/imagegenerator.py", line 42, in run
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
self.gen_images(self.gen_ts)
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
File "/usr/share/weewx/weewx/imagegenerator.py", line 109, in gen_images
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
self.image_dict[timespan][plotname])
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
File "/usr/share/weewx/weewx/imagegenerator.py", line 249, in gen_plot
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
**option_dict)
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
File "/usr/share/weewx/weewx/xtypes.py", line 116, in get_series
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
raise weewx.UnknownType(msg)
2022-10-09 15:30:24 weewx[22095] ERROR weewx.reportengine: ****
weewx.UnknownType: 'outTemp' or 'rolling_avg_years(10)'
When called by the ImageGenerator, it appears that the aggregate type
parameter of the get_aggregate function is the full value
"rolling_avg_years(10)" and not the value " "rolling_avg_years". So in that
case it is considered as an unknown aggregation because it is not
"rolling_avg_years" and rejected by my extension.
Is there a special syntax to be used when defining an aggregate type with a
parameter for the ImageGenerator ?
> Le 9 oct. 2022 à 15:07, Tom Keffer <[email protected]> a écrit :
>
> You're on the right track. If you pass in a parameter to an aggregation, it
> appears in "option_dict" in the corresponding get_aggregate() call. If you
> don't name that parameter, it shows up as key "val". So, in your example,
>
> $day.outTemp.rolling_avg_years(10)
>
> would result in a call to get_aggregate() that looks like:
>
> get_aggregate('outTemp', timespan, 'rolling_avg_years', db_manager, val=10)
>
> The value 'val' will contain the appropriate number of years to do the
> rolling average.
>
> Hope that helps.
>
> -tk
>
> On Sun, Oct 9, 2022 at 5:54 AM [email protected] <mailto:[email protected]>
> <[email protected] <mailto:[email protected]>> wrote:
> Hello,
>
> I am writing a Xtype extension providing a new aggregate type that
> calculates a rolling average of a parameter over years.
>
> I started by defining several different aggregate type for different number
> of years, such as :
>
> rolling_avg_years1
>
> rolling_avg_years5
>
> rolling_avg_years10
>
> rolling_avg_years15
>
> For exemple : $day.outTemp.rolling_avg_years10 returns the average
> temperature of the last 3650 days (i.e. 10 years).
>
> And it works.
>
> But, to allow more flexibility, I would prefer, if possible, to have the
> number of years as parameter, such as
>
> rolling_avg_years(10)
>
> but I don't know how I could retrieve the parameter in the get_aggregate
> function of my extension.
>
> Any help is appreciated,
> Thanks
>
> --
> 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]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/weewx-development/c17fbd97-4547-4a36-bfc0-35b10aa3b68bn%40googlegroups.com
>
> <https://groups.google.com/d/msgid/weewx-development/c17fbd97-4547-4a36-bfc0-35b10aa3b68bn%40googlegroups.com?utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to a topic in the Google
> Groups "weewx-development" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/weewx-development/RyO1T4UFFBk/unsubscribe
> <https://groups.google.com/d/topic/weewx-development/RyO1T4UFFBk/unsubscribe>.
> To unsubscribe from this group and all its topics, send an email to
> [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/weewx-development/CAPq0zECGbOo6rT7mNdRFvRQAq6TNmWKZO6NZ7evDA6mvUz925g%40mail.gmail.com
>
> <https://groups.google.com/d/msgid/weewx-development/CAPq0zECGbOo6rT7mNdRFvRQAq6TNmWKZO6NZ7evDA6mvUz925g%40mail.gmail.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/C9BC2A91-B94D-4EF9-A8CF-3FC81DC37095%40gmail.com.