I changed all occurrences of isAlive to is_alive, and so far (30 minutes) 
it appears to be working. Since it always died quite quickly, before 
(within 5 minutes) I tentatively conclude this was the only hiccup in the 
upgrade. Thanks for the quick response!


On Friday, October 23, 2020 at 10:27:26 AM UTC-7 [email protected] wrote:

> Just realized that there are many other places where the old name 
> isAlive() is used. You may have to change other lines as well.
>
> On Fri, Oct 23, 2020 at 10:24 AM Tom Keffer <[email protected]> wrote:
>
>> Looks like the method name changed from Thread.isAlive() to 
>> Thread.is_alive(). They must have completely eliminated the old name with 
>> Python 3.9.
>>
>> In weewx/engine.py, line 776, change this
>>
>> if self.thread and self.thread.isAlive():
>>
>> to this:
>>
>> if self.thread and self.thread.is_alive():
>>
>>
>>
>>
>> On Fri, Oct 23, 2020 at 9:00 AM Joel Bion <[email protected]> wrote:
>>
>>> My setup is exactly what I mentioned in the subject. No changes except 
>>> to customizing weewx.conf, and adding the purpleair extension. Below this 
>>> error log, I include the contents of weewx.conf
>>>
>>> Oct 23 08:30:19 www weewx[5569] INFO weewx.manager: Added record 
>>> 2020-10-23 08:30:19 PDT (1603467019) to database 'purpleair.sdb'
>>> Oct 23 08:30:19 www weewx[5569] INFO weewx.manager: Added record 
>>> 2020-10-23 08:30:19 PDT (1603467019) to daily summary in 'purpleair.sdb'
>>> Oct 23 08:30:19 www weewx[5569] INFO weewx.manager: Added record 
>>> 2020-10-23 08:30:00 PDT (1603467000) to database 'weewxarchive'
>>> Oct 23 08:30:19 www weewx[5569] INFO weewx.manager: Added record 
>>> 2020-10-23 08:30:00 PDT (1603467000) to daily summary in 'weewxarchive'
>>> Oct 23 08:30:19 www weewx[5569] INFO weewx.engine: Main loop exiting. 
>>> Shutting engine down.
>>> Oct 23 08:30:19 www weewx[5569] INFO weewx.engine: Shutting down 
>>> StdReport thread
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__: Caught unrecoverable 
>>> exception:
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****  
>>> 'StdReportEngine' object has no attribute 'isAlive'
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****  Traceback 
>>> (most recent call last):
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****    File 
>>> "/home/weewx/bin/weewx/engine.py", line 195, in run
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****      
>>> self.dispatchEvent(weewx.Event(weewx.CHECK_LOOP, packet=packet))
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****    File 
>>> "/home/weewx/bin/weewx/engine.py", line 224, in dispatchEvent
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****      
>>> callback(event)
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****    File 
>>> "/home/weewx/bin/weewx/engine.py", line 578, in check_loop
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****      raise 
>>> BreakLoop
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****  
>>> weewx.engine.BreakLoop
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****  During 
>>> handling of the above exception, another exception occurred:
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****  Traceback 
>>> (most recent call last):
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****    File 
>>> "/home/weewx/bin/weewxd", line 154, in main
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****      
>>> engine.run()
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****    File 
>>> "/home/weewx/bin/weewx/engine.py", line 202, in run
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****      
>>> self.dispatchEvent(weewx.Event(weewx.POST_LOOP))
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****    File 
>>> "/home/weewx/bin/weewx/engine.py", line 224, in dispatchEvent
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****      
>>> callback(event)
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****    File 
>>> "/home/weewx/bin/weewx/engine.py", line 776, in launch_report_thread
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****      if 
>>> self.thread and self.thread.isAlive():
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****  
>>> AttributeError: 'StdReportEngine' object has no attribute 'isAlive'
>>> Oct 23 08:30:20 www weewx[5569] CRITICAL __main__:     ****  Exiting.
>>> # WEEWX CONFIGURATION FILE
>>> #
>>> # Copyright (c) 2009-2019 Tom Keffer <[email protected]>
>>> # 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 = 0
>>>
>>> # Root directory of the weewx data file hierarchy for this station
>>> WEEWX_ROOT = /home/weewx
>>>
>>> # 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.1.1
>>>
>>>
>>> ##############################################################################
>>>
>>> #   This section is for information about the station.
>>>
>>> [Station]
>>>     
>>>     # Description of the station location
>>>     location = "Saratoga, California (West Valley College Area)"
>>>     
>>>     # Latitude in decimal degrees. Negative for southern hemisphere
>>>     latitude = 37.26260076
>>>     # Longitude in decimal degrees. Negative for western hemisphere.
>>>     longitude = -122.00330353
>>>     
>>>     # Altitude of the station, with unit it is in. This is downloaded 
>>> from
>>>     # from the station if the hardware supports it.
>>>     altitude = 372, foot    # Choose 'foot' or 'meter' for unit
>>>     
>>>     # 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 = Vantage
>>>     
>>>     # If you have a website, you may specify an URL
>>>     station_url = https://westvi.com/weather
>>>     
>>>     # 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 = 10
>>>     
>>>     # Start of week (0=Monday, 6=Sunday)
>>>     week_start = 6
>>>
>>>
>>> ##############################################################################
>>>
>>> [Vantage]
>>>     # This section is for a Davis VantagePro2, VantageVue or 
>>> WeatherLinkIP
>>>     
>>>     # Connection type: serial or ethernet
>>>     #  serial (the classic VantagePro)
>>>     #  ethernet (the WeatherLinkIP)
>>>     type = ethernet
>>>     
>>>     # If the connection type is serial, a port must be specified:
>>>     #   Debian, Ubuntu, Redhat, Fedora, and SuSE:
>>>     #     /dev/ttyUSB0 is a common USB port name
>>>     #     /dev/ttyS0   is a common serial port name
>>>     #   BSD:
>>>     #     /dev/cuaU0   is a common serial port name
>>>     #port = /dev/vpro
>>>     
>>>     # If the connection type is ethernet, an IP Address/hostname is 
>>> required:
>>>     host = 173.11.83.165
>>>     
>>>     ######################################################
>>>     # The rest of this section rarely needs any attention.
>>>     # You can safely leave it "as is."
>>>     ######################################################
>>>     
>>>     # Serial baud rate (usually 19200)
>>>     baudrate = 19200
>>>     
>>>     # TCP port (when using the WeatherLinkIP)
>>>     # Default is 22222!
>>>     tcp_port = 22225
>>>     
>>>     # TCP send delay (when using the WeatherLinkIP):
>>>     tcp_send_delay = 1
>>>     
>>>     # The type of LOOP packet to request: 1 = LOOP1; 2 = LOOP2; 3 = both
>>>     loop_request = 1
>>>     
>>>     # The id of your ISS station (usually 1)
>>>     iss_id = 1
>>>     
>>>     # How long to wait for a response from the station before giving up 
>>> (in
>>>     # seconds; must be greater than 2)
>>>     timeout = 5
>>>     
>>>     # How long to wait before trying again (in seconds)
>>>     wait_before_retry = 1.2
>>>     
>>>     # How many times to try before giving up:
>>>     max_tries = 4
>>>     
>>>     # The driver to use:
>>>     driver = weewx.drivers.vantage
>>>
>>>
>>> ##############################################################################
>>>
>>> #   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 = replace_me
>>>         password = replace_me
>>>     
>>>     [[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 = replace_me
>>>     
>>>     # 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 = replace_me
>>>         password = replace_me
>>>     
>>>     [[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 = replace_me
>>>         password = replace_me
>>>     
>>>     [[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 = replace_me
>>>         password = replace_me
>>>         
>>>         # If you plan on using wunderfixer, set the following
>>>         # to your API key:
>>>         api_key = replace_me
>>>         
>>>         # 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 = skins
>>>     
>>>     # Where the generated reports should go, relative to WEEWX_ROOT
>>>     HTML_ROOT = public_html
>>>     
>>>     # 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 = False
>>>     
>>>     # 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 = false
>>>     
>>>     [[SmartphoneReport]]
>>>         # The SmartphoneReport uses the 'Smartphone' skin, and the 
>>> images and
>>>         # files are placed in a dedicated subdirectory.
>>>         skin = Smartphone
>>>         enable = false
>>>         HTML_ROOT = public_html/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 = public_html/mobile
>>>     
>>>     [[StandardReport]]
>>>         # This is the old "Standard" skin. By default, it is not enabled.
>>>         skin = Standard
>>>         enable = True
>>>     
>>>     [[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 = replace_me
>>>         password = replace_me
>>>         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 = public_html
>>>         
>>>         # 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 = replace_me
>>>         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 = public_html
>>>         
>>>         # 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', or 'hPa'
>>>                 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
>>>                 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]]]]
>>>                 barometer = Barometer
>>>                 dewpoint = Dew Point
>>>                 ET = ET
>>>                 heatindex = Heat Index
>>>                 inHumidity = Inside Humidity
>>>                 inTemp = Garage Temperature
>>>                 outHumidity = Humidity
>>>                 outTemp = Outside Temperature
>>>                 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 = 14400
>>>     
>>>     # 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_mysql
>>>         # 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
>>>     [[purpleair_binding]]
>>>         manager = weewx.manager.DaySummaryManager
>>>         schema = user.purpleair.schema
>>>         table_name = archive
>>>         database = purpleair_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 = weewxarchive
>>>         database_type = MySQL
>>>     [[purpleair_sqlite]]
>>>         database_name = purpleair.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 = %(WEEWX_ROOT)s/archive
>>>     
>>>     # 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 = weewx
>>>         # The password for the user name (quotes guard against parsing 
>>> errors)
>>>         password = ***HIDDEN FROM PUBLIC VIEW***
>>>
>>>
>>> ##############################################################################
>>>
>>> #   This section configures the internal weewx engine.
>>>
>>> [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, user.purpleair.PurpleAirMonitor
>>>         archive_services = weewx.engine.StdArchive
>>>         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 'purpleair'
>>> [PurpleAirMonitor]
>>>     data_binding = purpleair_binding
>>>     hostname = 173.11.83.165
>>>     port = 22226
>>>
>>>
>>> -- 
>>> 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/7d1e839f-5097-496d-a23e-e1e284906570o%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/weewx-user/7d1e839f-5097-496d-a23e-e1e284906570o%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
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/f72b3227-2c42-42c7-a4c2-b129201fa8e6n%40googlegroups.com.

Reply via email to