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.

Reply via email to