See also https://groups.google.com/g/weewx-user/c/7N-1L10kV8Y/m/qFZbPMA5BgAJ
Karen K schrieb am Samstag, 19. Dezember 2020 um 11:50:17 UTC+1:
> I have tried to program for myself for the last few days. And I included
> the function into the uploader that needs the value. So, when the new year
> starts, we will see, wether it works.
>
> At the start of weewx the value ist calculated up to the actual day. It is
> saved within the thread class of the uploader. After that, once a day the
> value is updated according to the temperature average of the last day.
>
> def calc_gts(self,time_ts,dbmanager):
> """calculate Grünlandtemperatursumme GTS"""
>
> # needed timestamps
> _sod_ts = weeutil.weeutil.startOfDay(time_ts) # start of day
> _soy_ts = weeutil.weeutil.archiveYearSpan(time_ts)[0] # start of year
> _feb_ts = _soy_ts + 2678400 # Feb 1
> _mar_ts = _feb_ts + 2419200 # Mar 1 (or Feb 29 in leap year)
> _end_ts = _mar_ts + 7948800 # Jun 1 (or May 31 in leap year)
>
> # initialize if program start or new year
> if self.last_gts_date is None or self.last_gts_date < _soy_ts:
> self.last_gts_date = _soy_ts
> self.gts_value = None
> self.gts_date = None
> loginf("GTS initialized %s" %
> time.strftime("%Y-%m-%d",
> time.localtime(_soy_ts)))
>
> # calculate
> # This runs one loop for every day since New Year at program
> # start and after that once a day one loop, only. After May 31th
> # no loop is executed.
> _loop_ct=0
> while self.last_gts_date < _sod_ts and self.last_gts_date < _end_ts:
> # the day the average is calculated for
> _today = TimeSpan(self.last_gts_date,self.last_gts_date+86400)
> # calculate the average of the outside temperature
> _result =
> weewx.xtypes.get_aggregate('outTemp',_today,'avg',dbmanager)
> # convert to centrigrade
> if _result is not None:
> _result = weewx.units.convert(_result,'degree_C')
> # check condition and add to sum
> if _result is not None and _result[0] is not None:
> if self.gts_value is None:
> self.gts_value=0
> _dayavg = _result[0]
> if _dayavg > 0:
> if self.last_gts_date < _feb_ts:
> _dayavg *= 0.5
> elif self.last_gts_date < _mar_ts:
> _dayavg *= 0.75
> self.gts_value += _dayavg
> if self.gts_value >= 200 and self.gts_date is None:
> self.gts_date = self.last_gts_date
>
> # next day
> self.last_gts_date += 86400
> _loop_ct+=1
>
> loginf("GTS %s, %s loops" % (self.gts_value,_loop_ct))
>
>
>>>
--
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/8b764974-5a2e-4e3c-a4ca-435080d3833dn%40googlegroups.com.