Problem with Cheetah search_list_extensions?

70 views
Skip to first unread message

Michael Bruski

unread,
Dec 17, 2020, 10:39:17 PM12/17/20
to weewx-user
Hi all,

I've been trying for a few weeks now (on-off) to get Daniel Macias's METAR extension working on my WeeWX setup but not having any success.  I'm running WeeWX v4.2.0 on an RPi0W with RaspIOS Buster.  I did a full system install so WeeWx configs and skins are in /etc/weewx.

Dec 17 20:31:24 server systemd[1]: Starting LSB: weewx weather system...
Dec 17 20:31:26 server weewx[15115] INFO __main__: Initializing weewx version 4.2.0
Dec 17 20:31:26 server weewx[15115] INFO __main__: Using Python 3.7.3 (default, Jul 25 2020, 13:03:44) #012[GCC 8.3.0]
Dec 17 20:31:26 server weewx[15115] INFO __main__: Platform Linux-5.4.79+-armv6l-with-debian-10.7
Dec 17 20:31:26 server weewx[15115] INFO __main__: Locale is 'en_US.UTF-8'
Dec 17 20:31:26 server weewx[15115] INFO __main__: PID file is /var/run/weewx.pid
Dec 17 20:31:27 server weewx[15104]: Starting weewx weather system: weewx.

