Oooh. That's a perfect example! Thanks, John. On Fri, Jan 21, 2022 at 2:29 PM 'John Kline' via weewx-user < [email protected]> wrote:
> Another example: > > > https://github.com/chaunceygardiner/weewx-purple/blob/e7f214539b63281d74af9e90810045dd8d1b7b80/bin/user/purple.py#L538 > > On Jan 21, 2022, at 2:01 PM, Seth Ratner <[email protected]> wrote: > > It looks like there is an example in the weewx-xaggs > <https://github.com/tkeffer/weewx-xaggs> repository. I'm about to dive > in, but from a cursory look, unlike with the scalar, I'm going to have to > figure out how to use dbmanager to pull the outtemps from the database then > iterate through each one, determine which ones are chill hours, and then > add those together, correct? > > On Friday, January 21, 2022 at 3:49:33 PM UTC-6 [email protected] wrote: > >> Let me see if I can come up with something. Give me some time. >> >> On Fri, Jan 21, 2022 at 1:37 PM Seth Ratner <[email protected]> wrote: >> >>> Oh boy... >>> >>> I cant find any examples for that. If one exists, it will greatly reduce >>> the number of questions I have... >>> >>> On Friday, January 21, 2022 at 3:24:07 PM UTC-6 [email protected] wrote: >>> >>>> You're getting close! >>>> >>>> You're going to have to implement get_aggregate(), as well as >>>> get_scalar(). >>>> >>>> The xtypes framework has no way of taking the calculation for >>>> get_scalar() and using it to calculate an aggregate. You're going to have >>>> to do it. The good news is that once you've done it, then the framework >>>> can use that to calculate a series on its own. This is where we will find >>>> out how fast the calculation is. >>>> >>>> -tk >>>> >>>> On Fri, Jan 21, 2022 at 12:51 PM Seth Ratner <[email protected]> >>>> wrote: >>>> >>>>> Getting Closer, but still getting errors. >>>>> >>>>> I can now see the result in the archive loop (gets sent over MQTT). >>>>> But with the seasons skin attempts to make a chart with it, I get: >>>>> >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> Caught unrecoverable exception in generator >>>>> 'weewx.imagegenerator.ImageGenerator' >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** chillHours >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** Traceback (most recent call last): >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** File "/usr/share/weewx/weewx/reportengine.py", line 196, in >>>>> run >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** obj.start() >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** File "/usr/share/weewx/weewx/reportengine.py", line 281, in >>>>> start >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** self.run() >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** File "/usr/share/weewx/weewx/imagegenerator.py", line 41, in >>>>> run >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** self.genImages(self.gen_ts) >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** File "/usr/share/weewx/weewx/imagegenerator.py", line 177, >>>>> in >>>>> genImages >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** start_vec_t, stop_vec_t ,data_vec_t = >>>>> weewx.xtypes.get_series(var_type, >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** File "/usr/share/weewx/weewx/xtypes.py", line 94, in >>>>> get_series >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** raise weewx.UnknownType(obs_type) >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** weewx.UnknownType: chillHours >>>>> Jan 21 14:40:39 Ratner-Orchard weewx[3122] ERROR weewx.reportengine: >>>>> **** Generator terminated >>>>> >>>>> Here's the block I added in skin.conf >>>>> >>>>> [[[yearchill]]] >>>>> plot_type = bar >>>>> [[[[chillHours]]]] >>>>> aggregate_type = cumulative >>>>> aggregate_interval = day >>>>> >>>>> >>>>> On Friday, January 21, 2022 at 2:14:11 PM UTC-6 Seth Ratner wrote: >>>>> >>>>>> I'm close, I think, except now I'm getting this every loop or report >>>>>> generation. >>>>>> >>>>>> DEBUG weewx.wxservices: Unknown extensible type 'chillHours' >>>>>> >>>>>> There are a couple things I'm unsure of that might be causing this >>>>>> >>>>>> - I used the group type group_elapsed because it seemed like the best >>>>>> fit >>>>>> - The last line of the python file, modeled after the >>>>>> VaporPressure.py example, is not part of either class, so I'm not sure >>>>>> what >>>>>> runs it. >>>>>> >>>>>> Here's the code: >>>>>> https://github.com/lordratner/weewx_chillHours/blob/main/chill_hours.py >>>>>> >>>>>> It's been added to weewx.conf engine section in xtypes, and I've >>>>>> confirmed the service is loading. >>>>>> >>>>>> Thoughts? >>>>>> >>>>>> >>>>>> On Thursday, January 20, 2022 at 8:26:59 PM UTC-6 [email protected] >>>>>> wrote: >>>>>> >>>>>>> I'd try it as a pure xtype first, and see what kind of performance I >>>>>>> got. If it's slow, put it in the database. >>>>>>> >>>>>>> You can query the database directly, but the advantage of using >>>>>>> xtypes system to do your queries is that it can automatically optimize >>>>>>> whether or not to use the daily summaries. >>>>>>> >>>>>>> There's a brief section >>>>>>> <https://github.com/weewx/weewx/wiki/WeeWX-V4-user-defined-types#xtypes-api> >>>>>>> in the wiki about the API. It's pretty self-explanatory, except about >>>>>>> where >>>>>>> db_manager comes from. That's an instance of >>>>>>> weewx.manager.DaySummaryManager. Look in weewx/manager.py for how to >>>>>>> create >>>>>>> one. There are some convenient static methods for doing so. >>>>>>> >>>>>>> On Thu, Jan 20, 2022 at 6:15 PM Seth Ratner <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Thanks Tom >>>>>>>> >>>>>>>> Final questions for the night, I promise 🤣😂 >>>>>>>> >>>>>>>> Would you put this one the database, or just let WeeWx calculate it >>>>>>>> using the xtype each time? >>>>>>>> >>>>>>>> Second, is there an API or interface or whatever where another >>>>>>>> application can query WeeWX for some sort of weather data? In this >>>>>>>> case, >>>>>>>> I'd like my irrigation software to query WeeWX for the ET, total rain, >>>>>>>> and >>>>>>>> chill hours of a given time frame. >>>>>>>> >>>>>>>> Or do I just have to read the database directly? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Jan 20, 2022, 19:15 Tom Keffer <[email protected]> wrote: >>>>>>>> >>>>>>>>> On Thu, Jan 20, 2022 at 4:01 PM Seth Ratner <[email protected]> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Would you add the step from the xType guide of adding chillHours >>>>>>>>>> to [StdWXCalculate] [[Calculations]]? Or would the "synthetic type" >>>>>>>>>> concept >>>>>>>>>> mean it only exists when it is called on. >>>>>>>>>> >>>>>>>>>> As I understand it, adding it to [StdWXCalculate] >>>>>>>>>> [[Calculations]] would add chillHours to the loop, but it would not >>>>>>>>>> be in >>>>>>>>>> the archive unless I also added a column for it with the same type >>>>>>>>>> name. >>>>>>>>>> >>>>>>>>> >>>>>>>>> It doesn't hurt to add to StdWXCalculate, but it's really only >>>>>>>>> necessary if you want to add the results to the database. And, >>>>>>>>> yes, it will only get added to the database if there's a matching >>>>>>>>> column in >>>>>>>>> the schema. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> So on my Belchertown skin, where I want total Chill Hours from >>>>>>>>>> Oct - May displayed, if I add it to the archive WeeWX will use the >>>>>>>>>> database >>>>>>>>>> to calculate the total (just adding them together), whereas if I >>>>>>>>>> don't add >>>>>>>>>> it to the archive, WeeWX will have to run the (if outTemp < 45 then >>>>>>>>>> chillHours = archive_interval) for every archive row in that >>>>>>>>>> timespan, then >>>>>>>>>> sum that? >>>>>>>>>> >>>>>>>>> >>>>>>>>> Maybe. For the ImageGenerator that comes with WeeWX, if a type is >>>>>>>>> not available in the database, it will try to calculate it "on the >>>>>>>>> fly" >>>>>>>>> using xtypes. However, I have no idea what the Belchertown skin does. >>>>>>>>> I >>>>>>>>> kind of doubt it leverages xtypes. >>>>>>>>> -tk >>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to a topic in >>>>>>>>> the Google Groups "weewx-user" group. >>>>>>>>> To unsubscribe from this topic, visit >>>>>>>>> https://groups.google.com/d/topic/weewx-user/7ysYvSUMOOo/unsubscribe >>>>>>>>> . >>>>>>>>> To unsubscribe from this group and all its topics, send an email >>>>>>>>> to [email protected]. >>>>>>>>> To view this discussion on the web visit >>>>>>>>> https://groups.google.com/d/msgid/weewx-user/CAPq0zEAdDBGTow7i55XfnGPzncQjdmiH%2BSk%3DL9_ZoE85QXKO%3Dw%40mail.gmail.com >>>>>>>>> <https://groups.google.com/d/msgid/weewx-user/CAPq0zEAdDBGTow7i55XfnGPzncQjdmiH%2BSk%3DL9_ZoE85QXKO%3Dw%40mail.gmail.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 [email protected]. >>>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/weewx-user/CAHTssjOF_Q65XveoboAwRV%2Br5-oNb8curD7LZTTmuD7Y0-EAjQ%40mail.gmail.com >>>>>>>> <https://groups.google.com/d/msgid/weewx-user/CAHTssjOF_Q65XveoboAwRV%2Br5-oNb8curD7LZTTmuD7Y0-EAjQ%40mail.gmail.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 [email protected]. >>>>> >>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/weewx-user/cb666588-aced-461c-9171-9d48b89e85f5n%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/weewx-user/cb666588-aced-461c-9171-9d48b89e85f5n%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 [email protected]. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/weewx-user/8bb5d647-2f69-42b5-b5db-5b4c901e32f5n%40googlegroups.com >>> <https://groups.google.com/d/msgid/weewx-user/8bb5d647-2f69-42b5-b5db-5b4c901e32f5n%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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/weewx-user/5c169c50-b9aa-4986-b2cc-0d58494b6665n%40googlegroups.com > <https://groups.google.com/d/msgid/weewx-user/5c169c50-b9aa-4986-b2cc-0d58494b6665n%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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/weewx-user/A8392819-685E-4BA1-93BD-BEAAF6D888C5%40johnkline.com > <https://groups.google.com/d/msgid/weewx-user/A8392819-685E-4BA1-93BD-BEAAF6D888C5%40johnkline.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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/CAPq0zECv3roTZJjMN-Rn6q6dnigf66%2ByqbO15Uw8UFwqr3KT6w%40mail.gmail.com.
