any help please :-)
I tried making gap_fraction = 0.3 (not 0.03) and increased archive_interval 
= 300. 
*QUESTION: Could it be that I just am getting too  many nulls in the 
database?*

My weather station is an Acurite Atlas using SDR driver modified for indoor 
temp/humidity/pressure from an arduino.  The weewx server is on a raspberry 
pi hooked up to a usb hub.
The usb hub is connected to the RTL-SDR radio receiver dongle to receive 
the Acurite Atlas packets.  The usb hub is also connected to the arduino.  
The modified SDR driver has three streams, stdin/stdout from the rtl_433 
back-end to RTL-SDR plus ttyACM0 serial over usb connection to the 
arduino.  The SDR driver reads these ports with a class called AsyncInput 
which has one instantiation per stream.  Each AsyncInput runs in a thread.

*QUESTION It should definitely be drawing lines not points based on the 
weewx.conf attached and the skin.conf attached as far as I can tell.*

The Acurite Atlas send a sequence of about three incomplete packets to make 
a complete set of data plus the data from the arduino.  
*QUESTION:  how do incomplete packets get combined?*

-- 
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/3625616c-3efe-4f42-bcf3-4923d8616656n%40googlegroups.com.
# WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2022 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
# garberw fixme turned debugging on
debug = 0
# debug = 1

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

# Whether to log successful operations. May get overridden below.
# garberw
# log_success = True
log_success = False

# Whether to log unsuccessful operations. May get overridden below.
log_failure = True
# log_failure = False

# How long to wait before timing out a socket (FTP, HTTP) connection    (note 
this is from version 4.6.1 may not apply here garberw)
socket_timeout = 20

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

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

#   This section is for information about the station.

[Station]

    # Description of the station location
    # garberw
    #    location = "My Little Town, Oregon"
    location = USA; CA; San Rafael; Lucas Valley; Creekside Dr.; Atlas;

    # Latitude in decimal degrees. Negative for southern hemisphere
    # garberw
    # latitude = 0.00
    latitude = 38.03511971394813
    # Longitude in decimal degrees. Negative for western hemisphere.
    # garberw
    # longitude = 0.00
    longitude = -122.5868406517824

    # Altitude of the station, with the unit it is in. This is used only
    # if the hardware cannot supply a value.
    # garberw
    # altitude = 700, foot    # Choose 'foot' or 'meter' for unit
    # garberw ground
    # altitude = 192, foot    # Choose 'foot' or 'meter' for unit
    # garberw ground fixme add 13' or so for pole acurite atlas is on
    # 63 meters
    altitude = 207, foot    # Choose 'foot' or 'meter' for unit

    # Set to type of station hardware. There must be a corresponding stanza
    # in this file, which includes a value for the 'driver' option.
    # garberw
    # station_type = Simulator
    station_type = SDR

    # If you have a website, you may specify an URL. This is required if you
    # intend to register your station.
    #station_url = http://www.example.com

    # 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)
    # garberw
    # week_start = 6
    week_start = 0

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

[SDR]
    # This section is for the software-defined radio driver.

    # The driver to use
    # /usr/share/weewx/user/sdr.py    --OR--
    # /usr/share/weewx/user/weewx_atlas_adafruit.py
    # driver = user.sdr
    driver = user.weewx_atlas_adafruit

    # garberw   default
    # this is configured in /etc/rtl_433/rtl_433.conf
    # cmd = rtl_433 -M utc -F json

    # garberw   added because
    # lacrosse uses freq -f 433.92M protocol -R 73 (can be listed twice -R 73 
-R 73)
    # acurite  uses freq -f 433.92M protocol -R 40
    # ambient  uses freq -f 915.??M protocol -R 78 (same as fine offset)
    # -H 30 means hop freq every 30 seconds
    # cmd = rtl_433 -f 433.92M -f 915M -H 30 -M utc -F json -R 40 -R 78

    # garberw   default
    # filename of usb port to read indoor temperature; humidity; pressure;
    # weewx server usb port /dev/ttyACMwa connected to arduino with program
    # /home/garberw/Atlas/weather_atlas/weather_atlas.ino
    # fname_thpusb = /dev/ttyACMwa

    # garberw
    # fixme
    # log_unknown_sensors = False
    log_unknown_sensors = True
    # garberw
    # fixme
    # log_unmapped_sensors = False
    log_unmapped_sensors = True
    # garberw added sensor_map
    [[sensor_map]]
        # calculated begin ====================================== from 
[StdWXCalculate]
        # shown based on /usr/share/weewx/weewx/wxformulas.py
        # shown based on /usr/share/weewx/weewx/wxxtypes.py
        # which can be derived from (inTemp inHumidity outTemp outHumidity 
altitude);
        # not anything else like rain or wind;
        ###### T = temperature
        ###### H = relative humidity
        ###### V = wind speed
        ###### A = altitude
        ###### P = pressure  ## basic or derived from B
        ###### B = barometer ## basic or derived from P
        ###### W = rain
        ###### LA= latitude
        ###### LO= longitude
        ### pressure   (T,H,B)   ## either P or B;
        ### altimeter  (P)
        ### appTemp    (T,H,V)
        ### barometer  (P,A)     ## either P or B;
        ### cloudbase  (T,H,A)
        ### dewpoint   (T,H)
        ### ET         (many)    ## ????
        ### heatindex  (T,H)
        ### humidex    (T,H)
        ### inDewpoint (T,H)
        ### maxSolarRad(LA,LO,A)
        ### rainRate   (W)
        ### windchill  (T,V)
        ### windrun    (V)
        # calculated end ======================================
        # driver weewx-sdr and rtl_433 output begin 
======================================
        # assign to fields of database in 
/usr/share/weewx/user/garberw_schema.py
        # Fine Offset WH32B ============================ INSIDE; has pressure P;
        # Ambient Weather WH32B = Fine Offset WH32B
        # fixme changed 80.FOWH32BPacket to 202.FOWH32BPacket
        #   switching from WH25 to WH32B 2022.08.09
        # inTempBatteryStatus = battery.202.FOWH32BPacket
        # inTemp = temperature.202.FOWH32BPacket
        # inHumidity = humidity.202.FOWH32BPacket
        ## fixme check this is actually pressure and not barometer
        # pressure = pressure.202.FOWH32BPacket
        ## inRssi = rssi.202.FOWH32BPacket
        ## inSnr = snr.202.FOWH32BPacket
        ## inNoise = noise.202.FOWH32BPacket

        # AcuRite Atlas ============================ OUTSIDE
        # this id was 0229; can use wildcard *;
        outTempBatteryStatus = battery.*.AcuriteAtlasPacket
        outTemp = temperature.*.AcuriteAtlasPacket
        outHumidity = humidity.*.AcuriteAtlasPacket
        luminosity = lux.*.AcuriteAtlasPacket
        # fixme need conversion; this is made-up;
        # radiation = lux.*.AcuriteAtlasPacket
        rain_total = rain_total.*.AcuriteAtlasPacket
        UV = uv.*.AcuriteAtlasPacket
        windSpeed = wind_speed.*.AcuriteAtlasPacket
        windDir = wind_dir.*.AcuriteAtlasPacket
        # outRssi = rssi.*.AcuriteAtlasPacket
        # outSnr = snr.*.AcuriteAtlasPacket
        # outNoise = noise.*.AcuriteAtlasPacket
        rxCheckPercent = snr.*.AcuriteAtlasPacket
        # AcuriteAtlas with Adafruit extension ==================== INSIDE
        inTemp = inTemp.*.AcuriteAtlasPacket
        inHumidity = inHumidity.*.AcuriteAtlasPacket
        # fixme check this is actually pressure and not barometer
        pressure = pressure.*.AcuriteAtlasPacket
        altitude = altitude.*.AcuriteAtlasPacket
        gas_resistance = gas_resistance.*.AcuriteAtlasPacket
        iaq = iaq.*.AcuriteAtlasPacket
    # driver weewx-sdr and rtl_433 output end 