Following the directions on his web page (https://domoticproject.com/including-metar-reports-weewx/) I have done the following:

Downloaded and installed the metargenerator.py file to /usr/share/weewx/user.  I added a line to log (in syslog) when a metar is successfully retrieved from the web site.  Failures are already being logged.


Next I modified /etc/weewx/skins/Seasons/skin.conf in two places.  The first modification extends the CheetahGenerator search_list

# The CheetahGenerator creates files from templates.  This section
# specifies which files will be generated from which template.

[CheetahGenerator]

    # Possible encodings are 'html_entities', 'utf8', or 'strict_ascii'
    encoding = html_entitiese
    search_list_extensions = user.metargenerator.MyMetarSearch

At the end the file I added this (I also copied this to the end of the weewx.conf file).

# The list of airports to include in the METAR report:
[MetarReport]
refresh_interval = 5
    [[kdmw]]
    [[kosh]]
    


Finally, I added the following lines to /etc/weewx/skins/Seasons/index.html.tmpl to display results in the report:

'''
      <div id="metar_group" class="widget">
        <div class="widget_title">
          METAR (Meteorological Aerodrome Report)
        </div>
        <div class="widget_contents">
        <table>
          <tbody>
            <tr>
               <td class="label">KDMW - Carroll County Regional Airport</td>
               <td class="data">$kdmw_metar</td>
             </tr>
             <tr>
               <td class="label">KOSH - Wittman Regional Airport</td>
               <td class="data">$kosh_metar</td>
            </tr>
          </tbody>
        </table>
        </div>
    </div>
'''


After I restart and wait for the first report to be generated I get this in my syslog.  There is no indication that the search_list_extension user.metargenerator.MyMetarSearch was ever run and no METAR data is found in the report, just the tags for the individual airports ($kdmw_metar and $kosh_metar).

Dec 17 20:17:51 server weewx[14851] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
Dec 17 20:17:51 server weewx[14851] INFO weewx.manager: Starting backfill of daily summaries
Dec 17 20:17:51 server weewx[14851] INFO weewx.engine: Starting main packet loop.
Dec 17 20:17:51 server weewx[14851] INFO weewx.wxxtypes: Type beaufort has been deprecated. Use unit beaufort instead.
Dec 17 20:20:22 server weewx[14851] INFO weewx.manager: Added record 2020-12-17 20:20:00 EST (1608254400) to database 'weewx.sdb'
Dec 17 20:20:23 server weewx[14851] INFO weewx.manager: Added record 2020-12-17 20:20:00 EST (1608254400) to daily summary in 'weewx.sdb'
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: MainThread: Zambretti: starting thread
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: generating forecast for 2020-12-17 09:00:00 EST (1608213600)
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: MainThread: NWS: not yet time to do the forecast
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: using winddir from 2020-12-17 08:30:00 EST (1608211800) to 2020-12-17 09:00:00 EST (1608213600)
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: using pressure from 2020-12-17 06:00:00 EST (1608202800) to 2020-12-17 09:00:00 EST (1608213600)
Dec 17 20:20:23 server weewx[14851] DEBUG weewx.reportengine: Running reports for latest time in the database.
Dec 17 20:20:23 server weewx[14851] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Dec 17 20:20:23 server weewx[14851] DEBUG weewx.manager: Daily summary version is 2
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: units=1 winddir=None pressure=30.07961402744 first_p=30.04029032258066 last_p=30.111866666666675
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: pressure=1018.6124876429427 month=11 winddir=None trend=0.807950946880851 north=True
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: code is B
Dec 17 20:20:23 server weewx[14851] INFO user.forecast: ZambrettiThread: Zambretti: generated 1 forecast record
Dec 17 20:20:23 server weewx[14851] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: saving 1 forecast records
Dec 17 20:20:23 server weewx[14851] INFO weewx.manager: Added record 2020-12-17 20:20:00 EST (1608254400) to database 'forecast.sdb'
Dec 17 20:20:23 server weewx[14851] INFO user.forecast: ZambrettiThread: Zambretti: saved 1 forecast records
Dec 17 20:20:23 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: deleting forecasts prior to 1607649623
Dec 17 20:20:24 server weewx[14851] INFO user.forecast: ZambrettiThread: Zambretti: deleted forecasts prior to 1607649623
Dec 17 20:20:24 server weewx[14851] DEBUG user.forecast: ZambrettiThread: Zambretti: terminating thread
Dec 17 20:20:24 server weewx[14851] INFO weewx.restx: StationRegistry: Published record 2020-12-17 20:20:00 EST (1608254400)
Dec 17 20:20:24 server weewx[14851] 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']
Dec 17 20:20:24 server weewx[14851] DEBUG weewx.manager: Daily summary version is 2
Dec 17 20:20:57 server weewx[14851] INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 33.35 seconds
Dec 17 20:20:57 server weewx[14851] DEBUG weewx.manager: Daily summary version is 2
Dec 17 20:21:03 server weewx[14851] INFO weewx.imagegenerator: Generated 15 images for report SeasonsReport in 5.86 seconds
Dec 17 20:21:04 server weewx[14851] INFO weewx.reportengine: Copied 88 files to /var/www/html/weewx
Dec 17 20:21:04 server weewx[14851] DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.
Dec 17 20:21:04 server weewx[14851] DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.
Dec 17 20:21:04 server weewx[14851] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Dec 17 20:21:04 server weewx[14851] DEBUG weewx.reportengine: Running report 'Inigo'
Dec 17 20:21:04 server weewx[14851] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Inigo/skin.conf for report 'Inigo'
Dec 17 20:21:04 server weewx[14851] 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.alltime.ExtendedStatistics', 'user.inigo-since.Since']
Dec 17 20:21:04 server weewx[14851] DEBUG weewx.manager: Daily summary version is 2
Dec 17 20:21:08 server weewx[14851] INFO weewx.cheetahgenerator: Generated 1 files for report Inigo in 4.67 seconds
Dec 17 20:21:08 server weewx[14851] DEBUG weewx.reportengine: Report 'forecast' not enabled. Skipping.
Dec 17 20:21:08 server weewx[14851] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
Dec 17 20:21:08 server weewx[14851] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.




Now I know from his instructions that the search_list_extensions need to be put into the skin.conf file in order for the metar tags to be found but no matter what I do, I don't see any indication the extension ever runs.  So, I tried extending the search list in the CheetahGenerator section in weewx.conf (just on a whim).  After restarting weewx, this is what I see in the syslog.

Dec 17 20:35:21 server weewx[15119] INFO weewx.manager: Added record 2020-12-17 20:35:00 EST (1608255300) to database 'weewx.sdb'
Dec 17 20:35:21 server weewx[15119] INFO weewx.manager: Added record 2020-12-17 20:35:00 EST (1608255300) to daily summary in 'weewx.sdb'
Dec 17 20:35:22 server weewx[15119] DEBUG user.forecast: MainThread: Zambretti: not yet time to do the forecast
Dec 17 20:35:22 server weewx[15119] DEBUG user.forecast: MainThread: NWS: not yet time to do the forecast
Dec 17 20:35:22 server weewx[15119] DEBUG weewx.reportengine: Running reports for latest time in the database.
Dec 17 20:35:22 server weewx[15119] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Dec 17 20:35:22 server weewx[15119] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Dec 17 20:35:22 server weewx[15119] 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', 'user.metargenerator.MyMetarSearch']
Dec 17 20:35:22 server weewx[15119] DEBUG weewx.manager: Daily summary version is 2
Dec 17 20:35:23 server weewx[15119] INFO weewx.restx: StationRegistry: Published record 2020-12-17 20:35:00 EST (1608255300)
Dec 17 20:35:23 server /weewxd: kdmw: error: Cannot get Metar Report. Recovering the last file saved.
Dec 17 20:35:23 server /weewxd: metargenerator.py: error: There could not be found an older Metar Report. Skipping!
Dec 17 20:35:23 server /weewxd: kosh: error: Cannot get Metar Report. Recovering the last file saved.
Dec 17 20:35:23 server /weewxd: metargenerator.py: error: There could not be found an older Metar Report. Skipping!
Dec 17 20:35:23 server /weewxd: metargenerator.py: Generated 0 metar tables in 0.02 seconds

Dec 17 20:35:56 server weewx[15119] INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 33.78 seconds
Dec 17 20:35:56 server weewx[15119] DEBUG weewx.manager: Daily summary version is 2
Dec 17 20:36:02 server weewx[15119] INFO weewx.imagegenerator: Generated 15 images for report SeasonsReport in 5.38 seconds
Dec 17 20:36:02 server weewx[15119] INFO weewx.reportengine: Copied 88 files to /var/www/html/weewx
Dec 17 20:36:02 server weewx[15119] DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.
Dec 17 20:36:02 server weewx[15119] DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.
Dec 17 20:36:02 server weewx[15119] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Dec 17 20:36:02 server weewx[15119] DEBUG weewx.reportengine: Running report 'Inigo'
Dec 17 20:36:02 server weewx[15119] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Inigo/skin.conf for report 'Inigo'
Dec 17 20:36:03 server weewx[15119] 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.alltime.ExtendedStatistics', 'user.inigo-since.Since']
Dec 17 20:36:03 server weewx[15119] DEBUG weewx.manager: Daily summary version is 2
Dec 17 20:36:07 server weewx[15119] INFO weewx.cheetahgenerator: Generated 1 files for report Inigo in 4.60 seconds
Dec 17 20:36:07 server weewx[15119] DEBUG weewx.reportengine: Report 'forecast' not enabled. Skipping.
Dec 17 20:36:07 server weewx[15119] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
Dec 17 20:36:07 server weewx[15119] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.

Interesting enough, I now see that the extension is being called even if all it does is report it can't get the METAR and can't find any backup files.  Since it has never created the METAR backup in the first place, I accept these results.

I wasn't sure if this was a Python version issue until I confirmed the extension runs when added to the search list in weewx.conf.  I guess this could still be a problem but I'm not python savvy enough to see how.

I'm at a loss to understand why the metar extension does not run when it is configured in the Seasons/skin.conf file?   Can someone enlighten me please?

Mike - AJ9x

gjr80

unread,
Dec 17, 2020, 11:26:43 PM12/17/20
to weewx-user
Hi,

Can you post a sanitised version of weewx.conf? You can use the wee_debug utility with the —info command line option to produce a report that includes a sanitised version of weewx.conf. Just post the report here but do check the report first for any sensitive info, wee_debug should obfuscate passwords, user names etc but it’s not perfect.

Gary

gjr80

unread,
Dec 17, 2020, 11:43:56 PM12/17/20
to weewx-user
Also, can you highlight exactly what you added to weewx.conf when you “tried extending the search list in the CheetahGenerator section in weewx.conf”

Gary

Michael Bruski

unread,
Dec 18, 2020, 7:42:01 AM12/18/20
to weewx-user
Here is the .conf file.   The search_list_extensions directive that I tried is commented out in the section for [StdReport] [[SeasonsReport]] [[[CheetahGenerator]]].

[FileParse]
    poll_interval = 10
    path = /tmp/wxdata
    driver = user.fileparse
# WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2020 Tom Keffer <tke...@gmail.com>
# See the file LICENSE.txt for your rights.

##############################################################################

# This section is for general configuration information.

# Set to 1 for extra debug info, otherwise comment it out or set to zero
debug = 1

# Root directory of the weewx data file hierarchy for this station
WEEWX_ROOT = /

# Whether to log successful operations
log_success = True

# Whether to log unsuccessful operations
log_failure = True

# How long to wait before timing out a socket (FTP, HTTP) connection
socket_timeout = 20

# Do not modify this. It is used when installing and updating weewx.
version = 4.2.0

##############################################################################

#   This section is for information about the station.

[Station]
    
    # Description of the station location
    location = Fair Lea Hills Neighborhood
    
    # Latitude in decimal degrees. Negative for southern hemisphere
    latitude = 39.498
    # Longitude in decimal degrees. Negative for western hemisphere.
    longitude = -76.97
    
    # Altitude of the station, with unit it is in. This is downloaded from
    # from the station if the hardware supports it.
    altitude = 247.65, meter
    
    # Set to type of station hardware. There must be a corresponding stanza
    # in this file with a 'driver' parameter indicating the driver to be used.
    station_type = FileParse
    
    # If you have a website, you may specify an URL
    station_url = XXX obfuscated by wee_debug XXX
    
    # The start of the rain year (1=January; 10=October, etc.). This is
    # downloaded from the station if the hardware supports it.
    rain_year_start = 1
    
    # Start of week (0=Monday, 6=Sunday)
    week_start = 6

##############################################################################

[FileParse]
    poll_interval = 10
    path = /tmp/wxdata
    driver = user.fileparse

##############################################################################

[Simulator]
    # This section is for the weewx weather station simulator
    
    # The time (in seconds) between LOOP packets.
    loop_interval = 2.5
    
    # The simulator mode can be either 'simulator' or 'generator'.
    # Real-time simulator. Sleep between each LOOP packet.
    mode = simulator
    # Generator.  Emit LOOP packets as fast as possible (useful for testing).
    #mode = generator
    
    # The start time. Format is YYYY-mm-ddTHH:MM. If not specified, the default
    # is to use the present time.
    #start = 2011-01-01T00:00
    
    # The driver to use:
    driver = weewx.drivers.simulator

##############################################################################

#   This section is for uploading data to Internet sites

[StdRESTful]
    
    [[StationRegistry]]
        # To register this weather station with weewx, set this to true
        register_this_station = true
    
    [[AWEKAS]]
        # This section is for configuring posts to AWEKAS.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a username and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        username = XXX obfuscated by wee_debug XXX
        password = XXX obfuscated by wee_debug XXX
    
    [[CWOP]]
        # This section is for configuring posts to CWOP.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify the station ID (e.g., CW1234).
        enable = false
        station = XXX obfuscated by wee_debug XXX
    
    # If this is an APRS (radio amateur) station, uncomment
    # the following and replace with a passcode (e.g., 12345).
    #passcode = replace_me (APRS stations only)
    
    [[PWSweather]]
        # This section is for configuring posts to PWSweather.com.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = XXX obfuscated by wee_debug XXX
        password = XXX obfuscated by wee_debug XXX
    
    [[WOW]]
        # This section is for configuring posts to WOW.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = XXX obfuscated by wee_debug XXX
        password = XXX obfuscated by wee_debug XXX
    
    [[Wunderground]]
        # This section is for configuring posts to the Weather Underground.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station (e.g., 'KORHOODR3') and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = XXX obfuscated by wee_debug XXX
        password = XXX obfuscated by wee_debug XXX
        
        # If you plan on using wunderfixer, set the following
        # to your API key:
        api_key = XXX obfuscated by wee_debug XXX
        
        # Set the following to True to have weewx use the WU "Rapidfire"
        # protocol. Not all hardware can support it. See the User's Guide.
        rapidfire = False

##############################################################################

#   This section specifies what reports, using which skins, to generate.

[StdReport]
    
    # Where the skins reside, relative to WEEWX_ROOT
    SKIN_ROOT = /etc/weewx/skins
    
    # Where the generated reports should go, relative to WEEWX_ROOT
    HTML_ROOT = /var/www/html/weewx
    
    # The database binding indicates which data should be used in reports.
    data_binding = wx_binding
    
    # Whether to log a successful operation
    log_success = True
    
    # Whether to log an unsuccessful operation
    log_failure = True
    
    # Each of the following subsections defines a report that will be run.
    # See the customizing guide to change the units, plot types and line
    # colors, modify the fonts, display additional sensor data, and other
    # customizations. Many of those changes can be made here by overriding
    # parameters, or by modifying templates within the skin itself.
    
    [[SeasonsReport]]
        # The SeasonsReport uses the 'Seasons' skin, which contains the
        # images, templates and plots for the report.
        skin = Seasons
        enable = true
        [[[CheetahGenerator]]]
            search_list_extensions = user.forecast.ForecastVariables
        #            search_list_extensions = user.forecast.ForecastVariables, user.metargenerator.MyMetarSearch
        [[[CopyGenerator]]]
            copy_once = seasons.css, seasons.js, favicon.ico, font/*.woff, font/*.woff2, forecast_table.css, icons/*
    
    [[SmartphoneReport]]
        # The SmartphoneReport uses the 'Smartphone' skin, and the images and
        # files are placed in a dedicated subdirectory.
        skin = Smartphone
        enable = false
        HTML_ROOT = /var/www/html/weewx/smartphone
    
    [[MobileReport]]
        # The MobileReport uses the 'Mobile' skin, and the images and files
        # are placed in a dedicated subdirectory.
        skin = Mobile
        enable = false
        HTML_ROOT = /var/www/html/weewx/mobile
    
    [[StandardReport]]
        # This is the old "Standard" skin. By default, it is not enabled.
        skin = Standard
        enable = false
    
    [[Inigo]]
        skin = Inigo
        enable = true
        HTML_ROOT = /var/www/html/weewx/
    
    [[forecast]]
        skin = forecast
        enable = false
        HTML_ROOT = /var/www/html/weewx/forecast
    
    [[FTP]]
        # FTP'ing the results to a webserver is treated as just another report,
        # albeit one with an unusual report generator!
        skin = Ftp
        
        # If you wish to use FTP, set "enable" to "true", then
        # fill out the next four lines.
        # Use quotes around passwords to guard against parsing errors.
        enable = false
        user = XXX obfuscated by wee_debug XXX
        password = XXX obfuscated by wee_debug XXX
        server = replace_me    # The ftp server name, e.g, www.myserver.org
        path = replace_me    # The destination directory, e.g., /weather
        
        # Set to True for an FTP over TLS (FTPS) connection. Not all servers
        # support this.
        secure_ftp = False
        
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = /var/www/html/weewx
        
        # Most FTP servers use port 21
        port = 21
        
        # Set to 1 to use passive mode, zero for active mode
        passive = 1
    
    [[RSYNC]]
        # rsync'ing to a webserver is treated as just another report
        skin = Rsync
        
        # If you wish to use rsync, you must configure passwordless ssh using
        # public/private key authentication from the user account that weewx
        # runs to the user account on the remote machine where the files
        # will be copied.
        #
        # If you wish to use rsync, set "enable" to "true", then
        # fill out server, user, and path.
        # The server should appear in your .ssh/config file.
        # The user is the username used in the identity file.
        # The path is the destination directory, such as /var/www/html/weather.
        # Be sure that the user has write permissions on the destination!
        enable = false
        server = replace_me
        user = XXX obfuscated by wee_debug XXX
        path = replace_me
        
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = /var/www/html/weewx
        
        # Rsync can be configured to remove files from the remote server if
        # they don't exist under HTML_ROOT locally. USE WITH CAUTION: if you
        # make a mistake in the remote path, you could could unintentionally
        # cause unrelated files to be deleted. Set to 1 to enable remote file
        # deletion, zero to allow files to accumulate remotely.
        delete = 0
    
    ####
    
    # Various options for customizing your reports.
    
    [[Defaults]]
        
        [[[Units]]]
            
            # The following section sets what unit to use for each unit group.
            # NB: The unit is always in the singular. I.e., 'mile_per_hour',
            # NOT 'miles_per_hour'
            [[[[Groups]]]]
                
                group_altitude = foot    # Options are 'foot' or 'meter'
                group_degree_day = degree_F_day    # Options are 'degree_F_day' or 'degree_C_day'
                group_distance = mile    # Options are 'mile' or 'km'
                group_pressure = inHg    # Options are 'inHg', 'mmHg', 'mbar', 'hPa', or 'kPa'
                group_rain = inch    # Options are 'inch', 'cm', or 'mm'
                group_rainrate = inch_per_hour    # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour'
                group_speed = mile_per_hour    # Options are 'mile_per_hour', 'km_per_hour', 'knot', or 'meter_per_second'
                group_speed2 = mile_per_hour2    # Options are 'mile_per_hour2', 'km_per_hour2', 'knot2', or 'meter_per_second2'
                group_temperature = degree_F    # Options are 'degree_F' or 'degree_C'
            
            # The following section sets the formatting for each type of unit.
            [[[[StringFormats]]]]
                
                centibar = %.0f
                cm = %.2f
                cm_per_hour = %.2f
                degree_C = %.1f
                degree_F = %.1f
                degree_compass = %.0f
                foot = %.0f
                hPa = %.1f
                hour = %.1f
                inHg = %.3f
                inch = %.2f
                inch_per_hour = %.2f
                km = %.1f
                km_per_hour = %.0f
                km_per_hour2 = %.1f
                knot = %.0f
                knot2 = %.1f
                kPa = %.2f
                mbar = %.1f
                meter = %.0f
                meter_per_second = %.1f
                meter_per_second2 = %.1f
                mile = %.1f
                mile_per_hour = %.0f
                mile_per_hour2 = %.1f
                mm = %.1f
                mmHg = %.1f
                mm_per_hour = %.1f
                percent = %.0f
                second = %.0f
                uv_index = %.1f
                volt = %.1f
                watt_per_meter_squared = %.0f
                NONE = "   N/A"
            
            # The following section overrides the label used for each type of unit
            [[[[Labels]]]]
                
                meter = " meter", " meters"    # You may prefer "metre".
                day = " day", " days"
                hour = " hour", " hours"
                minute = " minute", " minutes"
                second = " second", " seconds"
                NONE = ""
            
            # The following section sets the format for each time scale.
            # The values below will work in every locale, but they may not look
            # particularly attractive.
            [[[[TimeFormats]]]]
                
                hour = %H:%M
                day = %X
                week = %X (%A)
                month = %x %X
                year = %x %X
                rainyear = %x %X
                current = %x %X
                ephem_day = %X
                ephem_year = %x %X
            
            [[[[Ordinates]]]]
                
                # Ordinal directions. The last one is for no wind direction
                directions = N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW, N/A
            
            # The following section sets the base temperatures used for the
            #  calculation of heating, cooling, and growing degree-days.
            [[[[DegreeDays]]]]
                
                # Base temperature for heating days, with unit:
                heating_base = 65, degree_F
                # Base temperature for cooling days, with unit:
                cooling_base = 65, degree_F
                # Base temperature for growing days, with unit:
                growing_base = 50, degree_F
            
            # A trend takes a difference across a time period. The following
            # section sets the time period, and how big an error is allowed to
            # still be counted as the start or end of a period.
            [[[[Trend]]]]
                
                time_delta = 10800    # 3 hours
                time_grace = 300    # 5 minutes
        
        # The labels to be used for each observation type
        [[[Labels]]]
            
            # Set to hemisphere abbreviations suitable for your location:
            hemispheres = N, S, E, W
            
            # Formats to be used for latitude whole degrees, longitude whole
            # degrees, and minutes:
            latlon_formats = %02d, %03d, %05.2f
            
            # Generic labels, keyed by an observation type.
            [[[[Generic]]]]
                altimeter = Altimeter (QNH)
                barometer = Barometer (QFF)
                dewpoint = Dew Point
                ET = ET
                heatindex = Heat Index
                inHumidity = Inside Humidity
                inTemp = Inside Temperature
                outHumidity = Humidity
                outTemp = Outside Temperature
                pressure = Pressure (QFE)
                radiation = Radiation
                rain = Rain
                rainRate = Rain Rate
                UV = UV Index
                windDir = Wind Direction
                windGust = Gust Speed
                windGustDir = Gust Direction
                windSpeed = Wind Speed
                windchill = Wind Chill
                windgustvec = Gust Vector
                windvec = Wind Vector
                extraTemp1 = Temperature1
                extraTemp2 = Temperature2
                extraTemp3 = Temperature3
                
                # Sensor status indicators
                
                rxCheckPercent = Signal Quality
                txBatteryStatus = Transmitter Battery
                windBatteryStatus = Wind Battery
                rainBatteryStatus = Rain Battery
                outTempBatteryStatus = Outside Temperature Battery
                inTempBatteryStatus = Inside Temperature Battery
                consBatteryVoltage = Console Battery
                heatingVoltage = Heating Battery
                supplyVoltage = Supply Voltage
                referenceVoltage = Reference Voltage
        
        [[[Almanac]]]
            
            # The labels to be used for the phases of the moon:
            moon_phases = New, Waxing crescent, First quarter, Waxing gibbous, Full, Waning gibbous, Last quarter, Waning crescent

##############################################################################

#   This service acts as a filter, converting the unit system coming from
#   the hardware to a unit system in the database.

[StdConvert]
    
    # The target_unit affects only the unit system in the database. Once
    # chosen it cannot be changed without converting the entire database.
    # Modification of target_unit after starting weewx will result in
    # corrupt data - the database will contain a mix of US and METRIC data.
    #
    # The value of target_unit does not affect the unit system for
    # reporting - reports can display US, Metric, or any combination of units.
    #
    # In most cases, target_unit should be left as the default: US
    #
    # In particular, those migrating from a standard wview installation
    # should use US since that is what the wview database contains.
    
    # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING!
    target_unit = US    # Options are 'US', 'METRICWX', or 'METRIC'

##############################################################################

#   This section can adjust data using calibration expressions.

[StdCalibrate]
    
    [[Corrections]]
        # For each type, an arbitrary calibration expression can be given.
        # It should be in the units defined in the StdConvert section.
        # Example:
        foo = foo + 0.2

##############################################################################

#   This section is for quality control checks. If units are not specified,
#   values must be in the units defined in the StdConvert section.

[StdQC]
    
    [[MinMax]]
        barometer = 26, 32.5, inHg
        pressure = 24, 34.5, inHg
        outTemp = -40, 120, degree_F
        inTemp = 10, 120, degree_F
        outHumidity = 0, 100
        inHumidity = 0, 100
        windSpeed = 0, 120, mile_per_hour
        rain = 0, 10, inch

##############################################################################

#   This section controls the origin of derived values.

[StdWXCalculate]
    
    [[Calculations]]
        # How to calculate derived quantities.  Possible values are:
        #  hardware        - use the value provided by hardware
        #  software        - use the value calculated by weewx
        #  prefer_hardware - use value provide by hardware if available,
        #                      otherwise use value calculated by weewx
        
        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

##############################################################################

#   For hardware that supports it, this section controls how often the
#   onboard clock gets updated.

[StdTimeSynch]
    
    # How often to check the weather station clock for drift (in seconds)
    clock_check = 3600
    
    # How much it can drift before we will correct it (in seconds)
    max_drift = 5

##############################################################################

#   This section is for configuring the archive service.

[StdArchive]
    
    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    archive_interval = 300
    
    # If possible, new archive records are downloaded from the station
    # hardware. If the hardware does not support this, then new archive
    # records will be generated in software.
    # Set the following to "software" to force software record generation.
    record_generation = hardware
    
    # Whether to include LOOP data in hi/low statistics
    loop_hilo = True
    
    # The data binding used to save archive records
    data_binding = wx_binding

##############################################################################

#   This section binds a data store to a database.

[DataBindings]
    
    [[wx_binding]]
        # The database must match one of the sections in [Databases].
        # This is likely to be the only option you would want to change.
        database = archive_sqlite
        # The name of the table within the database
        table_name = archive
        # The manager handles aggregation of data for historical summaries
        manager = weewx.manager.DaySummaryManager
        # The schema defines the structure of the database.
        # It is *only* used when the database is created.
        schema = schemas.wview_extended.schema
    [[forecast_binding]]
        manager = weewx.manager.Manager
        schema = user.forecast.schema
        table_name = archive
        database = forecast_sqlite

##############################################################################

#   This section defines various databases.

[Databases]
    
    # A SQLite database is simply a single file
    [[archive_sqlite]]
        database_name = weewx.sdb
        database_type = SQLite
    
    # MySQL
    [[archive_mysql]]
        database_name = weewx
        database_type = MySQL
    [[forecast_sqlite]]
        database_name = forecast.sdb
        database_type = SQLite

##############################################################################

#   This section defines defaults for the different types of databases.

[DatabaseTypes]
    
    # Defaults for SQLite databases
    [[SQLite]]
        driver = weedb.sqlite
        # Directory in which the database files are located
        SQLITE_ROOT = /var/lib/weewx
    
    # Defaults for MySQL databases
    [[MySQL]]
        driver = weedb.mysql
        # The host where the database is located
        host = localhost
        # The user name for logging in to the host
        user = XXX obfuscated by wee_debug XXX
        # The password for the user name (quotes guard against parsing errors)
        password = XXX obfuscated by wee_debug XXX

##############################################################################

#   This section configures the internal weewx engine.

[Engine]
    # The following section specifies which services should be run and in what order.
    [[Services]]
        prep_services = weewx.engine.StdTimeSynch
        data_services = ,
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        xtype_services = weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta
        archive_services = weewx.engine.StdArchive, user.forecast.ZambrettiForecast, user.forecast.NWSForecast, user.forecast.XTideForecast
        restful_services = weewx.restx.StdStationRegistry, weewx.restx.StdWunderground, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport

##############################################################################

# Options for extension 'forecast'
[Forecast]
    data_binding = forecast_binding
    [[XTide]]
        location = "INSERT_LOCATION_HERE (e.g., Boston)"
    ##location = "Crumpton, Chester River, Maryland"
    [[Zambretti]]
        hemisphere = NORTH
    [[NWS]]
        lid = MDZ005
        foid = LWX
        url = http://forecast.weather.gov/product.php?site=NWS&product=AFM&format=txt&issuedby=LWX
        interval = 3600
    [[WU]]
        api_key = XXX obfuscated by wee_debug XXX
    [[OWM]]
        api_key = XXX obfuscated by wee_debug XXX
    [[UKMO]]
        api_key = XXX obfuscated by wee_debug XXX
        location = INSERT_UK_LOCATION_HERE
    [[Aeris]]
        client_id = INSERT_AERIS_CLIENT_ID_HERE
        client_secret = INSERT_AERIS_CLIENT_SECRET_HERE
    [[WWO]]
        api_key = XXX obfuscated by wee_debug XXX
    [[DS]]
        api_key = XXX obfuscated by wee_debug XXX

###############################################################################

# The list of airports to include in METAR report:


[MetarReport]
    refresh_interval = 5
    [[kdmw]]
    [[kosh]]

###############################################################################
Using configuration file weewx.conf
Using database binding 'wx_binding', which is bound to database 'archive_sqlite'

System info
  Platform:       Linux-5.4.79+-armv6l-with-debian-10.7
  Python Version: 3.7.3

Load Information
  1 minute load average:  0.29
  5 minute load average:  0.37
  15 minute load average: 0.32

General Weewx info
  Weewx version 4.2.0 detected.

Station info
  Station type: FileParse
  Driver:       user.fileparse

Driver info

Currently installed extensions
Extension Name    Version   Description
fileparse         0.6       File parsing driver for weewx.
Inigo             0.8.26    A skin to feed data to the weeWX Weather app
forecast          3.4.0b10  Generate and display weather and tide forecasts.
sdr               0.77      Capture data from rtl_433

Archive info
  Database name:        weewx.sdb
  Table name:           archive
  Version               2
  Unit system:          1 (US)
  First good timestamp: 2020-09-07 12:45:00 EDT (1599497100)
  Last good timestamp:  2020-12-18 07:20:00 EST (1608294000)
  Number of records:    29198
  weewx (weewx.conf) is set to use an archive interval of 300 seconds.
  The station hardware was not interrogated in determining archive interval.

Databases configured in weewx.conf
  Database name:        weewx.sdb
  Database driver:      weedb.sqlite

  Database name:        weewx
  Database driver:      weedb.mysql
  Database host:        localhost

  Database name:        forecast.sdb
  Database driver:      weedb.sqlite


Parsed and obfuscated weewx.conf

Michael Bruski

unread,
Dec 18, 2020, 8:08:51 AM12/18/20
to weewx-user
Gary,

I see the problem now.   Apparently the "search_list_extension" directive I added for the forecast extension (in weewx.conf) is overriding the directive I need to add in Seasons/skin.conf.   When I comment that CheetahGenerator section out of the weewx.conf file and include both forecast and metar extension in skin.conf they both run as expected.  The python version 2 issue (with metargenerator.py) I think now rears it's head because I still don't see any data in the report but I think I can work that out.

I probably would have figured this out eventually going back and forth between weewx.conf and skin.conf but my thanks to you for asking for that debug file.  It helped steer me in the right direction.

Mike - AJ9X

gjr80

unread,
Dec 18, 2020, 8:28:10 AM12/18/20
to weewx-user
Yes, a setting in weewx.conf overrides the equivalent setting in skin.conf, that’s where I was going but you figured it out.

Gary

Reply all
Reply to author
Forward
0 new messages