From 2c9989eb1b7ff57f8a91ee4e1e13a2ffc6de32cd Mon Sep 17 00:00:00 2001 From: Tom Keffer Date: Mon, 4 Jan 2021 05:20:28 -0800 Subject: [PATCH] Set log_failure to True in [StdReport]. Change test suites to follow. V4.3.0b4 --- bin/weecfg/__init__.py | 16 +- .../tests/expected/weewx43_expected.conf | 589 ++++++++++++++++++ ...pected.conf => weewx43_user_expected.conf} | 2 +- bin/weecfg/tests/test_config.py | 20 +- bin/weecfg/tests/weewx42.conf | 589 ++++++++++++++++++ bin/weewx/__init__.py | 4 +- docs/changes.txt | 6 +- docs/upgrading.htm | 33 + makefile | 2 +- setup.py | 4 +- weewx.conf | 6 +- 11 files changed, 1257 insertions(+), 14 deletions(-) create mode 100644 bin/weecfg/tests/expected/weewx43_expected.conf rename bin/weecfg/tests/expected/{weewx42_user_expected.conf => weewx43_user_expected.conf} (99%) create mode 100644 bin/weecfg/tests/weewx42.conf diff --git a/bin/weecfg/__init__.py b/bin/weecfg/__init__.py index 41e2f20b..405b7a9b 100644 --- a/bin/weecfg/__init__.py +++ b/bin/weecfg/__init__.py @@ -1,6 +1,6 @@ # coding: utf-8 # -# Copyright (c) 2009-2020 Tom Keffer +# Copyright (c) 2009-2021 Tom Keffer # # See the file LICENSE.txt for your rights. # @@ -384,6 +384,8 @@ def update_config(config_dict): update_to_v42(config_dict) + update_to_v43(config_dict) + def merge_config(config_dict, template_dict): """Merge the template (distribution) dictionary into the user's dictionary. @@ -1265,6 +1267,18 @@ def update_to_v42(config_dict): 'services should be run and in what order.'] config_dict['version'] = '4.2.0' + +def update_to_v43(config_dict): + """Update a configuration file to V4.3 + + - Set [StdReport] / log_failure to True + """ + if 'StdReport' in config_dict and 'log_failure' in config_dict['StdReport']: + config_dict['StdReport']['log_failure'] = True + + config_dict['version'] = '4.3.0' + + def update_units(config_dict, unit_system_name, logger=None, debug=False): """Update [StdReport][Defaults] with the desired unit system""" diff --git a/bin/weecfg/tests/expected/weewx43_expected.conf b/bin/weecfg/tests/expected/weewx43_expected.conf new file mode 100644 index 00000000..dcb5dadd --- /dev/null +++ b/bin/weecfg/tests/expected/weewx43_expected.conf @@ -0,0 +1,589 @@ +# WEEWX CONFIGURATION FILE +# +# Copyright (c) 2009-2020 Tom Keffer +# 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.3.0 + +############################################################################## + +# This section is for information about the station. + +[Station] + + # Description of the station location + location = "My Little Town, Oregon" + + # Latitude in decimal degrees. Negative for southern hemisphere + latitude = 0.00 + # Longitude in decimal degrees. Negative for western hemisphere. + longitude = 0.00 + + # Altitude of the station, with unit it is in. This is downloaded from + # from the station if the hardware supports it. + altitude = 700, 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 = unspecified + + # If you have a website, you may specify an URL + #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) + week_start = 6 + +############################################################################## + +# 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 = false + + [[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 = True + + # Each of the following subsections defines a report that will be run. + # See the customizing guide to change the units, plot types and line + # colors, modify the fonts, display additional sensor data, and other + # customizations. Many of those changes can be made here by overriding + # parameters, or by modifying templates within the skin itself. + + [[SeasonsReport]] + # The SeasonsReport uses the 'Seasons' skin, which contains the + # images, templates and plots for the report. + skin = Seasons + enable = true + + [[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 = 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 = 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', 'hPa', or 'kPa' + group_rain = inch # Options are 'inch', 'cm', or 'mm' + group_rainrate = inch_per_hour # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour' + group_speed = mile_per_hour # Options are 'mile_per_hour', 'km_per_hour', 'knot', or 'meter_per_second' + group_speed2 = mile_per_hour2 # Options are 'mile_per_hour2', 'km_per_hour2', 'knot2', or 'meter_per_second2' + group_temperature = degree_F # Options are 'degree_F' or 'degree_C' + + # The following section sets the formatting for each type of unit. + [[[[StringFormats]]]] + + centibar = %.0f + cm = %.2f + cm_per_hour = %.2f + degree_C = %.1f + degree_F = %.1f + degree_compass = %.0f + foot = %.0f + hPa = %.1f + hour = %.1f + inHg = %.3f + inch = %.2f + inch_per_hour = %.2f + km = %.1f + km_per_hour = %.0f + km_per_hour2 = %.1f + knot = %.0f + knot2 = %.1f + kPa = %.2f + mbar = %.1f + meter = %.0f + meter_per_second = %.1f + meter_per_second2 = %.1f + mile = %.1f + mile_per_hour = %.0f + mile_per_hour2 = %.1f + mm = %.1f + mmHg = %.1f + mm_per_hour = %.1f + percent = %.0f + second = %.0f + uv_index = %.1f + volt = %.1f + watt_per_meter_squared = %.0f + NONE = " N/A" + + # The following section overrides the label used for each type of unit + [[[[Labels]]]] + + meter = " meter", " meters" # You may prefer "metre". + day = " day", " days" + hour = " hour", " hours" + minute = " minute", " minutes" + second = " second", " seconds" + NONE = "" + + # The following section sets the format for each time scale. + # The values below will work in every locale, but they may not look + # particularly attractive. + [[[[TimeFormats]]]] + + hour = %H:%M + day = %X + week = %X (%A) + month = %x %X + year = %x %X + rainyear = %x %X + current = %x %X + ephem_day = %X + ephem_year = %x %X + + [[[[Ordinates]]]] + + # Ordinal directions. The last one is for no wind direction + directions = N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW, N/A + + # The following section sets the base temperatures used for the + # calculation of heating, cooling, and growing degree-days. + [[[[DegreeDays]]]] + + # Base temperature for heating days, with unit: + heating_base = 65, degree_F + # Base temperature for cooling days, with unit: + cooling_base = 65, degree_F + # Base temperature for growing days, with unit: + growing_base = 50, degree_F + + # A trend takes a difference across a time period. The following + # section sets the time period, and how big an error is allowed to + # still be counted as the start or end of a period. + [[[[Trend]]]] + + time_delta = 10800 # 3 hours + time_grace = 300 # 5 minutes + + # The labels to be used for each observation type + [[[Labels]]] + + # Set to hemisphere abbreviations suitable for your location: + hemispheres = N, S, E, W + + # Formats to be used for latitude whole degrees, longitude whole + # degrees, and minutes: + latlon_formats = %02d, %03d, %05.2f + + # Generic labels, keyed by an observation type. + [[[[Generic]]]] + barometer = Barometer + dewpoint = Dew Point + ET = ET + heatindex = Heat Index + inHumidity = Inside Humidity + inTemp = Inside 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 + 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_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 + +############################################################################## + +# This section defines various databases. + +[Databases] + + # A SQLite database is simply a single file + [[archive_sqlite]] + database_name = weewx.sdb + database_type = SQLite + + # MySQL + [[archive_mysql]] + database_name = weewx + database_type = MySQL + +############################################################################## + +# 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 = 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 diff --git a/bin/weecfg/tests/expected/weewx42_user_expected.conf b/bin/weecfg/tests/expected/weewx43_user_expected.conf similarity index 99% rename from bin/weecfg/tests/expected/weewx42_user_expected.conf rename to bin/weecfg/tests/expected/weewx43_user_expected.conf index dcd75205..42514d91 100644 --- a/bin/weecfg/tests/expected/weewx42_user_expected.conf +++ b/bin/weecfg/tests/expected/weewx43_user_expected.conf @@ -26,7 +26,7 @@ log_failure = True socket_timeout = 20 # Do not modify this - it is used by setup.py when installing and updating. -version = 4.3.0b3 +version = 4.3.0b4 ############################################################################## diff --git a/bin/weecfg/tests/test_config.py b/bin/weecfg/tests/test_config.py index 065f3c99..c70e1dae 100644 --- a/bin/weecfg/tests/test_config.py +++ b/bin/weecfg/tests/test_config.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2009-2020 Tom Keffer +# Copyright (c) 2009-2021 Tom Keffer # # See the file LICENSE.txt for your full rights. # @@ -429,6 +429,20 @@ class ConfigTest(LineTest): self._check_against_expected(config_dict, 'expected/weewx42_expected.conf') + def test_upgrade_v43(self): + """Test an upgrade of the stock v4.1 weewx.conf to V4.2""" + + # Start with the Version 4.1 weewx.conf file: + config_dict = configobj.ConfigObj('weewx42.conf', encoding='utf-8') + + # Upgrade the V4.2 configuration dictionary to V4.3: + weecfg.update_to_v43(config_dict) + + # with open('expected/weewx43_expected.conf', 'wb') as fd: + # config_dict.write(fd) + + self._check_against_expected(config_dict, 'expected/weewx43_expected.conf') + def test_merge(self): """Test an upgrade against a typical user's configuration file""" @@ -441,10 +455,10 @@ class ConfigTest(LineTest): # First update, then merge: weecfg.update_and_merge(config_dict, template) - # with open('expected/weewx42_user_expected.conf', 'wb') as fd: + # with open('expected/weewx43_user_expected.conf', 'wb') as fd: # config_dict.write(fd) - self._check_against_expected(config_dict, 'expected/weewx42_user_expected.conf') + self._check_against_expected(config_dict, 'expected/weewx43_user_expected.conf') def test_driver_info(self): """Test the discovery and listing of drivers.""" diff --git a/bin/weecfg/tests/weewx42.conf b/bin/weecfg/tests/weewx42.conf new file mode 100644 index 00000000..c677d91e --- /dev/null +++ b/bin/weecfg/tests/weewx42.conf @@ -0,0 +1,589 @@ +# WEEWX CONFIGURATION FILE +# +# Copyright (c) 2009-2020 Tom Keffer +# 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.3.0 + +############################################################################## + +# This section is for information about the station. + +[Station] + + # Description of the station location + location = "My Little Town, Oregon" + + # Latitude in decimal degrees. Negative for southern hemisphere + latitude = 0.00 + # Longitude in decimal degrees. Negative for western hemisphere. + longitude = 0.00 + + # Altitude of the station, with unit it is in. This is downloaded from + # from the station if the hardware supports it. + altitude = 700, 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 = unspecified + + # If you have a website, you may specify an URL + #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) + week_start = 6 + +############################################################################## + +# 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 = false + + [[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 = true + + [[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 = 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 = 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', 'hPa', or 'kPa' + group_rain = inch # Options are 'inch', 'cm', or 'mm' + group_rainrate = inch_per_hour # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour' + group_speed = mile_per_hour # Options are 'mile_per_hour', 'km_per_hour', 'knot', or 'meter_per_second' + group_speed2 = mile_per_hour2 # Options are 'mile_per_hour2', 'km_per_hour2', 'knot2', or 'meter_per_second2' + group_temperature = degree_F # Options are 'degree_F' or 'degree_C' + + # The following section sets the formatting for each type of unit. + [[[[StringFormats]]]] + + centibar = %.0f + cm = %.2f + cm_per_hour = %.2f + degree_C = %.1f + degree_F = %.1f + degree_compass = %.0f + foot = %.0f + hPa = %.1f + hour = %.1f + inHg = %.3f + inch = %.2f + inch_per_hour = %.2f + km = %.1f + km_per_hour = %.0f + km_per_hour2 = %.1f + knot = %.0f + knot2 = %.1f + kPa = %.2f + mbar = %.1f + meter = %.0f + meter_per_second = %.1f + meter_per_second2 = %.1f + mile = %.1f + mile_per_hour = %.0f + mile_per_hour2 = %.1f + mm = %.1f + mmHg = %.1f + mm_per_hour = %.1f + percent = %.0f + second = %.0f + uv_index = %.1f + volt = %.1f + watt_per_meter_squared = %.0f + NONE = " N/A" + + # The following section overrides the label used for each type of unit + [[[[Labels]]]] + + meter = " meter", " meters" # You may prefer "metre". + day = " day", " days" + hour = " hour", " hours" + minute = " minute", " minutes" + second = " second", " seconds" + NONE = "" + + # The following section sets the format for each time scale. + # The values below will work in every locale, but they may not look + # particularly attractive. + [[[[TimeFormats]]]] + + hour = %H:%M + day = %X + week = %X (%A) + month = %x %X + year = %x %X + rainyear = %x %X + current = %x %X + ephem_day = %X + ephem_year = %x %X + + [[[[Ordinates]]]] + + # Ordinal directions. The last one is for no wind direction + directions = N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW, N/A + + # The following section sets the base temperatures used for the + # calculation of heating, cooling, and growing degree-days. + [[[[DegreeDays]]]] + + # Base temperature for heating days, with unit: + heating_base = 65, degree_F + # Base temperature for cooling days, with unit: + cooling_base = 65, degree_F + # Base temperature for growing days, with unit: + growing_base = 50, degree_F + + # A trend takes a difference across a time period. The following + # section sets the time period, and how big an error is allowed to + # still be counted as the start or end of a period. + [[[[Trend]]]] + + time_delta = 10800 # 3 hours + time_grace = 300 # 5 minutes + + # The labels to be used for each observation type + [[[Labels]]] + + # Set to hemisphere abbreviations suitable for your location: + hemispheres = N, S, E, W + + # Formats to be used for latitude whole degrees, longitude whole + # degrees, and minutes: + latlon_formats = "%02d", "%03d", "%05.2f" + + # Generic labels, keyed by an observation type. + [[[[Generic]]]] + barometer = Barometer + dewpoint = Dew Point + ET = ET + heatindex = Heat Index + inHumidity = Inside Humidity + inTemp = Inside 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 + 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_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 + +############################################################################## + +# This section defines various databases. + +[Databases] + + # A SQLite database is simply a single file + [[archive_sqlite]] + database_name = weewx.sdb + database_type = SQLite + + # MySQL + [[archive_mysql]] + database_name = weewx + database_type = MySQL + +############################################################################## + +# 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 = "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 diff --git a/bin/weewx/__init__.py b/bin/weewx/__init__.py index 43e52f54..f985727a 100644 --- a/bin/weewx/__init__.py +++ b/bin/weewx/__init__.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2009-2020 Tom Keffer +# Copyright (c) 2009-2021 Tom Keffer # # See the file LICENSE.txt for your full rights. # @@ -7,7 +7,7 @@ from __future__ import absolute_import import time -__version__="4.3.0b3" +__version__="4.3.0b4" # Holds the program launch time in unix epoch seconds: # Useful for calculating 'uptime.' diff --git a/docs/changes.txt b/docs/changes.txt index a8dee6a4..efc9736c 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -8,7 +8,8 @@ incorrectly calculated. This version includes a patch to fix the problem. It runs once at startup. Fixes issue #623. The WMR200 driver is no longer supported. An unsupported version can be found -at https://github.com/weewx/weewx-wmr200. +at https://github.com/weewx/weewx-wmr200. Support for LaCrosse WS23xx and +Oregon WMR300 will continue. Service weewx.wxxtypes.StdDelta was inadvertently left out of the list of services to be run. Fortunately, it is not used. Yet. Added it back in. @@ -41,6 +42,9 @@ databases. PR #627. Thanks to user edi-x! Allow wind vectors to be converted to unit of beaufort. Fixes issue #629. +Option log_failure under [StdReport] is set to True by the upgrade process. +See the Upgrading Guide. + 4.2.0 10/26/2020 diff --git a/docs/upgrading.htm b/docs/upgrading.htm index 69fa8cf7..acbbce16 100644 --- a/docs/upgrading.htm +++ b/docs/upgrading.htm @@ -300,6 +300,39 @@ sudo apt-get install weewx +