======================================
    [[deltas]]
        rain = rain_total

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

[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]

    # Uncomment and change to override logging for uploading services.
    # log_success = True
    # log_failure = True
    log_success = False
    log_failure = True

    [[StationRegistry]]
        # To register this weather station with weewx, set this to true,
        # then fill out option 'station_url' above.
        register_this_station = false

    [[AWEKAS]]
        # This section is for configuring posts to AWEKAS.

        # If you wish to post to AWEKAS, set the option 'enable' to true, then 
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 post to CWOP, set the option 'enable' to true,
        # then specify the station ID (e.g., CW1234).
        enable = false
        station = replace_me
        # If this is an APRS (radio amateur) station, specify the
        # passcode (e.g., 12345). Otherwise, ignore.
        passcode = replace_me


    [[PWSweather]]
        # This section is for configuring posts to PWSweather.com.

        # If you wish to post to PWSweather.com, set the option 'enable' to 
true, then 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 post to WOW, set the option 'enable' to true, then 
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 post to the Weather Underground, set the option 
'enable' to true,  then
        # 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 = /etc/weewx/skins
    SKIN_ROOT = /usr/share/weewx/user/skins

    # Where the generated reports should go, relative to WEEWX_ROOT
    # fixme
    HTML_ROOT = /var/www/html/weewx/weewx_atlas

    # Uncomment and change to override logging for reports
    # garberw
    # log_success = True
    # log_failure = True
    log_success = False
    log_failure = True

    # The database binding indicates which data should be used in reports.
    data_binding = wx_binding

    # 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
        # garberw added next two sections ========>
        # names for plot groups are from plot names defined in ImageGenerator 
section of
        # skin.conf e.g. daytempdew; weektempdew; monthtempdew; yeartempdew;
        [[[DisplayOptions]]]
            plot_groups = tempdew, hum, tempfeel, tempin, humin, barometer, 
wind, winddir, windvec, UV, radiation, ET, gas_resistance, iaq, rain, tempext, 
humext, tempext2, humext2, lightning, templeaf, wetleaf, tempsoil, moistsoil, pm
        [[[ImageGenerator]]]
            # garberw default
            # vector_rotate = 90
            vector_rotate = 0
            # garberw do not plot gaps >= 0.05 * 24hr
            # garberw default
            # line_gap_fraction = 0.05
            line_gap_fraction = 0.3
            # default
            # top_label_font_size = 14
            top_label_font_size = 12
            
           [[[[day_images]]]]
                # garberw undocumented; not sure if this does anything
                xscale = None, None, 1
                # garberw
                x_label_format = %H:%M
                # x_label_format = %H
                # garberw undocumented; must be > 0
                x_label_spacing = 1
                # garberw undocumented; not sure if this does anything
                # x_nticks = 16
                x_interval = 7200
                color = "#66CDAA"
                [[[[[daytempdew]]]]]
                    [[[[[[dewpoint]]]]]]
                        color = DarkGreen
                [[[[[daytempfeel]]]]]
                    [[[[[[heatindex]]]]]]
                        color = DarkGreen
                [[[[[dayrain]]]]]
                    # Make sure the y-axis increment is at least 0.02 for the 
rain plot
                    yscale = None, None, 0.02
                    [[[[[[rain]]]]]]
                        fill_color = "#000000"
                        label = AT Rain (hourly total)
                [[[[[daywind]]]]]
                    [[[[[[windGust]]]]]]
                        color = DarkGreen
                [[[[[dayET]]]]]
                    # Make sure the y-axis increment is at least 0.02 for the 
ET plot
                    yscale = None, None, 0.02
                    [[[[[[ET]]]]]]
                        label = AT Evapotranspiration (hourly total)
                [[[[[dayUV]]]]]
                    # If your radiation sensor has a bounded scale, enforce 
that here.
                    # yscale = 0, 16, 1

           [[[[week_images]]]]
                color = "#66CDAA"
                [[[[[weektempdew]]]]]
                    [[[[[[dewpoint]]]]]]
                        color = DarkGreen
                [[[[[weektempfeel]]]]]
                    [[[[[[heatindex]]]]]]
                        color = DarkGreen
                [[[[[weekrain]]]]]
                    # Make sure the y-axis increment is at least 0.02 for the 
rain plot
                    yscale = None, None, 0.02
                    [[[[[[rain]]]]]]
                        fill_color = "#000000"
                        label = AT Rain (daily total)
                [[[[[weekwind]]]]]
                    [[[[[[windGust]]]]]]
                        color = DarkGreen
                [[[[[weekET]]]]]
                    # Make sure the y-axis increment is at least 0.02 for the 
ET plot
                    yscale = None, None, 0.02
                    [[[[[[ET]]]]]]
                        label = AT Evapotranspiration (daily total)
                [[[[[weekUV]]]]]
                    # If your radiation sensor has a bounded scale, enforce 
that here.
                    # yscale = 0, 16, 1

           [[[[month_images]]]]
                color = "#66CDAA"
                [[[[[monthtempdew]]]]]
                    [[[[[[dewpoint]]]]]]
                        color = DarkGreen
                [[[[[monthtempfeel]]]]]
                    [[[[[[heatindex]]]]]]
                        color = DarkGreen
                [[[[[monthrain]]]]]
                    # Make sure the y-axis increment is at least 0.02 for the 
rain plot
                    yscale = None, None, 0.02
                    [[[[[[rain]]]]]]
                        fill_color = "#000000"
                        label = AT Rain (daily total)
                [[[[[monthwind]]]]]
                    [[[[[[windGust]]]]]]
                        color = DarkGreen
                [[[[[monthET]]]]]
                    # Make sure the y-axis increment is at least 0.02 for the 
ET plot
                    yscale = None, None, 0.02
                    [[[[[[ET]]]]]]
                        label = AT Evapotranspiration (daily total)
                [[[[[monthUV]]]]]
                    # If your radiation sensor has a bounded scale, enforce 
that here.
                    # yscale = 0, 16, 1

           [[[[year_images]]]]
                color = "#66CDAA"
                [[[[[yeartempdew]]]]]
                    [[[[[[dewpoint]]]]]]
                        color = DarkGreen
                [[[[[yeartempfeel]]]]]
                    [[[[[[heatindex]]]]]]
                        color = DarkGreen
                [[[[[yearrain]]]]]
                    # Make sure the y-axis increment is at least 0.02 for the 
