All,
I'm setting up weewx on current versions of everything, and once I
added the forecast module, I started
having problems. I haven't used the forecast module in the past, so not
too sure what to expect. Still using
the simulator while working things out.
The first was that weewx would die within the first loop because of a float
vs: NoneType
compare. This is where the error occurs (self.last_ts was None):
1214 elif time.time() - self.interval > self.last_ts:
Since there wasn't a "last_ts" in the database, there was nothing to
return. This is my work-around (1059, 1060):
1057 # find out when the last forecast happened
1058 self.last_ts = Forecast.get_last_forecast_ts(dbm,
self.method_id)
1059 if not self.last_ts:
1060 self.last_ts = 0
That enabled the main engine to keep running, but when the forecast code
actually ran, another error
was caught (one each for the 4 types enabled):
LOOP: 2020-06-02 16:20:16 MDT (1591136416) UV: 2.489577236140643,
altimeter: 37.90032838090037, appTemp: 28.35108284522792, barometer:
31.099987728026797, beaufort: 0, cloudbase: 6858.786987764572,
consBatteryVoltage: 12.0, dateTime: 1591136416, dewpoint:
27.108597225364377, heatindex: 32.581259971528496, heatingVoltage: 12.0,
humidex: 32.581259971528496, inDewpoint: 31.079342683476767, inHumidity:
29.99950912408379, inTemp: 63.00024543795811, inTempBatteryStatus: 0,
maxSolarRad: None, outHumidity: 79.99963184080383, outTemp:
32.581259971528496, outTempBatteryStatus: 0, pressure: 31.099987728026797,
radiation: 177.82694543861737, rain: 0, rainBatteryStatus: 0, rainRate:
0.0, referenceVoltage: 12.110006725571685, rxCheckPercent:
61.04056080465194, supplyVoltage: 12.0, txBatteryStatus: 0, usUnits: 1,
windBatteryStatus: 1, windDir: 359.9977910448229, windGust:
7.363183923558836e-05, windGustDir: 359.9977910448229, windSpeed:
6.135986602995303e-05, windchill: 32.581259971528496
Exception in thread OWMThread:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/home/weewx/bin/user/forecast.py", line 995, in run
self._target(*self._args)
TypeError: 'NoneType' object is not callable
Now, update_forecast expects a passed argument, but none is passed; should
be event maybe?
./bin/user/forecast.py:1064: self.bind(weewx.NEW_ARCHIVE_RECORD,
self.update_forecast)
./bin/user/forecast.py:1209: def update_forecast(self, event):
And this is one line past the original error:
1214 elif time.time() - self.interval > self.last_ts:
1215 t = ForecastThread(self.do_forecast, event)
These should be the relevant parts of the weewx.conf:
[StdReport]
[[forecast]]
HTML_ROOT = public_html.sim/forecast
skin = forecast
[DataBindings]
[[forecast_binding]]
database = forecast_sqlite
[Databases]
[[forecast_sqlite]]
database_name = forecast.sdb
database_type = SQLite
[Engine]
[[Services]]
# This section specifies the services that should be run. They are
# grouped by type, and the order of services within each group
# determines the order in which the services will be run.
prep_services = weewx.engine.StdTimeSynch
data_services = ,
process_services = weewx.engine.StdConvert,
weewx.engine.StdCalibrate, weewx.engine.StdQC,
weewx.wxservices.StdWXCalculate
archive_services = weewx.engine.StdArchive,
user.forecast.ZambrettiForecast, user.forecast.NWSForecast,
user.forecast.OWMForecast, user.forecast.DSForecast
report_services = weewx.engine.StdPrint, weewx.engine.StdReport
restful_services = ,
# restful_services = weewx.restx.StdStationRegistry,
weewx.restx.StdWunderground, weewx.restx.StdPWSweather,
weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
# Options for extension 'forecast'
[Forecast]
data_binding = forecast_binding
[[Zambretti]]
hemisphere = NORTH
[[NWS]]
foid = "PIH"
lid = "IDZ053"
[[OWM]]
api_key = xxxxxxxxxxxxxxx583a6
[[DS]]
api_key = xxxxxxxxxxxxxxx108eb
The DB exists, but doesn't have much in it:
router1_/home/weewx> d archive.sim/
total 1056
-rw-r--r-- 1 weewx users 8192 Jun 2 16:17 forecast.sdb
-rw-r--r-- 1 weewx users 1073152 Jun 2 16:20 weewx.sdb
And the relevant log (start-up and forecast messages (debug=2 in config).
Actually this is start-up until the first set of exceptions
were reported (running without -d)"
Jun 2 16:05:19 router1 weewx[31567] CRITICAL __main__: Keyboard interrupt.
Jun 2 16:17:58 router1 weewx[32274] INFO __main__: Initializing weewx
version 4.1.1
Jun 2 16:17:58 router1 weewx[32274] INFO __main__: Using Python 3.5.3
(default, Sep 27 2018, 17:25:39) #012[GCC 6.3.0 20170516]
Jun 2 16:17:58 router1 weewx[32274] INFO __main__: Platform
Linux-4.9.0-8-amd64-x86_64-with-debian-9
Jun 2 16:17:58 router1 weewx[32274] INFO __main__: Locale is 'C'
Jun 2 16:17:58 router1 weewx[32274] INFO __main__: Using configuration
file weewx.conf.sim
Jun 2 16:17:58 router1 weewx[32274] INFO __main__: Debug is 2
Jun 2 16:17:58 router1 weewx[32274] DEBUG __main__: Initializing engine
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.engine: Loading station
type Simulator (weewx.drivers.simulator)
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
weewx.engine.StdTimeSynch
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service weewx.engine.StdTimeSynch
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
weewx.engine.StdConvert
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.engine: StdConvert target
unit is 0x1
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service weewx.engine.StdConvert
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
weewx.engine.StdCalibrate
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service weewx.engine.StdCalibrate
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
weewx.engine.StdQC
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service weewx.engine.StdQC
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
weewx.wxservices.StdWXCalculate
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.manager: Daily summary
version is 2.0
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.wxservices: The following
values will be calculated: pressure=prefer_hardware,
altimeter=prefer_hardware, appTemp=prefer_hardware,
barometer=prefer_hardware, beaufort=prefer_hardware,
cloudbase=prefer_hardware, dewpoint=prefer_hardware, ET=prefer_hardware,
heatindex=prefer_hardware, humidex=prefer_hardware,
inDewpoint=prefer_hardware, maxSolarRad=prefer_hardware,
rainRate=prefer_hardware, windchill=prefer_hardware, windrun=prefer_hardware
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.wxservices: The following
algorithms will be used for calculations: altimeter=aaASOS, maxSolarRad=RS
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service weewx.wxservices.StdWXCalculate
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
weewx.engine.StdArchive
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.engine: Archive will use
data binding wx_binding
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.engine: Record generation
will be attempted in 'hardware'
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.engine: Using archive
interval of 300 seconds (specified in weewx configuration)
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Use LOOP data in
hi/low calculations: 1
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service weewx.engine.StdArchive
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
user.forecast.ZambrettiForecast
Jun 2 16:17:58 router1 /weewxd: forecast: MainThread: Zambretti: forecast
version 3.4.0b1
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.manager: Created and
initialized table 'archive' in database 'forecast.sdb'
Jun 2 16:17:58 router1 /weewxd: forecast: MainThread: Zambretti:
interval=600 max_age=604800 winddir_period=1800 pressure_period=10800
hemisphere=NORTH lower_pressure=950.0 upper_pressure=1050.0
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service user.forecast.ZambrettiForecast
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
user.forecast.NWSForecast
Jun 2 16:17:58 router1 /weewxd: forecast: MainThread: NWS: forecast
version 3.4.0b1
Jun 2 16:17:58 router1 /weewxd: forecast: MainThread: NWS: interval=10800
max_age=604800 lid=IDZ053 foid=PIH
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service user.forecast.NWSForecast
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
user.forecast.OWMForecast
Jun 2 16:17:58 router1 /weewxd: forecast: MainThread: OWM: forecast
version 3.4.0b1
Jun 2 16:17:58 router1 /weewxd: forecast: MainThread: OWM: interval=10800
max_age=604800 api_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXX83a6
location=4x.12,-1x1.35 fc=5day3hour
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service user.forecast.OWMForecast
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
user.forecast.DSForecast
Jun 2 16:17:58 router1 /weewxd: forecast: MainThread: DS: forecast version
3.4.0b1
Jun 2 16:17:58 router1 /weewxd: forecast: MainThread: DS: interval=10800
max_age=604800 api_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXX08eb
location=4x.12,-1x1.35 fc=daily
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service user.forecast.DSForecast
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
weewx.engine.StdPrint
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service weewx.engine.StdPrint
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Loading service
weewx.engine.StdReport
Jun 2 16:17:58 router1 weewx[32274] DEBUG weewx.engine: Finished loading
service weewx.engine.StdReport
Jun 2 16:17:58 router1 weewx[32274] INFO __main__: Starting up weewx
version 4.1.1
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.engine: Clock error is
-0.12 seconds (positive is fast)
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.engine: Using binding
'wx_binding' to database 'weewx.sdb'
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.manager: Starting backfill
of daily summaries
Jun 2 16:17:58 router1 weewx[32274] INFO weewx.engine: Starting main
packet loop.
Jun 2 16:20:15 router1 weewx[32274] INFO weewx.manager: Added record
2020-06-02 16:20:00 MDT (1591136400) to database 'weewx.sdb'
Jun 2 16:20:15 router1 weewx[32274] INFO weewx.manager: Added record
2020-06-02 16:20:00 MDT (1591136400) to daily summary in 'weewx.sdb'
Jun 2 16:20:15 router1 /weewxd: forecast: MainThread: Zambretti: starting
thread
Jun 2 16:20:15 router1 /weewxd: forecast: MainThread: NWS: starting thread
Jun 2 16:20:15 router1 /weewxd: forecast: MainThread: OWM: starting thread
Jun 2 16:20:15 router1 /weewxd: forecast: MainThread: DS: starting thread
Jun 2 16:20:15 router1 weewx[32274] DEBUG weewx.reportengine: Running
reports for latest time in the database.
Jun 2 16:20:15 router1 weewx[32274] DEBUG weewx.reportengine: Running
report 'SeasonsReport'
Jun 2 16:20:15 router1 weewx[32274] DEBUG weewx.reportengine: Found
configuration file /home/weewx/skins.vp2/Seasons/skin.conf for report
'SeasonsReport'
Jun 2 16:20:15 router1 weewx[32274] DEBUG weewx.cheetahgenerator: Using
search list ['weewx.cheetahgenerator.Almanac',
'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current',
'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo',
'weewx.cheetahgenerator.Extras', 'user.stats.MyXSearch']
Jun 2 16:20:15 router1 weewx[32274] DEBUG weewx.manager: Daily summary
version is 2.0
Jun 2 16:20:16 router1 weewx[32274] INFO weewx.cheetahgenerator: Generated
9 files for report SeasonsReport in 0.97 seconds
Jun 2 16:20:16 router1 weewx[32274] DEBUG weewx.manager: Daily summary
version is 2.0
Jun 2 16:20:17 router1 weewx[32274] INFO weewx.imagegenerator: Generated
15 images for report SeasonsReport in 0.28 seconds
Jun 2 16:20:17 router1 weewx[32274] INFO weewx.reportengine: Copied 5
files to /home/weewx/public_html.sim/Seasons
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.reportengine: Running
report 'SmartphoneReport'
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.reportengine: Found
configuration file /home/weewx/skins.vp2/Smartphone/skin.conf for report
'SmartphoneReport'
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.cheetahgenerator: Using
search list ['weewx.cheetahgenerator.Almanac',
'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current',
'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo',
'weewx.cheetahgenerator.Extras']
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.manager: Daily summary
version is 2.0
Jun 2 16:20:17 router1 weewx[32274] INFO weewx.cheetahgenerator: Generated
6 files for report SmartphoneReport in 0.08 seconds
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.manager: Daily summary
version is 2.0
Jun 2 16:20:17 router1 weewx[32274] DEBUG PIL.PngImagePlugin: STREAM
b'IHDR' 16 13
Jun 2 16:20:17 router1 weewx[32274] DEBUG PIL.PngImagePlugin: STREAM
b'IDAT' 41 1216
Jun 2 16:20:17 router1 weewx[32274] DEBUG PIL.PngImagePlugin: STREAM
b'IHDR' 16 13
Jun 2 16:20:17 router1 weewx[32274] DEBUG PIL.PngImagePlugin: STREAM
b'IDAT' 41 1216
Jun 2 16:20:17 router1 weewx[32274] INFO weewx.imagegenerator: Generated 6
images for report SmartphoneReport in 0.08 seconds
Jun 2 16:20:17 router1 weewx[32274] INFO weewx.reportengine: Copied 6
files to /home/weewx/public_html.sim/smartphone
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.reportengine: Running
report 'forecast'
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.reportengine: Found
configuration file /home/weewx/skins.vp2/forecast/skin.conf for report
'forecast'
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.cheetahgenerator: Using
search list ['weewx.cheetahgenerator.Almanac',
'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current',
'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo',
'weewx.cheetahgenerator.Extras', 'user.forecast.ForecastVariables']
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.manager: Daily summary
version is 2.0
Jun 2 16:20:17 router1 weewx[32274] INFO weewx.cheetahgenerator: Generated
12 files for report forecast in 0.54 seconds
Jun 2 16:20:17 router1 weewx[32274] INFO weewx.reportengine: Copied 87
files to /home/weewx/public_html.sim/forecast
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.reportengine: Running
report 'RSYNC'
Jun 2 16:20:17 router1 weewx[32274] DEBUG weewx.reportengine: Found
configuration file /home/weewx/skins.vp2/Rsync/skin.conf for report 'RSYNC'
Jun 2 16:20:17 router1 weewx[32274] DEBUG weeutil.rsyncupload:
rsyncupload: cmd: [['rsync', '--archive', '--stats', '-e ssh',
'/home/weewx/public_html.sim/',
'[email protected]:/var/www/html/simweather']]
Jun 2 16:20:18 router1 weewx[32274] INFO weeutil.rsyncupload: rsync'd 145
files (404,365 bytes) in 0.18 seconds
Jun 2 16:20:46 router1 weewx[32274] INFO weewx.engine: Main loop exiting.
Shutting engine down.
Jun 2 16:20:46 router1 weewx[32274] INFO weewx.engine: Shutting down
StdReport thread
Jun 2 16:20:46 router1 weewx[32274] DEBUG weewx.engine: StdReport thread
has been terminated
Jun 2 16:20:46 router1 weewx[32274] CRITICAL __main__: Keyboard interrupt.
--
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/1fb7a394-ce70-4d12-9845-bbc59ebeb17a%40googlegroups.com.