I noticed a weird typo: skin.info should be skin.conf ofcourse.

Op vrijdag 11 september 2020 om 12:50:34 UTC+2 schreef Arend:

> Hello,
>
> Just starting to become familiar with user defined types (XTypes), and 
> tried to create a new type called lowTemperature. This type compares the 
> temperatures outTemp and extraTemp1 and returns the lowest temperature of 
> the two. I modified an existing example, the original can be found here: 
> XType 
> example 
> <https://groups.google.com/g/weewx-user/c/hp6ZvSOPM5s/m/Uo2Ym6SCBQAJ>.
>
> My modified code in module lowest_temperature.py looks like this:
>
> 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 code in extension.py is like this:
>
> import user.lowest_temperature
> import weewx.xtypes
>
> weewx.xtypes.xtypes.append(user.lowest_temperature.LowestTemperature())
>
>
> Added this leaf to weewx.conf Generic Labels [Generic]:
>
> lowTemperature = Lowest Temperature
>
>
> Modified current.inc from Seasons skin:
>
>       <tr>
>         <td class="label">$obs.label.lowTemperature</td>
>         <td class="data">$current.lowTemperature</td>
>       </tr>
>
> The get_scalar function seems to work allright. Screenhot seasons skin:
>
> [image: Screenshot lowes temperature current conditions.png]
> But when I want to show the new xtype in the chart daytempdew by adding 
> the leaf [[[[lowTemperature]]]] to Seasons skin.info like this:
>
>         [[[daytempdew]]]
>             [[[[outTemp]]]]
>             [[[[dewpoint]]]]
>             [[[[lowTemperature]]]]
>
> I get these errors when I run weewx:
>
> 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
>
> My question:
> 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.
>
> I am using WeeWX version 4.1.1
>

-- 
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/f6437254-3c52-4285-8d23-65207eae72den%40googlegroups.com.

Reply via email to