In addition to the previous: the get_scalar function still seems to be 
working but the get_series function no longer works.

Op woensdag 6 januari 2021 om 18:33:12 UTC+1 schreef Arend:

> Everything worked fine until I did the upgrade.
>
> I guess something has changed in the way XTypes are handled?
>
> *This is the code I use in extensions.py:*
>
> #
> #    Copyright (c) 2009-2015 Tom Keffer <tke...@gmail.com>
> #
> #    See the file LICENSE.txt for your full rights.
> #
>
> """User extensions module
>
> This module is imported from the main executable, so anything put here 
> will be
> executed before anything else happens. This makes it a good place to put 
> user
> extensions.
> """
>
> import locale
> # This will use the locale specified by the environment variable 'LANG'
> # Other options are possible. See:
> # http://docs.python.org/2/library/locale.html#locale.setlocale
> locale.setlocale(locale.LC_ALL, '')
>
> import user.lowest_temperature
> import weewx.xtypes
>
> weewx.xtypes.xtypes.append(user.lowest_temperature.LowestTemperature())
>
>
> *This is the code in lowest_temperature.py:*
>
> import weewx.units
> import weewx.xtypes
> from weewx.units import ValueTuple
>
> class LowestTemperature(weewx.xtypes.XType):
>
>   def get_scalar(self, obs_type, record, dbmanager):
>     """Determine which sensor has lowest temperature."""
>     if obs_type != 'lowTemperature':
>       raise weewx.UnknownType
>     try:
>       record_us = weewx.units.to_US(record)
>       if record_us['outTemp'] == None or record_us['extraTemp1'] == None:
>       # if record_us['outTemp'] < 100 or record_us['extraTemp1'] < 100:
>         raise TypeError("Temperature(s) equal to None")
>       if record_us['outTemp'] <= record_us['extraTemp1']:
>         lowTemperature = record_us['outTemp']
>       else:
>         lowTemperature = record_us['extraTemp1']
>       return ValueTuple(lowTemperature, "degree_F", "group_temperature")
>     except KeyError:
>       # Don't have everything we need. Raise an exception.
>       raise weewx.CannotCalculate(obs_type)
>   
>   def get_series(self, obs_type, timespan, db_manager, 
> aggregate_type=None, aggregate_interval=None):
>     if obs_type != 'lowTemperature':
>       raise weewx.UnknownType
>     start_vec = list()
>     stop_vec = list()
>     data_vec = list()
>     if aggregate_type:
>       raise weewx.UnknownAggregation(aggregate_type)
>     for record in db_manager.genSql("SELECT `dateTime`, `interval`, 
> `usUnits`, `outTemp`, `extraTemp1` FROM `archive` WHERE `dateTime` > 
> %(start)s AND `dateTime` <= %(stop)s;" % {'start': timespan[0], 'stop': 
> timespan[1]}):
>       if (record[2] != 1):
>         raise weewx.CannotCalculate("units are not US")
>       if record[3] == None or record[4] == None:
>       # if record[3] < 100 or record[4] < 100:
>         raise TypeError("Temperature(s) equal to None") 
>       start_vec.append(record[0] - record[1] * 60)
>       stop_vec.append(record[0])
>       if record[3] <= record[4]:
>         data_vec.append(record[3])
>       else:
>         data_vec.append(record[4])
>     return (ValueTuple(start_vec, 'unix_epoch', 'group_time'), 
> ValueTuple(stop_vec, 'unix_epoch', 'group_time'), ValueTuple(data_vec, 
> "degree_F", "group_temperature"))
>
> Do I need to rewrite all code?
>
>

-- 
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/5ac947ed-240d-428b-8a69-c0186359d97cn%40googlegroups.com.

Reply via email to