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'] <= 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")
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"))
The get_scalar function seems to work allright. Screenhot seasons skin:
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.imagegenerator.ImageGenerator'
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', usUnits, outTemp, extraTemp1 FROM archive WHERE dateTime > 1599732000 AND date' at line 1")
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** Traceback (most recent call last):
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weedb/mysql.py", line 52, in guarded_fn
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** return fn(*args, **kwargs)
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weedb/mysql.py", line 262, in execute
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** self.cursor.execute(mysql_string, tuple(sql_tuple))
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 209, in execute
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** res = self._query(query)
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 315, in _query
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** db.query(q)
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 226, in query
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** _mysql.connection.query(self, query)
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** MySQLdb._exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', usUnits, outTemp, extraTemp1 FROM archive WHERE dateTime > 1599732000 AND date' at line 1")
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: ****
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** During handling of the above exception, another exception occurred:
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: ****
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** Traceback (most recent call last):
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weewx/reportengine.py", line 197, in run
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** obj.start()
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weewx/reportengine.py", line 280, in start
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** self.run()
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weewx/imagegenerator.py", line 41, in run
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** self.genImages(self.gen_ts)
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weewx/imagegenerator.py", line 176, in genImages
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** start_vec_t, stop_vec_t ,data_vec_t = weewx.xtypes.get_series(var_type,
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weewx/xtypes.py", line 85, in get_series
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** return xtype.get_series(obs_type, timespan, db_manager, aggregate_type,
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/user/lowest_temperature.py", line 31, in get_series
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** 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]}):
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weewx/manager.py", line 437, in genSql
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** for _row in _cursor.execute(sql, sqlargs):
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** File "/home/weewx/bin/weedb/mysql.py", line 61, in guarded_fn
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** raise klass(e)
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** weedb.DatabaseError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', usUnits, outTemp, extraTemp1 FROM archive WHERE dateTime > 1599732000 AND date' at line 1")
Sep 11 12:35:24 NB10 weewx[86760] ERROR weewx.reportengine: **** Generator terminated
Sep 11 12:35:24 NB10 weewx[86760] INFO weewx.reportengine: Copied 0 files to /home/weewx/public_html
What is the error in the SQL-string? And is it just an error in the SQL-string, maybe I am also missing/overlooking something else.