rain plot
                    yscale = None, None, 0.02
                    [[[[[[rain]]]]]]
                        fill_color = "#000000"
                        label = AT Rain (weekly total)
                [[[[[yearwind]]]]]
                    [[[[[[windGust]]]]]]
                        color = DarkGreen
                [[[[[yearET]]]]]
                    # Make sure the y-axis increment is at least 0.02 for the 
ET plot
                    yscale = None, None, 0.02
                    [[[[[[ET]]]]]]
                        label = AT Evapotranspiration (weekly total)
                [[[[[yearUV]]]]]
                    # If your radiation sensor has a bounded scale, enforce 
that here.
                    # yscale = 0, 16, 1
    # garberw added prev section <========

    [[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/weewx_atlas

    [[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/weewx_atlas

    [[StandardReport]]
        # This is the old "Standard" skin. By default, it is not enabled.
        skin = Standard
        enable = false

    [[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 = /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 = 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 = /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

    # Options in the [[Defaults]] section below will apply to all reports.
    # What follows are a few of the more popular options you may want to
    # uncomment, then change.
    [[Defaults]]

        # Which language to use for all reports. Not all skins support all 
languages.
        # You can override this for individual reports.
        lang = en

        # Which unit system to use for all reports. Choices are 'us', 'metric', 
or 'metricwx'.
        # You can override this for individual reports.
        unit_system = us

        [[[Units]]]

            # Option "unit_system" above sets the general unit system, but 
overriding specific unit
            # groups is possible. These are popular choices. Uncomment and set 
as appropriate.
            # NB: The unit is always in the singular. I.e., 'mile_per_hour',
            # NOT 'miles_per_hour'
            [[[[Groups]]]]
                # group_altitude     = meter              # Options are 'foot' 
or 'meter'
                # group_pressure     = mbar               # Options are 'inHg', 
'mmHg', 'mbar', or 'hPa'
                # group_rain         = mm                 # Options are 'inch', 
'cm', or 'mm'
                # group_rainrate     = mm_per_hour        # Options are 
'inch_per_hour', 'cm_per_hour', or 'mm_per_hour'
                # group_temperature  = degree_C           # Options are 
'degree_C', 'degree_F', or 'degree_K'
                # The following line is used to keep the above lines indented 
properly.
                # It can be ignored.
                unused = unused

            # Uncommenting the following section frequently results in more
            # attractive formatting of times and dates, but may not work in
            # your locale.
            [[[[TimeFormats]]]]
                # day        = %H:%M
                # week       = %H:%M on %A
                # month      = %d-%b-%Y %H:%M
                # year       = %d-%b-%Y %H:%M
                # rainyear   = %d-%b-%Y %H:%M
                # current    = %d-%b-%Y %H:%M
                # ephem_day  = %H:%M
                # ephem_year = %d-%b-%Y %H:%M
                # The following line is used to keep the above lines indented 
properly.
                # It can be ignored.
                unused = unused

        [[[Labels]]]
            # Users frequently change the labels for these observation types
            [[[[Generic]]]]
                # inHumidity     = Inside Humidity
                # inTemp         = Inside Temperature
                # outHumidity    = Outside Humidity
                # outTemp        = Outside Temperature
                # extraTemp1     = Temperature1
                # extraTemp2     = Temperature2
                # extraTemp3     = Temperature3
                # garberw ==================================
                barometer   = AT barometer
                outTemp     = AT outTemp
                outHumidity = AT outHumidity
                inTemp      = AT inTemp
                inHumidity  = AT inHumidity
                windSpeed   = AT windSpeed
                windGust    = AT windGust
                windDir     = AT windDir
                windvec     = AT windvec
                UV          = AT UV
                radiation   = AT radiation
                altitude    = AT altitude
                gas_resistance = AT gas_resistance
                iaq         = AT iaq
                # garberw ==================================
                # The following line is used to keep the above lines indented 
properly.
                # It can be ignored.
                unused = unused

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

#   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
        # garberw added this line; see;
        # https://groups.google.com/g/weewx-user/c/oWp-9LivDJo/m/TCRPIKq3AgAJ
        # approximation;
        inTemp = inTemp - 4.0
        radiation = luminosity / 126.7
        pressure = pressure + 0.05
        UV = UV * 3.3333333333

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

#   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
        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]

    # must be evenly divisible by 60 !!!!!!!!!!!!!!!!!!!!
    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    # default
    archive_interval = 300
    # garberw   FIXME set to read weather period T=60 sec
    # archive_interval = 30
    # archive_interval = 120
    # this works for two frequencies with atlas (433mhz) and wh32b (915mhz)
    # archive_interval = 300
    # this works for one frequency with atlas (433mhz) and wh25 (433mhz)
    # minimum would be 60 assuming no errors (nulls)
    # this rapid interval generates a lot of data; check for nulls;
    # archive_interval = 120
    # archive_interval = 240

    # 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

    # Uncomment and change to override logging for archive operations
    # garberw default
    # log_success = True
    # log_failure = True
    log_success = False
    log_failure = 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
        schema = user.garberw_schema.schema

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

#   This section defines various databases.

[Databases]

    # A SQLite database is simply a single file
    [[archive_sqlite]]
        database_name = weewx_atlas.sdb
        database_type = SQLite

    # MySQL
    [[archive_mysql]]
        database_name = weewx_atlas
        database_type = MySQL

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

#   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 = weewx
        # The password (use quotes to guard against parsing errors)
        password = weewx

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

#   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
        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
###############################################################################
# SEASONS SKIN CONFIGURATION FILE                                             #
# Copyright (c) 2018-2021 Tom Keffer <[email protected]> and Matthew Wall     #
# See the file LICENSE.txt for your rights.                                   #
###############################################################################

SKIN_NAME = Seasons
SKIN_VERSION = 4.8.0

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

# The following section is for any extra tags that you want to be available in
# the templates

[Extras]

    # This radar image would be available as $Extras.radar_img
    # radar_img = 
https://radblast.wunderground.com/cgi-bin/radar/WUNIDS_map?station=RTX&brand=wui&num=18&delay=15&type=N0R&frame=0&scale=1.000&noclutter=1&showlabels=1&severe=1
    # This URL will be used as the image hyperlink:
    # radar_url =       
https://radar.weather.gov/?settings=v1_eyJhZ2VuZGEiOnsiaWQiOm51bGwsImNlbnRlciI6Wy0xMjEuOTE3LDQ1LjY2XSwiem9vbSI6OH0sImJhc2UiOiJzdGFuZGFyZCIsImNvdW50eSI6ZmFsc2UsImN3YSI6ZmFsc2UsInN0YXRlIjpmYWxzZSwibWVudSI6dHJ1ZSwic2hvcnRGdXNlZE9ubHkiOmZhbHNlfQ%3D%3D#/

    # Similar to radar, but for satellite image.
    #satellite_img = 
http://images.intellicast.com/WxImages/SatelliteLoop/hipacsat_None_anim.gif
    #satellite_url = 
http://images.intellicast.com/WxImages/SatelliteLoop/hipacsat_None_anim.gif

    # To display a map, enter an API key for google maps
    #google_maps_apikey = xxx

    # If you have a Google Analytics ID, uncomment and edit the next line, and
    # the analytics code will be included in your generated HTML files:
    #googleAnalyticsId = UA-12345678-1


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

# The following section contains variables that determine which observations
# and plots will be shown in the template files, and their order.  Like other
# configuration options, these can be overridden in the weewx config file.

[DisplayOptions]

    # Show link to RSS feed?
    show_rss = True

    # Show link to NOAA-style summary reports?
    show_reports = True

    # This list determines which types will appear in the "current conditions"
    # section, as well as in which order.
    # garberw
    observations_current = outTemp, heatindex, windchill, dewpoint, 
outHumidity, barometer, windSpeed, rain, rainRate, UV, radiation, 
lightning_strike_count, inTemp, inHumidity, gas_resistance, iaq, extraTemp1, 
extraHumid1, extraTemp2, extraHumid2, caseTemp1, caseHumid1, pm1_0, pm2_5, 
pm10_0

    # This list determines which types will appear in the "statistics" and
    # "statistical summary" sections, as well as in which order.
    # garberw removed cpuTemp1 ... cpuTemp8
    observations_stats = outTemp, heatindex, windchill, dewpoint, outHumidity, 
barometer, windSpeed, rain, rainRate, ET, hail, hailRate, snow, UV, radiation, 
lightning_strike_count, lightning_distance, inTemp, inHumidity, gas_resistance, 
iaq, extraTemp1, extraHumid1, extraTemp2, extraHumid2, extraTemp3, extraHumid3, 
extraTemp4, extraHumid4, extraTemp5, extraHumid5, extraTemp6, extraHumid6, 
extraTemp7, extraHumid7, extraTemp8, extraHumid8, caseTemp1, caseTemp2, 
caseTemp3, caseTemp4, caseTemp5, caseTemp6, caseTemp7, caseTemp8, caseHumid1, 
caseHumid2, caseHumid3, caseHumid4, caseHumid5, caseHumid6, caseHumid7, 
caseHumid8, leafTemp1, leafTemp2, leafWet1, leafWet2, soilTemp1, soilTemp2, 
soilTemp3, soilTemp4, soilMoist1, soilMoist2, soilMoist3, soilMoist4, pm1_0, 
pm2_5, pm10_0, co, co2, nh3, no2, o3, so2

    # This list determines which types will appear in the RSS feed.
    observations_rss = outTemp, inTemp, barometer, windSpeed, rain, rainRate, 
windchill, heatindex, dewpoint, outHumidity, inHumidity

    # Some observations display a sum rather than min/max values
    obs_type_sum = rain, ET, hail, snow, lightning_strike_count

    # Some observations display only the max value
    obs_type_max = rainRate, hailRate, snowRate, UV

    # The sensor status information is used in the sensor pages.  These lists
    # determine which database fields will be shown, as well as the order in
    # which they will be displayed.
    sensor_connections = rxCheckPercent, signal1, signal2, signal3, signal4, 
signal5, signal6, signal7, signal8
    sensor_batteries = outTempBatteryStatus, inTempBatteryStatus, 
rainBatteryStatus, hailBatteryStatus, snowBatteryStatus, windBatteryStatus, 
uvBatteryStatus, txBatteryStatus, batteryStatus1, batteryStatus2, 
batteryStatus3, batteryStatus4, batteryStatus5, batteryStatus6, batteryStatus7, 
batteryStatus8
    sensor_voltages = consBatteryVoltage, heatingVoltage, supplyVoltage, 
referenceVoltage

    # This list determines which plots will be shown, as well as the order in
    # which they will be displayed.  The names refer to the plots defined in
    # the ImageGenerator section, without any time span prefix.  For example,
    # the name 'wind' refers to 'daywind', 'weekwind', 'monthwind', and
    # 'yearwind'.
    # garberw
    plot_groups = barometer, tempdew, tempfeel, hum, wind, winddir, windvec, 
rain, ET, UV, radiation, lightning, tempin, humin, gas_resistance, iaq, 
tempext, humext, tempext2, humext2, tempcpu, tempcpu2, tempcase, tempcase2, 
humcase, humcase2, templeaf, wetleaf, tempsoil, moistsoil, pm
    telemetry_plot_groups =rx, volt

    # The list of time spans used within the skin
    periods = day, week, month, year


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

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

[CheetahGenerator]

    # Possible encodings include 'html_entities', 'strict_ascii', 
'normalized_ascii',
    # as well as those listed in 
https://docs.python.org/3/library/codecs.html#standard-encodings
    encoding = html_entities

    [[SummaryByMonth]]
        # Reports that summarize "by month"
        [[[NOAA_month]]]
            encoding = normalized_ascii
            template = NOAA/NOAA-%Y-%m.txt.tmpl

    [[SummaryByYear]]
        # Reports that summarize "by year"
        [[[NOAA_year]]]
            encoding = normalized_ascii
            template = NOAA/NOAA-%Y.txt.tmpl
        
    [[ToDate]]
        # Reports that show statistics "to date", such as day-to-date,
        # week-to-date, month-to-date, etc.
        [[[index]]]
            template = index.html.tmpl
        [[[statistics]]]
            template = statistics.html.tmpl
        [[[telemetry]]]
            template = telemetry.html.tmpl
        [[[tabular]]]
            template = tabular.html.tmpl
        [[[celestial]]]
            template = celestial.html.tmpl
            # Uncomment the following to generate a celestial page only once
            # an hour instead of every report cycle.
            # stale_age = 3600
        [[[RSS]]]
            template = rss.xml.tmpl
            
###############################################################################

# The CopyGenerator copies files from one location to another.

[CopyGenerator]

    # List of files to be copied only the first time the generator runs
    copy_once = seasons.css, seasons.js, favicon.ico, font/*.woff, font/*.woff2

    # List of files to be copied each time the generator runs
    # copy_always = 
        

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

# The ImageGenerator creates image plots of data.

[ImageGenerator]

    # This section lists all the images to be generated, what SQL types are to 
be included in them,
    # along with many plotting options. There is a default for almost 
everything. Nevertheless,
    # values for most options are included to make it easy to see and 
understand the options.
    #
    # Nearly all types in the wview-extended schema are included. However, 
because of the
    # 'skip_if_empty' option, only the plots with non-null data will be 
actually produced.
    #
    # Fonts can be anything accepted by the Python Imaging Library (PIL), which 
includes truetype
    # (.ttf), or PIL's own font format (.pil). Note that "font size" is only 
used with truetype
    # (.ttf) fonts. For others, font size is determined by the bit-mapped size, 
usually encoded in
    # the file name (e.g., courB010.pil). A relative path for a font is 
relative to the SKIN_ROOT.
    # If a font cannot be found, then a default font will be used.
    #
    # Colors can be specified any of three ways:
    #   1. Notation 0xBBGGRR;
    #   2. Notation #RRGGBB; or
    #   3. Using an English name, such as 'yellow', or 'blue'.
    # So, 0xff0000, #0000ff, or 'blue' would all specify a pure blue color.
    
    image_width = 500
    image_height = 180
    image_background_color = "#ffffff"
    
    chart_background_color = "#ffffff"
    chart_gridline_color = "#d0d0d0"

    # Setting to 2 or more might give a sharper image with fewer jagged edges
    anti_alias = 1

    top_label_font_path = font/OpenSans-Bold.ttf
    top_label_font_size = 14

    unit_label_font_path = font/OpenSans-Bold.ttf
    unit_label_font_size = 12
    unit_label_font_color = "#787878"

    bottom_label_font_path = font/OpenSans-Regular.ttf
    bottom_label_font_size = 12
    bottom_label_font_color = "#787878"
    bottom_label_offset = 3

    axis_label_font_path = font/OpenSans-Regular.ttf
    axis_label_font_size = 10
    axis_label_font_color = "#787878"
    
    # Options for the compass rose, used for progressive vector plots
    rose_label = N
    rose_label_font_path = font/OpenSans-Regular.ttf
    rose_label_font_size  = 9
    rose_label_font_color = "#222222"

    # Default colors for the plot lines. These can be overridden for
    # individual lines using option 'color'.
    chart_line_colors = "#4282b4", "#b44242", "#42b442", "#42b4b4", "#b442b4"
    
    # Default fill colors for bar charts. These can be overridden for
    # individual bar plots using option 'fill_color'.
    chart_fill_colors = "#72b2c4", "#c47272", "#72c472", "#72c4c4", "#c472c4"
    
    # Type of line. Options are 'solid' or 'none'.
    line_type = 'solid'

    # Size of marker in pixels
    marker_size = 8
    # Type of marker. Options are 'cross', 'x', 'circle', 'box', or 'none'.
    marker_type ='none'
        
    # The following option merits an explanation. The y-axis scale used for
    # plotting can be controlled using option 'yscale'. It is a 3-way tuple,
    # with values (ylow, yhigh, min_interval). If set to "None", a parameter is
    # set automatically, otherwise the value is used. However, in the case of
    # min_interval, what is set is the *minimum* y-axis tick interval.
    yscale = None, None, None

    # For progressive vector plots, you can choose to rotate the vectors.
    # Positive is clockwise.
    # For my area, westerlies overwhelmingly predominate, so by rotating
    # positive 90 degrees, the average vector will point straight up.
    vector_rotate = 90

    # This defines what fraction of the difference between maximum and minimum
    # horizontal chart bounds is considered a gap in the samples and should not
    # be plotted.
    # garberw
    # line_gap_fraction = 0.05
    line_gap_fraction = 0.3

    # This controls whether day/night bands will be shown. They only look good
    # on plots wide enough to show individual days such as day and week plots.
    show_daynight = true
    # These control the appearance of the bands if they are shown.
    # Here's a monochrome scheme:
    daynight_day_color   = "#fdfaff"
    daynight_night_color = "#dfdfe2"
    daynight_edge_color  = "#e0d8d8"
    # Here's an alternative, using a blue/yellow tint:
    #daynight_day_color   = "#fffff8"
    #daynight_night_color = "#f8f8ff"
    #daynight_edge_color  = "#fff8f8"

    # Default will be a line plot of width 1, without aggregation.
    # Can get overridden at any level.
    plot_type = line
    width = 1
    aggregate_type = none

    # Do not generate a plot if it does not have any non-null data:
    skip_if_empty = year

    # What follows is a list of subsections, each specifying a time span, such 
as a day, week,
    # month, or year. There's nothing special about them or their names: it's 
just a convenient way
    # to group plots with a time span in common. You could add a time span 
[[biweek_images]] and
    # add the appropriate time length, aggregation strategy, etc., without 
changing any code.
    #
    # Within each time span, each sub-subsection is the name of a plot to be 
generated for that
    # time span. The generated plot will be stored using that name, in whatever 
directory was
    # specified by option 'HTML_ROOT' in weewx.conf.
    #
    # With one final nesting (four brackets!) is the sql type of each line to 
be included within
    # that plot.
    #
    # Unless overridden, leaf nodes inherit options from their parent.

    [[day_images]]
        x_label_format = %H:%M
        bottom_label_format = %x %X
        time_length = 97200 # 27 hours
        
        [[[daybarometer]]]
            [[[[barometer]]]]
        
        [[[daytempdew]]]
            [[[[outTemp]]]]
            [[[[dewpoint]]]]
        
        [[[daytempfeel]]]
            [[[[windchill]]]]
            [[[[heatindex]]]]

        [[[dayhum]]]
            [[[[outHumidity]]]]

        [[[daytempin]]]
            [[[[inTemp]]]]

        [[[dayhumin]]]
            [[[[inHumidity]]]]

        # Plot extra temperatures.  You can add more temperature sensors here.
        # However, you might want to make a second plot if your system has more
        # than 3 extra sensors, otherwise the plots can become rather busy.
        [[[daytempext]]]
            yscale = None, None, 0.5
            [[[[extraTemp1]]]]
            [[[[extraTemp2]]]]
            [[[[extraTemp3]]]]
            [[[[extraTemp4]]]]

        [[[daytempext2]]]
            yscale = None, None, 0.5
            [[[[extraTemp5]]]]
            [[[[extraTemp6]]]]
            [[[[extraTemp7]]]]
            [[[[extraTemp8]]]]

        [[[dayhumext]]]
            [[[[extraHumid1]]]]
            [[[[extraHumid2]]]]
            [[[[extraHumid3]]]]
            [[[[extraHumid4]]]]

        [[[dayhumext2]]]
            [[[[extraHumid5]]]]
            [[[[extraHumid6]]]]
            [[[[extraHumid7]]]]
            [[[[extraHumid8]]]]

        [[[daytempcpu]]]
            yscale = None, None, 0.5
            [[[[cpuTemp1]]]]
            [[[[cpuTemp2]]]]
            [[[[cpuTemp3]]]]
            [[[[cpuTemp4]]]]

        [[[daytempcpu2]]]
            yscale = None, None, 0.5
            [[[[cpuTemp5]]]]
            [[[[cpuTemp6]]]]
            [[[[cpuTemp7]]]]
            [[[[cpuTemp8]]]]

        [[[daygas_resistance]]]
            [[[[gas_resistance]]]]
                aggregate_type = avg
                aggregate_interval = 120
                label = gas resistance (kOhm)
        [[[dayiaq]]]
            [[[[iaq]]]]
                aggregate_type = avg
                aggregate_interval = 120
                label = index of air quality (IAQ)

        [[[daytempcase]]]
            yscale = None, None, 0.5
            [[[[caseTemp1]]]]
            [[[[caseTemp2]]]]
            [[[[caseTemp3]]]]
            [[[[caseTemp4]]]]

        [[[daytempcase2]]]
            yscale = None, None, 0.5
            [[[[caseTemp5]]]]
            [[[[caseTemp6]]]]
            [[[[caseTemp7]]]]
            [[[[caseTemp8]]]]

        [[[dayhumcase]]]
            [[[[caseHumid1]]]]
            [[[[caseHumid2]]]]
            [[[[caseHumid3]]]]
            [[[[caseHumid4]]]]
            
        [[[dayhumcase2]]]
            [[[[caseHumid5]]]]
            [[[[caseHumid6]]]]
            [[[[caseHumid7]]]]
            [[[[caseHumid8]]]]

        [[[daytempleaf]]]
            [[[[leafTemp1]]]]
            [[[[leafTemp2]]]]

        [[[daywetleaf]]]
            [[[[leafWet1]]]]
            [[[[leafWet2]]]]

        [[[daytempsoil]]]
            [[[[soilTemp1]]]]
            [[[[soilTemp2]]]]
            [[[[soilTemp3]]]]
            [[[[soilTemp4]]]]

        [[[daymoistsoil]]]
            [[[[soilMoist1]]]]
            [[[[soilMoist2]]]]
            [[[[soilMoist3]]]]
            [[[[soilMoist4]]]]

        [[[daypm]]]
            [[[[pm1_0]]]]
            [[[[pm2_5]]]]
            [[[[pm10_0]]]]

        [[[daylightning]]]
            yscale = None, None, 1
            plot_type = bar
            [[[[lightning_strike_count]]]]
                aggregate_type = sum
                aggregate_interval = hour
                label = Lightning (hourly total)

        [[[dayrain]]]
            # Make sure the y-axis increment is at least 0.02 for the rain plot
            yscale = None, None, 0.02
            plot_type = bar
            # garberw was under subtopic
            aggregate_type = sum
            aggregate_interval = hour
            [[[[rain]]]]
                label = Rain (hourly total)
        
        [[[daywind]]]
            # garberw was under subtopic
            # line_type = None
            line_type = solid
            aggregate_interval = 3600
            marker_type = box
            marker_size = 2
            [[[[windSpeed]]]]
                aggregate_type = avg
            [[[[windGust]]]]
                aggregate_type = max
        
        [[[daywinddir]]]
            # Hardwire in the y-axis scale for wind direction
            yscale = 0.0, 360.0, 45.0
            # garberw was under subtopic
            # line_type = None
            line_type = solid
            marker_type = box
            marker_size = 2
            aggregate_type = avg
            aggregate_interval = 3600
            [[[[windDir]]]]

    
        [[[daywindvec]]]
            # garberw was under subtopic
            aggregate_type = avg
            aggregate_interval = 3600
            plot_type = vector
            [[[[windvec]]]]

        [[[dayET]]]
            # Make sure the y-axis increment is at least 0.02 for the ET plot
            yscale = None, None, 0.02
            plot_type = bar
            # garberw was under subtopic
            aggregate_type = sum
            aggregate_interval = hour
            [[[[ET]]]]
                label = Evapotranspiration (hourly total)

        [[[dayUV]]]
            # If your radiation sensor has a bounded scale, enforce that here.
#            yscale = 0, 16, 1
            # garberw was under subtopic
            aggregate_type = avg
            aggregate_interval = 600
            [[[[UV]]]]

        [[[dayradiation]]]
            [[[[radiation]]]]

        [[[dayrx]]]
            yscale = 0.0, 100.0, 25.0
            [[[[rxCheckPercent]]]]

        [[[dayvolt]]]
            [[[[consBatteryVoltage]]]]
            [[[[heatingVoltage]]]]
            [[[[supplyVoltage]]]]
            [[[[referenceVoltage]]]]

    [[week_images]]
        x_label_format = %d
        bottom_label_format = %x %X
        time_length = 604800 # 7 days
        aggregate_type = avg
        aggregate_interval = hour
        
        [[[weekbarometer]]]
            [[[[barometer]]]]
        
        [[[weektempdew]]]
            [[[[outTemp]]]]
            [[[[dewpoint]]]]
        
        [[[weektempfeel]]]
            [[[[windchill]]]]
            [[[[heatindex]]]]
        
        [[[weektempin]]]
            [[[[inTemp]]]]

        [[[weektempext]]]
            yscale = None, None, 0.5
            [[[[extraTemp1]]]]
            [[[[extraTemp2]]]]
            [[[[extraTemp3]]]]
            [[[[extraTemp4]]]]

        [[[weektempext2]]]
            yscale = None, None, 0.5
            [[[[extraTemp5]]]]
            [[[[extraTemp6]]]]
            [[[[extraTemp7]]]]
            [[[[extraTemp8]]]]

        [[[weekhum]]]
            [[[[outHumidity]]]]

        [[[weekhumin]]]
            [[[[inHumidity]]]]

        [[[weekhumext]]]
            [[[[extraHumid1]]]]
            [[[[extraHumid2]]]]
            [[[[extraHumid3]]]]
            [[[[extraHumid4]]]]

        [[[weekhumext2]]]
            [[[[extraHumid5]]]]
            [[[[extraHumid6]]]]
            [[[[extraHumid7]]]]
            [[[[extraHumid8]]]]

        [[[weektempcpu]]]
            yscale = None, None, 0.5
            [[[[cpuTemp1]]]]
            [[[[cpuTemp2]]]]
            [[[[cpuTemp3]]]]
            [[[[cpuTemp4]]]]

        [[[weektempcpu2]]]
            yscale = None, None, 0.5
            [[[[cpuTemp5]]]]
            [[[[cpuTemp6]]]]
            [[[[cpuTemp7]]]]
            [[[[cpuTemp8]]]]

        [[[weekgas_resistance]]]
            [[[[gas_resistance]]]]
                aggregate_type = avg
                aggregate_interval = hour
                label = gas resistance (kOhm)

        [[[weekiaq]]]
            [[[[iaq]]]]
                aggregate_type = avg
                aggregate_interval = hour
                label = index of air quality (IAQ)

        [[[weektempcase]]]
            yscale = None, None, 0.5
            [[[[caseTemp1]]]]
            [[[[caseTemp2]]]]
            [[[[caseTemp3]]]]
            [[[[caseTemp4]]]]

        [[[weektempcase2]]]
            yscale = None, None, 0.5
            [[[[caseTemp5]]]]
            [[[[caseTemp6]]]]
            [[[[caseTemp7]]]]
            [[[[caseTemp8]]]]

        [[[weekhumcase]]]
            [[[[caseHumid1]]]]
            [[[[caseHumid2]]]]
            [[[[caseHumid3]]]]
            [[[[caseHumid4]]]]
            
        [[[weekhumcase2]]]
            [[[[caseHumid5]]]]
            [[[[caseHumid6]]]]
            [[[[caseHumid7]]]]
            [[[[caseHumid8]]]]

        [[[weektempleaf]]]
            [[[[leafTemp1]]]]
            [[[[leafTemp2]]]]

        [[[weekwetleaf]]]
            [[[[leafWet1]]]]
            [[[[leafWet2]]]]

        [[[weektempsoil]]]
            [[[[soilTemp1]]]]
            [[[[soilTemp2]]]]
            [[[[soilTemp3]]]]
            [[[[soilTemp4]]]]

        [[[weekmoistsoil]]]
            [[[[soilMoist1]]]]
            [[[[soilMoist2]]]]
            [[[[soilMoist3]]]]
            [[[[soilMoist4]]]]

        [[[weekpm]]]
            [[[[pm1_0]]]]
            [[[[pm2_5]]]]
            [[[[pm10_0]]]]

        [[[weeklightning]]]
            yscale = None, None, 1
            plot_type = bar
            [[[[lightning_strike_count]]]]
                aggregate_type = sum
                aggregate_interval = day
                label = Lightning (daily total)

        [[[weekrain]]]
            yscale = None, None, 0.02
            plot_type = bar
            # garberw was under subtopic
            aggregate_type = sum
            aggregate_interval = day
            [[[[rain]]]]
                label = Rain (daily total)
        
        [[[weekwind]]]
            # garberw was under subtopic
            # garberw
            # line_type = None
            line_type = solid
            marker_type = box
            marker_size = 2
            [[[[windSpeed]]]]
                aggregate_type = avg
            [[[[windGust]]]]
                aggregate_type = max
        
        [[[weekwinddir]]]
            yscale = 0.0, 360.0, 45.0
            # garberw
            # line_type = None
            line_type = solid
            # --------
            marker_type = box
            marker_size = 2
            [[[[windDir]]]]
    
        [[[weekwindvec]]]
            # garberw was under subtopic
            plot_type = vector
            [[[[windvec]]]]

        [[[weekET]]]
            yscale = None, None, 0.02
            plot_type = bar
            # garberw was under subtopic
            aggregate_type = sum
            aggregate_interval = day
            [[[[ET]]]]
                label = Evapotranspiration (daily total)

        [[[weekUV]]]
#            yscale = 0, 16, 1
            [[[[UV]]]]

        [[[weekradiation]]]
            [[[[radiation]]]]

        [[[weekrx]]]
            yscale = 0.0, 100.0, 25.0
            [[[[rxCheckPercent]]]]

        [[[weekvolt]]]
            [[[[consBatteryVoltage]]]]
            [[[[heatingVoltage]]]]
            [[[[supplyVoltage]]]]
            [[[[referenceVoltage]]]]

    [[month_images]]
        x_label_format = %d
        bottom_label_format = %x %X
        time_length = 2592000 # 30 days
        aggregate_type = avg
        aggregate_interval = 10800 # 3 hours
        show_daynight = false
        
        [[[monthbarometer]]]
            [[[[barometer]]]]
        
        [[[monthtempdew]]]
            [[[[outTemp]]]]
            [[[[dewpoint]]]]
        
        [[[monthtempfeel]]]
            [[[[windchill]]]]
            [[[[heatindex]]]]
        
        [[[monthtempin]]]
            [[[[inTemp]]]]

        [[[monthtempext]]]
            yscale = None, None, 0.5
            [[[[extraTemp1]]]]
            [[[[extraTemp2]]]]
            [[[[extraTemp3]]]]
            [[[[extraTemp4]]]]

        [[[monthtempext2]]]
            yscale = None, None, 0.5
            [[[[extraTemp5]]]]
            [[[[extraTemp6]]]]
            [[[[extraTemp7]]]]
            [[[[extraTemp8]]]]

        [[[monthhum]]]
            [[[[outHumidity]]]]

        [[[monthhumin]]]
            [[[[inHumidity]]]]

        [[[monthhumext]]]
            [[[[extraHumid1]]]]
            [[[[extraHumid2]]]]
            [[[[extraHumid3]]]]
            [[[[extraHumid4]]]]

        [[[monthhumext2]]]
            [[[[extraHumid5]]]]
            [[[[extraHumid6]]]]
            [[[[extraHumid7]]]]
            [[[[extraHumid8]]]]

        [[[monthtempcpu]]]
            yscale = None, None, 0.5
            [[[[cpuTemp1]]]]
            [[[[cpuTemp2]]]]
            [[[[cpuTemp3]]]]
            [[[[cpuTemp4]]]]

        [[[monthtempcpu2]]]
            yscale = None, None, 0.5
            [[[[cpuTemp5]]]]
            [[[[cpuTemp6]]]]
            [[[[cpuTemp7]]]]
            [[[[cpuTemp8]]]]

        [[[monthgas_resistance]]]
            [[[[gas_resistance]]]]
                aggregate_type = avg
                aggregate_interval = 10800
                label = gas resistance (kOhm)

        [[[monthiaq]]]
            [[[[iaq]]]]
                aggregate_type = avg
                aggregate_interval = 10800
                label = index of air quality (IAQ)

        [[[monthtempcase]]]
            yscale = None, None, 0.5
            [[[[caseTemp1]]]]
            [[[[caseTemp2]]]]
            [[[[caseTemp3]]]]
            [[[[caseTemp4]]]]

        [[[monthtempcase2]]]
            yscale = None, None, 0.5
            [[[[caseTemp5]]]]
            [[[[caseTemp6]]]]
            [[[[caseTemp7]]]]
            [[[[caseTemp8]]]]

        [[[monthhumcase]]]
            [[[[caseHumid1]]]]
            [[[[caseHumid2]]]]
            [[[[caseHumid3]]]]
            [[[[caseHumid4]]]]
            
        [[[monthhumcase2]]]
            [[[[caseHumid5]]]]
            [[[[caseHumid6]]]]
            [[[[caseHumid7]]]]
            [[[[caseHumid8]]]]

        [[[monthtempleaf]]]
            [[[[leafTemp1]]]]
            [[[[leafTemp2]]]]

        [[[monthwetleaf]]]
            [[[[leafWet1]]]]
            [[[[leafWet2]]]]

        [[[monthtempsoil]]]
            [[[[soilTemp1]]]]
            [[[[soilTemp2]]]]
            [[[[soilTemp3]]]]
            [[[[soilTemp4]]]]

        [[[monthmoistsoil]]]
            [[[[soilMoist1]]]]
            [[[[soilMoist2]]]]
            [[[[soilMoist3]]]]
            [[[[soilMoist4]]]]

        [[[monthpm]]]
            [[[[pm1_0]]]]
            [[[[pm2_5]]]]
            [[[[pm10_0]]]]

        [[[monthlightning]]]
            yscale = None, None, 1
            plot_type = bar
            [[[[lightning_strike_count]]]]
                aggregate_type = sum
                aggregate_interval = day
                label = Lightning (daily total)

        [[[monthrain]]]
            yscale = None, None, 0.02
            plot_type = bar
            # garberw was under subtopic
            aggregate_type = sum
            aggregate_interval = day
            [[[[rain]]]]
                label = Rain (daily total)
        
        [[[monthwind]]]
            # garberw was under subtopic
            # garberw
            # line_type = None
            line_type = solid
            marker_type = box
            marker_size = 2
            [[[[windSpeed]]]]
                aggregate_type = avg
            [[[[windGust]]]]
                aggregate_type = max
        
        [[[monthwinddir]]]
            yscale = 0.0, 360.0, 45.0
            # garberw
            # line_type = None
            line_type = solid
            # --------
            marker_type = box
            marker_size = 2
            [[[[windDir]]]]
    
        [[[monthwindvec]]]
            # garberw was under subtopic
            plot_type = vector
            [[[[windvec]]]]

        [[[monthET]]]
            yscale = None, None, 0.02
            plot_type = bar
            # garberw was under subtopic
            aggregate_type = sum
            aggregate_interval = day
            [[[[ET]]]]
                label = Evapotranspiration (daily total)

        [[[monthUV]]]
#            yscale = 0, 16, 1
            [[[[UV]]]]

        [[[monthradiation]]]
            [[[[radiation]]]]

        [[[monthrx]]]
            yscale = 0.0, 100.0, 25.0
            [[[[rxCheckPercent]]]]

        [[[monthvolt]]]
            [[[[consBatteryVoltage]]]]
            [[[[heatingVoltage]]]]
            [[[[supplyVoltage]]]]
            [[[[referenceVoltage]]]]

    [[year_images]]
        x_label_format = %m
        bottom_label_format = %x %X
        time_length = 31536000 # 365 days
        aggregate_type = avg
        aggregate_interval = day
        show_daynight = false
        
        [[[yearbarometer]]]
            [[[[barometer]]]]

        [[[yeartempdew]]]
            [[[[outTemp]]]]
            [[[[dewpoint]]]]
        
        [[[yeartempfeel]]]
            [[[[windchill]]]]
            [[[[heatindex]]]]
        
        [[[yeartempin]]]
            [[[[inTemp]]]]

        [[[yeartempext]]]
            yscale = None, None, 0.5
            [[[[extraTemp1]]]]
            [[[[extraTemp2]]]]
            [[[[extraTemp3]]]]
            [[[[extraTemp4]]]]

        [[[yeartempext2]]]
            yscale = None, None, 0.5
            [[[[extraTemp5]]]]
            [[[[extraTemp6]]]]
            [[[[extraTemp7]]]]
            [[[[extraTemp8]]]]

        [[[yearhum]]]
            [[[[outHumidity]]]]

        [[[yearhumin]]]
            [[[[inHumidity]]]]

        [[[yearhumext]]]
            [[[[extraHumid1]]]]
            [[[[extraHumid2]]]]
            [[[[extraHumid3]]]]
            [[[[extraHumid4]]]]

        [[[yearhumext2]]]
            [[[[extraHumid5]]]]
            [[[[extraHumid6]]]]
            [[[[extraHumid7]]]]
            [[[[extraHumid8]]]]

        [[[yeartempcpu]]]
            yscale = None, None, 0.5
            [[[[cpuTemp1]]]]
            [[[[cpuTemp2]]]]
            [[[[cpuTemp3]]]]
            [[[[cpuTemp4]]]]

        [[[yeartempcpu2]]]
            yscale = None, None, 0.5
            [[[[cpuTemp5]]]]
            [[[[cpuTemp6]]]]
            [[[[cpuTemp7]]]]
            [[[[cpuTemp8]]]]

        [[[yeargas_resistance]]]
            [[[[gas_resistance]]]]
                aggregate_type = avg
                aggregate_interval = day
                label = gas resistance (kOhm)

        [[[yeariaq]]]
            [[[[iaq]]]]
                aggregate_type = avg
                aggregate_interval = day
                label = index of air quality (IAQ)

        [[[yeartempcase]]]
            yscale = None, None, 0.5
            [[[[caseTemp1]]]]
            [[[[caseTemp2]]]]
            [[[[caseTemp3]]]]
            [[[[caseTemp4]]]]

        [[[yeartempcase2]]]
            yscale = None, None, 0.5
            [[[[caseTemp5]]]]
            [[[[caseTemp6]]]]
            [[[[caseTemp7]]]]
            [[[[caseTemp8]]]]

        [[[yearhumcase]]]
            [[[[caseHumid1]]]]
            [[[[caseHumid2]]]]
            [[[[caseHumid3]]]]
            [[[[caseHumid4]]]]
            
        [[[yearhumcase2]]]
            [[[[caseHumid5]]]]
            [[[[caseHumid6]]]]
            [[[[caseHumid7]]]]
            [[[[caseHumid8]]]]

        [[[yeartempleaf]]]
            [[[[leafTemp1]]]]
            [[[[leafTemp2]]]]

        [[[yearwetleaf]]]
            [[[[leafWet1]]]]
            [[[[leafWet2]]]]

        [[[yeartempsoil]]]
            [[[[soilTemp1]]]]
            [[[[soilTemp2]]]]
            [[[[soilTemp3]]]]
            [[[[soilTemp4]]]]

        [[[yearmoistsoil]]]
            [[[[soilMoist1]]]]
            [[[[soilMoist2]]]]
            [[[[soilMoist3]]]]
            [[[[soilMoist4]]]]

        [[[yearpm]]]
            [[[[pm1_0]]]]
            [[[[pm2_5]]]]
            [[[[pm10_0]]]]

        [[[yearlightning]]]
            yscale = None, None, 1
            plot_type = bar
            [[[[lightning_strike_count]]]]
                aggregate_type = sum
                aggregate_interval = week
                label = Lightning (weekly total)

        [[[yearrain]]]
            yscale = None, None, 0.02
            plot_type = bar
            # garberw was under subtopic
            aggregate_type = sum
            aggregate_interval = week
            [[[[rain]]]]
                label = Rain (weekly total)

        [[[yearwind]]]
            # garberw was under subtopic
            # garberw
            # line_type = None
            line_type = solid
            marker_type = box
            marker_size = 2
            [[[[windSpeed]]]]
                aggregate_type = avg
            [[[[windGust]]]]
                aggregate_type = max
        
        [[[yearwinddir]]]
            yscale = 0.0, 360.0, 45.0
            # garberw
            # line_type = None
            line_type = solid
            # --------
            marker_type = box
            marker_size = 2
            [[[[windDir]]]]

        [[[yearwindvec]]]
            # garberw was under subtopic
            plot_type = vector
            [[[[windvec]]]]

        [[[yearET]]]
            yscale = None, None, 0.02
            plot_type = bar
            # garberw was under subtopic
            aggregate_type = sum
            aggregate_interval = week
            [[[[ET]]]]
                label = Evapotranspiration (weekly total)

        [[[yearUV]]]
#            yscale = 0, 16, 1
            [[[[UV]]]]

        [[[yearradiation]]]
            [[[[radiation]]]]

        [[[yearrx]]]
            yscale = 0.0, 100.0, 25.0
            [[[[rxCheckPercent]]]]

        [[[yearvolt]]]
            [[[[consBatteryVoltage]]]]
            [[[[heatingVoltage]]]]
            [[[[supplyVoltage]]]]
            [[[[referenceVoltage]]]]

        # This is how to generate a plot of high/low temperatures for the year:
#        [[[yearhilow]]]
#            [[[[hi]]]]
#                data_type = outTemp
#                aggregate_type = max
#                label = High
#            [[[[low]]]]
#                data_type = outTemp
#                aggregate_type = min
#                label = Low Temperature


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

[Generators]
        # The list of generators that are to be run:
        generator_list = weewx.cheetahgenerator.CheetahGenerator, 
weewx.imagegenerator.ImageGenerator, weewx.reportengine.CopyGenerator

Reply via email to