Step by step by step... I think what I want is genBatchRecords from the manager. But I have no idea what the dictionary it yields looks like, so I don't know how to work with it. I've been unsuccessful getting the dictionary to print in the logs so I can look at it. I managed to get get genBatchRows to work, but the list-of-lists it creates are not linked to the column names.
On Friday, January 21, 2022 at 4:56:02 PM UTC-6 Seth Ratner wrote: > Closer and Closer, lol > > row = db_manager.getSql(sql_stmt) > > Using: SELECT outTemp FROM archive WHERE dateTime BETWEEN 1642744800 AND > 1642748400 > > Is returning a single outTemp. I am not sure how to return multiple rows > then iterate through them to check for == chilhour and add them together. I > know how to do it in PHP, but not WeeWX... > > I think once I get that, I'll be there. It would be simpler to put > chillHours in the archive then I could just use sum(chillHours) in the sql > query, but I'd rather not at this point, to make the xtype more flexible. > > > On Friday, January 21, 2022 at 4:48:30 PM UTC-6 tke...@gmail.com wrote: > >> Oooh. That's a perfect example! Thanks, John. >> >> On Fri, Jan 21, 2022 at 2:29 PM 'John Kline' via weewx-user < >> weewx...@googlegroups.com> 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 <lordr...@gmail.com> 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 tke...@gmail.com 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 <lordr...@gmail.com> 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 tke...@gmail.com >>>>> 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 <lordr...@gmail.com> >>>>>> 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 tke...@gmail.com >>>>>>>> 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 <se...@lordratner.com> >>>>>>>>> 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 <tke...@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> On Thu, Jan 20, 2022 at 4:01 PM Seth Ratner <lordr...@gmail.com> >>>>>>>>>>> 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 weewx-user+...@googlegroups.com. >>>>>>>>>>> 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 weewx-user+...@googlegroups.com. >>>>>>>>>> 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 weewx-user+...@googlegroups.com. >>>>>>> >>>>>> 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 weewx-user+...@googlegroups.com. >>>>> >>>> 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 weewx-user+...@googlegroups.com. >>> 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 weewx-user+...@googlegroups.com. >>> >> 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 weewx-user+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/b3f3eb0c-1f4c-431a-9fde-570c89e066c5n%40googlegroups.com.