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/CAPq0zEDkp7X_PmAE1KqLBgv6p7yYajvPpJPxa5piqGt8-W3PDA%40mail.gmail.com.

Reply via email to