Option log_failure set to True

+

+ The option log_failure under [StdReport] controls + whether to log failures into the system log. It was previously set to False. + The upgrade process will set it to True, so that users can better see failure + modes. +

+ + + + + + + + + + +
V4.2 and earlier4.3
+
+[StdReport]
+    ...
+    log_failure = False
+    ...
+
+
+
+[StdReport]
+    ...
+    log_failure = True
+    ...
+
+
+

Upgrading to V4.2

diff --git a/makefile b/makefile index b12c2d03..c895c161 100644 --- a/makefile +++ b/makefile @@ -153,7 +153,7 @@ upload-docs: # update the version in all relevant places VDOCS=readme.htm customizing.htm devnotes.htm hardware.htm usersguide.htm upgrading.htm utilities.htm -VCONFIGS=weewx.conf bin/weecfg/tests/expected/weewx42_user_expected.conf +VCONFIGS=weewx.conf bin/weecfg/tests/expected/weewx43_user_expected.conf version: for f in $(VDOCS); do \ sed -e 's/^Version: [0-9].*/Version: $(MMVERSION)/' docs/$$f > docs/$$f.tmp; \ diff --git a/setup.py b/setup.py index cbbb1460..855d4d70 100755 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ # # weewx --- A simple, high-performance weather station server # -# Copyright (c) 2009-2020 Tom Keffer +# Copyright (c) 2009-2021 Tom Keffer # # See the file LICENSE.txt for your full rights. # @@ -31,7 +31,7 @@ from distutils.command.install_lib import install_lib from distutils.core import setup from distutils.debug import DEBUG -VERSION = "4.3.0b3" +VERSION = "4.3.0b4" if sys.version_info < (2, 7): log.fatal('WeeWX requires Python V2.7 or greater.') diff --git a/weewx.conf b/weewx.conf index 30d449a6..229efc56 100644 --- a/weewx.conf +++ b/weewx.conf @@ -1,6 +1,6 @@ # WEEWX CONFIGURATION FILE # -# Copyright (c) 2009-2020 Tom Keffer +# Copyright (c) 2009-2021 Tom Keffer # See the file LICENSE.txt for your rights. ############################################################################## @@ -23,7 +23,7 @@ log_failure = True socket_timeout = 20 # Do not modify this. It is used when installing and updating weewx. -version = 4.3.0b3 +version = 4.3.0b4 ############################################################################## @@ -146,7 +146,7 @@ version = 4.3.0b3 log_success = True # Whether to log an unsuccessful operation - log_failure = False + log_failure = True # Each of the following subsections defines a report that will be run. # See the customizing guide to change the units, plot types and line