Not my night, instead of convert it is convertStd and you want .value not
.snow_val:
snow_total = convertStd(value_vt, event.record['usUnits']).value
Gary
On Saturday, 14 January 2017 22:39:49 UTC+10, Hartmut Schweidler wrote:
>
> Hallo
>>
>
> my plan [snow] and [snowRate] , "cm", "group_snow"
>
> 1. /home/weewx/snow value 1.5 (cm) snow --> it is the value of the
> file snow
> 2. snowhes.py reads the value of [snow] (1.5)
> 3. Write the value 1.5 to database (1.5 cm) as [snowRate] --> the result
> of the current snow
> 4. and find the value between current 1.5 (cm) [snowRate] in database an
> the value snow current /home/weewx/snow
> 5. the 'delta' [snowRate] and [snow] value
> 1.5 - 1.5 result 0.0
> 6. the result 0.0 write as [snow] in to database
>
> I hope to be able to represent
> 1. $current.snowl = 0.0 cm
> 2. Today 1.5 cm snow
> 3. last snow by change "lastrain.py" on 10.01.2017 09:00
> 1 day, 12 hours,
> 34 minutes ago
>
> and now the syslog result
>
> Jan 14 13:06:11 wetterba weewx[2651]: snowdepth: SNOW value of 1.5
> Jan 14 13:06:11 wetterba weewx[2651]: snowdepth: found usUnits of 16
> Jan 14 13:06:11 wetterba weewx[2651]: engine: Caught unrecoverable
> exception in engine:
> Jan 14 13:06:11 wetterba weewx[2651]: **** 16
> Jan 14 13:06:11 wetterba weewx[2651]: **** Traceback (most recent
> call last):
> Jan 14 13:06:11 wetterba weewx[2651]: **** File
> "/home/weewx/bin/weewx/engine.py", line 847, in main
> Jan 14 13:06:11 wetterba weewx[2651]: **** engine.run()
> Jan 14 13:06:11 wetterba weewx[2651]: **** File
> "/home/weewx/bin/weewx/engine.py", line 158, in run
> Jan 14 13:06:11 wetterba weewx[2651]: ****
> self.dispatchEvent(weewx.Event(weewx.STARTUP))
> Jan 14 13:06:11 wetterba weewx[2651]: **** File
> "/home/weewx/bin/weewx/engine.py", line 222, in dispatchEvent
> Jan 14 13:06:11 wetterba weewx[2651]: **** callback(event)
> Jan 14 13:06:11 wetterba weewx[2651]: **** File
> "/home/weewx/bin/weewx/engine.py", line 501, in startup
> Jan 14 13:06:11 wetterba weewx[2651]: ****
> self._catchup(self.engine.console.genStartupRecords)
> Jan 14 13:06:11 wetterba weewx[2651]: **** File
> "/home/weewx/bin/weewx/engine.py", line 606, in _catchup
> Jan 14 13:06:11 wetterba weewx[2651]: **** origin='hardware'))
> Jan 14 13:06:11 wetterba weewx[2651]: **** File
> "/home/weewx/bin/weewx/engine.py", line 222, in dispatchEvent
> Jan 14 13:06:11 wetterba weewx[2651]: **** callback(event)
> Jan 14 13:06:11 wetterba weewx[2651]: **** File
> "/home/weewx/bin/user/snowhes.py", line 57, in newArchiveRecord
> Jan 14 13:06:11 wetterba weewx[2651]: **** snow_total =
> convert(value_vt, event.record['usUnits']).snow_val
> Jan 14 13:06:11 wetterba weewx[2651]: **** File
> "/home/weewx/bin/weewx/units.py", line 1189, in convert
> Jan 14 13:06:11 wetterba weewx[2651]: **** conversion_func =
> conversionDict[val_t[1]][target_unit_type]
> Jan 14 13:06:11 wetterba weewx[2651]: **** KeyError: 16
> Jan 14 13:06:11 wetterba weewx[2651]: **** Exiting.
>
> my file snowhes.py
> """Put this file, snow.py, in the weewx 'user' directory, then modify
> weewx.conf
> with something like this:
>
> [SnowDepth]
> filename = /home/weewx/snow
>
> To use as a service:
>
> [Engine]
> [[Service]]
> data_services = user.snowhes.SnowDepth
> """
> import syslog
> import weewx
> from weewx.engine import StdService
> from weewx.units import ValueTuple, convert
>
> class SnowDepth(StdService):
> def __init__(self, engine, config_dict):
> super(SnowDepth, self).__init__(engine, config_dict)
> self._last_snow = 0.0
> d = config_dict.get('SnowDepth', {})
> self.filename = d.get('filename', '/home/weewx/snow')
> syslog.syslog(syslog.LOG_INFO, "snowdepth: using %s" %
> self.filename)
> self.bind(weewx.NEW_ARCHIVE_RECORD, self.newArchiveRecord)
>
> def newArchiveRecord(self, event):
> #try:
> with open(self.filename) as f:
> snow_val = f.read()
> syslog.syslog(syslog.LOG_DEBUG, "snowdepth: found value of %s"
> % snow_val)
> syslog.syslog(syslog.LOG_INFO, "snowdepth: SNOW value of %s" %
> snow_val)
>
>
> # Convert our value to a type ValueTuple. We know it is in cm
> and
> # let's use group_snow (could use group_length too)
> value_vt = ValueTuple(float(snow_val), 'cm', 'group_snow')
> # Now convert the cm value to the same units as used in our
> record
> # The unit system of the record is in the records 'usUnits'
> field
> snow_total = convert(value_vt,
> event.record['usUnits']).snow_val
>
> #event.record['some_field_name'] = value_conv
> syslog.syslog(syslog.LOG_INFO, "snowdepth: found SNOW-value of
> %s" % snow_total)
> delta = weewx.wxformulas.calculate_rain(snow_total,
> self._last_snow)
> self._last_snow = float(snow_total)
>
> event.record['snowRate'] = float(self._last_snow)
> event.record['snow'] = float(delta)
> #except Exception, e:
> syslog.syslog(syslog.LOG_ERR, "snowdepth: SYSLOG ERR cannot
> read value: %s" % e)
>
>
>
--
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].
For more options, visit https://groups.google.com/d/optout.