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__:Â Â Â Â ****Â During handling of the above exception, another exception occurred:
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 <
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 = 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