Thank you very much for your solution. Yes, it is very slow, on my 
raspberry 4 it takes almost 2 minutes. Does this have any drawbacks? I have 
the archive interval every 5 min.
There is something that seems strange to me in the graph because according 
to it today we reach both the historical max and the minimum. It seems odd.
Where I can't make it work is with the belchertown skin, both the 
historical_ * and the historical_hour_ *
I have in graph.conf
[[chart10]]
         title = historical
         aggregate_type = historical_max
         aggregate_interval = 86400
         observation_type = outTemp

[image: mamin.png]


El domingo, 12 de diciembre de 2021 a las 13:26:52 UTC+1, [email protected] 
escribió:

> I was able to get this to work, but not without considerable modifications 
> and limitations. 
>
> 1. You need to define new aggregation types. You can't use 
> 'historical_min', because that SQL statement is designed for using the 
> daily summaries. To calculate historical hourly data, you'll have to use 
> the main archive table:
>
> 'historical_hour_min': "SELECT min({obs_type}) FROM {table} "
>                        "WHERE STRFTIME('%m-%d-%H', datetime, 'unixepoch', 
> 'localtime') "
>                        "= '{month:02d}-{day:02d}-{hour:02d}'",
> 'historical_hour_max': "SELECT max({obs_type}) FROM {table} "
>                        "WHERE STRFTIME('%m-%d-%H', datetime, 'unixepoch', 
> 'localtime') "
>                        "= '{month:02d}-{day:02d}-{hour:02d}'",
>
> 2. The Python code in xaggs.py is designed for using the daily summaries, 
> so it must be modified as well. Here's the total diff:
>
> *** xaggs.py 2021-12-09 07:00:04.000000000 -0800
>
> --- /Users/Shared/weewx/bin/user/xaggs.py 2021-12-12 04:12:45.000000000 
> -0800
>
> ***************
>
> *** 51,56 ****
>
> --- 51,62 ----
>
>                                     "WHERE STRFTIME('%m-%d', 
> dateTime,'unixepoch','localtime') = '{month:02d}-{day:02d}';",
>
>               'historical_avg': "SELECT SUM(`wsum`), SUM(`sumtime`) FROM 
> {table}_day_{obs_type} "
>
>                                 "WHERE STRFTIME('%m-%d', 
> dateTime,'unixepoch','localtime') = '{month:02d}-{day:02d}';",
>
> +             'historical_hour_min': "SELECT min({obs_type}) FROM {table} 
> "
>
> +                                    "WHERE STRFTIME('%m-%d-%H', 
> datetime, 'unixepoch', 'localtime') "
>
> +                                    "= 
> '{month:02d}-{day:02d}-{hour:02d}'",
>
> +             'historical_hour_max': "SELECT max({obs_type}) FROM {table} 
> "
>
> +                                    "WHERE STRFTIME('%m-%d-%H', 
> datetime, 'unixepoch', 'localtime') "
>
> +                                    "= 
> '{month:02d}-{day:02d}-{hour:02d}'",
>
>           },
>
>           'mysql': {
>
>               'historical_min': "SELECT MIN(`min`) FROM 
> {table}_day_{obs_type} "
>
> ***************
>
> *** 81,106 ****
>
>           if aggregate_type not in XAggsHistorical.sql_stmts[dbtype]:
>
>               raise weewx.UnknownAggregation(aggregate_type)
>
>   
>
>           # The time span must lie on midnight-to-midnight boundaries
>
> !         if db_manager.first_timestamp is None or 
> db_manager.last_timestamp is None:
>
> !             raise weewx.UnknownAggregation(aggregate_type)
>
> !         if not (isStartOfDay(timespan.start) or timespan.start == 
> db_manager.first_timestamp) \
>
> !                 or not (isStartOfDay(timespan.stop) or timespan.stop == 
> db_manager.last_timestamp):
>
> !             raise weewx.UnknownAggregation("%s of %s" % 
> (aggregate_type, timespan))
>
> ! 
>
> !         start_day = datetime.date.fromtimestamp(timespan.start)
>
> !         stop_day = datetime.date.fromtimestamp(timespan.stop)
>
> ! 
>
> !         # The timespan must cover just one day
>
> !         delta = stop_day - start_day
>
> !         if delta.days != 1:
>
> !             raise weewx.UnknownAggregation("%s of %s" % 
> (aggregate_type, timespan))
>
>   
>
>           interp_dict = {
>
>               'table': db_manager.table_name,
>
>               'obs_type': obs_type,
>
>               'month': start_day.month,
>
> !             'day': start_day.day
>
>           }
>
>   
>
>           # Get the correct sql statement, and format it with the 
> interpolation dictionary.
>
> --- 87,113 ----
>
>           if aggregate_type not in XAggsHistorical.sql_stmts[dbtype]:
>
>               raise weewx.UnknownAggregation(aggregate_type)
>
>   
>
> +         start_day = datetime.datetime.fromtimestamp(timespan.start)
>
> +         stop_day = datetime.datetime.fromtimestamp(timespan.stop)
>
> + 
>
>           # The time span must lie on midnight-to-midnight boundaries
>
> !         if aggregate_type not in ['historical_hour_min', 
> 'historical_hour_max']:
>
> !             if db_manager.first_timestamp is None or 
> db_manager.last_timestamp is None:
>
> !                 raise weewx.UnknownAggregation(aggregate_type)
>
> !             if not (isStartOfDay(timespan.start) or timespan.start == 
> db_manager.first_timestamp) \
>
> !                     or not (isStartOfDay(timespan.stop) or 
> timespan.stop == db_manager.last_timestamp):
>
> !                 raise weewx.UnknownAggregation("%s of %s" % 
> (aggregate_type, timespan))
>
> !             # The timespan must cover just one day
>
> !             delta = stop_day - start_day
>
> !             if delta.days != 1:
>
> !                 raise weewx.UnknownAggregation("%s of %s" % 
> (aggregate_type, timespan))
>
>   
>
>           interp_dict = {
>
>               'table': db_manager.table_name,
>
>               'obs_type': obs_type,
>
>               'month': start_day.month,
>
> !             'day': start_day.day,
>
> !             'hour' : start_day.hour,
>
>           }
>
>   
>
>           # Get the correct sql statement, and format it with the 
> interpolation dictionary.
>
> 3. The skin.conf image specification looks like:
>
> [[day_images]]
>     x_label_format = %H:%M
>     bottom_label_format = %A %d %B %Y  %H h %M min
>     time_length = 97200 # 27 hours
>     
>     [[[dayhistorical]]]
>          time_length = 86400
>          [[[[min]]]]
>              label = min
>              aggregate_type = historical_hour_min
>              aggregate_interval = hour
>
>
>              data_type = outTemp
>          [[[[outTemp]]]]
>          [[[[max]]]]
>             label = max
>
>             aggregate_type = historical_hour_max
>             aggregate_interval = hour
>             data_type = outTemp
>
>
> 4. Finally, it is *slow*. The reason is that for the daily historical 
> statistics, it can use the daily summaries, which are quite small. To find 
> historical hourly data, the query engine must scan the entire database 
> table. On my Mac M1, it took 27 seconds to do one plot!
>
> Here's the results:
>
> [image: image.png]
> -tk
>
> On Sun, Dec 12, 2021 at 3:42 AM [email protected] <[email protected]> wrote:
>
>> The query is ok. I can use it with $day.outTemp.historical_temp.The space 
>> I think was a bad copy.  I refer to xaggs labels to the aggregations of 
>> xaggs like historical_avg.
>> What I can't do is get it to work for me on the daily chart. Before it 
>> produced the error that I put before. 
>> Now for some reason it just doesn't plot the graph but it doesn't give an 
>> error. I'm looking at where the difference can be from before but I can't 
>> find it. I tried with interval_aggregation= hour and day but nothing.
>>
>>
>> El viernes, 10 de diciembre de 2021 a las 20:50:13 UTC+1, 
>> [email protected] escribió:
>>
>>> I don't see why your approach would not work, although you have a syntax 
>>> error in your calls to strftime(). There cannot be a space between the '%' 
>>> and the time modifier. It should look something like this:
>>>
>>> select avg (outtemp) from archive where strftime ('%m %d %H', datetime, 
>>> 'unixepoch') = strftime ('%m %d %H', 'now')";
>>>
>>> I'm not sure what you mean by "xaggs labels", but if you mean the $day 
>>> tag, then, yes, it is indeed aggregating over one day. 
>>>
>>>
>>>
>>>
>>> On Fri, Dec 10, 2021 at 9:14 AM [email protected] <[email protected]> 
>>> wrote:
>>>
>>>> I had not seen the points on the weekly chart.
>>>> Then the only thing that doesn't work is the daily chart because when 
>>>> adding aggregate_interval = day or hour it gives an error and this is the 
>>>> one that interests me the most.
>>>> I wanted to make a graph with the historical temperature of the current 
>>>> moment and the current temperature. For this I had created an sql in xaggs:
>>>> 'historical_temp': "select avg (outtemp) from archive where strftime 
>>>> ('% m-% d% H', datetime, 'unixepoch') = strftime ('% m-% d% H', 'now')",
>>>> Can you think of a way to do it?
>>>> I understand that in the case of xaggs labels, aggregation should not 
>>>> be necessary since it only gives one data per day. Unless we group by 
>>>> weeks 
>>>> or months.
>>>> El viernes, 10 de diciembre de 2021 a las 14:28:55 UTC+1, 
>>>> [email protected] escribió:
>>>>
>>>>> Sorry, I was looking for user.xaggs.XAggsService at the end of 
>>>>> xtype_services.
>>>>>
>>>>> Yes, an aggregation type and an aggregation interval must always be 
>>>>> specified together. Otherwise, they wouldn't mean anything. 
>>>>>
>>>>> The aggregation interval must always be one day. I'll amend the 
>>>>> documentation to make that clear.
>>>>>
>>>>> If you look closely at your weekly chart, you'll see that it is indeed 
>>>>> showing dots for the historical data --- it's just that they are not 
>>>>> connected. See the section "Dots in the plots 
>>>>> <http://www.weewx.com/docs/usersguide.htm#dots_in_plots>" in the 
>>>>> User's Guide. 
>>>>>
>>>>> Yes, I am the author of XAggs.
>>>>>
>>>>> On Fri, Dec 10, 2021 at 4:40 AM [email protected] <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> I think at least one problem is that aggs tags have no aggregation. 
>>>>>> They simply give one data per day. The problem is that imagegenerator.py 
>>>>>> doesn't support aggregation_type without aggregation_interval.
>>>>>> I have tried with None and it is the same as if I don't put 
>>>>>> aggregation_interval.
>>>>>> Give a message:
>>>>>> Aggregate interval required for aggregate type historical_min
>>>>>> What I don't understand is its different behavior in the weekly 
>>>>>> charts, it doesn't paint anything and in the monthly charts it does.
>>>>>> Are you the author of xagss?
>>>>>>
>>>>>> El viernes, 10 de diciembre de 2021 a las 12:53:08 UTC+1, 
>>>>>> [email protected] escribió:
>>>>>>
>>>>>>> I have tested the chart you posted and it is very strange. The only 
>>>>>>> place it works is putting it in monthly charts like the one you sent.
>>>>>>> In the weekly chart, the chart that I sent before appears where 
>>>>>>> neither the min nor the historical max appear only outTemp
>>>>>>> And if I put it on the daily chart and putting aggregation_period = 
>>>>>>> hour it produces the same error that I showed before with the exception
>>>>>>>   **** weewx.UnknownType: outTemp
>>>>>>>
>>>>>>> El viernes, 10 de diciembre de 2021 a las 11:28:34 UTC+1, 
>>>>>>> [email protected] escribió:
>>>>>>>
>>>>>>>> But it does. It is the first of the line xtypes_services
>>>>>>>> xtype_services = user.xaggs.XAggsService , 
>>>>>>>> weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, 
>>>>>>>> weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta
>>>>>>>> Also I can use its historical_max, historical_min ... tags on the 
>>>>>>>> web page with $day.outTemp.historical_min
>>>>>>>> And skin.conf is stock unless I change to make this chart
>>>>>>>>
>>>>>>>>
>>>>>>>> El viernes, 10 de diciembre de 2021 a las 0:17:28 UTC+1, 
>>>>>>>> [email protected] escribió:
>>>>>>>>
>>>>>>>>> I would like to see skin.conf as well, but, no matter, your 
>>>>>>>>> xtype_services section does not include  'user.xaggs.XAggsService'. 
>>>>>>>>> See an earlier 
>>>>>>>>> email 
>>>>>>>>> <https://groups.google.com/g/weewx-user/c/NCuKcrFTPkQ/m/uGiWUrENAQAJ> 
>>>>>>>>> in this thread. It should read
>>>>>>>>>
>>>>>>>>>         xtype_services = user.xaggs.XAggsService, 
>>>>>>>>> weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, 
>>>>>>>>> weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta, 
>>>>>>>>> user.xaggs.XAggsService
>>>>>>>>>
>>>>>>>>> (all on one line).
>>>>>>>>>
>>>>>>>>> On Thu, Dec 9, 2021 at 2:49 PM [email protected] <[email protected]> 
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> El jueves, 9 de diciembre de 2021 a las 23:34:32 UTC+1, 
>>>>>>>>>> [email protected] escribió:
>>>>>>>>>>
>>>>>>>>>>> Hmmm. It certainly works for me.
>>>>>>>>>>>
>>>>>>>>>>> Can you post your copy of skin.conf, and the [Engine] section of 
>>>>>>>>>>> weewx.conf? I'll use them on my end and see if I can reproduce your 
>>>>>>>>>>> result.
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Dec 9, 2021 at 2:29 PM [email protected] <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> More than ten. I insist that if I use  
>>>>>>>>>>>> $day.outTemp.historical_min   it works and give me a number
>>>>>>>>>>>>
>>>>>>>>>>>> El jueves, 9 de diciembre de 2021 a las 23:27:56 UTC+1, 
>>>>>>>>>>>> [email protected] escribió:
>>>>>>>>>>>>
>>>>>>>>>>>>> Perhaps you don't have enough data? How many years of data in 
>>>>>>>>>>>>> your database?
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Dec 9, 2021 at 2:26 PM [email protected] <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Yes. I have user.xaggs.XAggService in xtype_services in 
>>>>>>>>>>>>>> weewx.conf
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> El jueves, 9 de diciembre de 2021 a las 23:19:34 UTC+1, 
>>>>>>>>>>>>>> [email protected] escribió:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Did you add 'user.xaggs.XAggsService' to the end of 
>>>>>>>>>>>>>>> xtype_services, as mentioned in an earlier email in this thread?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Thu, Dec 9, 2021 at 2:18 PM [email protected] <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The problem was I had put that section on the day charts. 
>>>>>>>>>>>>>>>> If i put in week or month there no errors but it don't plot 
>>>>>>>>>>>>>>>> anything.
>>>>>>>>>>>>>>>> [image: weekhistorical.png]
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> -- 
>>>>>>>>>>>>>>>> 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/96003050-8169-41b4-91cc-9dadf59aed18n%40googlegroups.com
>>>>>>>>>>>>>>>>  
>>>>>>>>>>>>>>>> <https://groups.google.com/d/msgid/weewx-user/96003050-8169-41b4-91cc-9dadf59aed18n%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/5e2ac174-f98b-47ea-a4a1-cce3ceae565cn%40googlegroups.com
>>>>>>>>>>>>>>  
>>>>>>>>>>>>>> <https://groups.google.com/d/msgid/weewx-user/5e2ac174-f98b-47ea-a4a1-cce3ceae565cn%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/a5b1bd4a-dc42-44e0-a7a7-256215106348n%40googlegroups.com
>>>>>>>>>>>>  
>>>>>>>>>>>> <https://groups.google.com/d/msgid/weewx-user/a5b1bd4a-dc42-44e0-a7a7-256215106348n%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/ba71942e-d16c-4c3a-a0cd-352d1fef25f5n%40googlegroups.com
>>>>>>>>>>  
>>>>>>>>>> <https://groups.google.com/d/msgid/weewx-user/ba71942e-d16c-4c3a-a0cd-352d1fef25f5n%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/08a26d42-1f89-4bf5-991c-225d7a39bc74n%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/weewx-user/08a26d42-1f89-4bf5-991c-225d7a39bc74n%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/023a50f2-aa2e-4c75-b298-53fb0b207558n%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/weewx-user/023a50f2-aa2e-4c75-b298-53fb0b207558n%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/b69d3c69-9144-4643-bda1-69b54df0c5cbn%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/weewx-user/b69d3c69-9144-4643-bda1-69b54df0c5cbn%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/12c4dd8c-1a63-4d03-a0f8-d22d11d8244en%40googlegroups.com.

Reply via email to