poblabs / weewx-belchertown

A clean and modern weewx skin with real time streaming updates, forecast data and interactive charts. View it in action at BelchertownWeather.com
https://belchertownweather.com
GNU General Public License v3.0
209 stars 111 forks source link

wee_reports - UnboundLocalError: local variable 'beaufort0' referenced before assignment #525

Closed mercurystorm closed 3 years ago

mercurystorm commented 3 years ago

Please don't delete these questions! They are asked almost with every issue - answering them as below saves us time from asking them!

Describe the bug Unable to generate report with latest github pull

ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.cheetahgenerator.CheetahGenerator' Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: local variable 'beaufort0' referenced before assignment Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: Traceback (most recent call last): Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: File "/usr/share/weewx/weewx/reportengine.py", line 196, in run Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: obj.start() Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: File "/usr/share/weewx/weewx/reportengine.py", line 281, in start Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: self.run() Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: File "/usr/share/weewx/weewx/cheetahgenerator.py", line 149, in run Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: ngen = self.generate(gen_dict[section_name], self.gen_ts) Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: File "/usr/share/weewx/weewx/cheetahgenerator.py", line 219, in generate Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: ngen += self.generate(section[subsection], gen_ts) Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: File "/usr/share/weewx/weewx/cheetahgenerator.py", line 219, in generate Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: ngen += self.generate(section[subsection], gen_ts) Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: File "/usr/share/weewx/weewx/cheetahgenerator.py", line 308, in generate Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: default_binding) Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: File "/usr/share/weewx/weewx/cheetahgenerator.py", line 379, in _getSearchList Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: searchList += obj.get_extension_list(timespan, db_lookup) Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: File "/usr/share/weewx/user/belchertown.py", line 1563, in get_extension_list Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: 'beaufort0': beaufort0, Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: UnboundLocalError: local variable 'beaufort0' referenced before assignment Jan 11 23:34:10 rpi-weewx wee_reports[1067] ERROR weewx.reportengine: Generator terminated

Version of the skin you're using Latest github pull

To Reproduce Steps to reproduce the behavior:

  1. run wee_reports

Expected behavior Reports are generated without error

Screenshots If applicable, add screenshots to help explain your problem.

Device Information (please complete the following information):

Additional context Add any other context about the problem here. Maybe a potential fix?

HELP WANTED If you have a fix for this, please submit a pull request against the development branch!

mercurystorm commented 3 years ago

Not sure its the correct way - but fixed by ammending /usr/share/weewx/user/belchertown.py

and adding:

  94 beaufort0 = ""
  95 beaufort1 = ""
  96 beaufort2 = ""
  97 beaufort3 = ""
  98 beaufort4 = ""
  99 beaufort5 = ""
 100 beaufort6 = ""
 101 beaufort7 = ""
 102 beaufort8 = ""
 103 beaufort9 = ""
 104 beaufort10 = ""
 105 beaufort11 = ""
 106 beaufort12 = ""

and

222         global aqi
 223         global aqi_category
 224         global aqi_time
 225         global aqi_location
 226         global beaufort0
 227         global beaufort1
 228         global beaufort2
 229         global beaufort3
 230         global beaufort4
 231         global beaufort5
 232         global beaufort6
 233         global beaufort7
 234         global beaufort8
 235         global beaufort9
 236         global beaufort10
 237         global beaufort11
 238         global beaufort12
uajqq commented 3 years ago

See if the pull request listed above fixes the issue.

uajqq commented 3 years ago

EDIT: more general pull request created, please see #528

mercurystorm commented 3 years ago

Nope, still getting the unbound error after pulling 528

uajqq commented 3 years ago

When did you pull? Can you try again now? I force-pushed an update just a few minutes ago.

jmceara commented 3 years ago

Same here. Just downloaded current git version.

root@Skynet:/var/www/html/weewx# wee_reports
Using configuration file /etc/weewx/weewx.conf
Generating for all time
Traceback (most recent call last):
  File "/usr/share/weewx/weewx/reportengine.py", line 196, in run
    obj.start()
  File "/usr/share/weewx/weewx/reportengine.py", line 281, in start
    self.run()
  File "/usr/share/weewx/weewx/cheetahgenerator.py", line 149, in run
    ngen = self.generate(gen_dict[section_name], self.gen_ts)
  File "/usr/share/weewx/weewx/cheetahgenerator.py", line 219, in generate
    ngen += self.generate(section[subsection], gen_ts)
  File "/usr/share/weewx/weewx/cheetahgenerator.py", line 219, in generate
    ngen += self.generate(section[subsection], gen_ts)
  File "/usr/share/weewx/weewx/cheetahgenerator.py", line 308, in generate
    default_binding)
  File "/usr/share/weewx/weewx/cheetahgenerator.py", line 379, in _getSearchList
    searchList += obj.get_extension_list(timespan, db_lookup)
  File "/usr/share/weewx/user/belchertown.py", line 1563, in get_extension_list
    'beaufort0': beaufort0,
UnboundLocalError: local variable 'beaufort0' referenced before assignment
uajqq commented 3 years ago

Can you post your weewx.conf?

mercurystorm commented 3 years ago

`# WEEWX CONFIGURATION FILE #

Copyright (c) 2009-2015 Tom Keffer tkeffer@gmail.com

See the file LICENSE.txt for your rights.

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

This section is for general configuration information.

Set to 1 for extra debug info, otherwise comment it out or set to zero

debug = 1

Root directory of the weewx data file hierarchy for this station

WEEWX_ROOT = /

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.2.0b1

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

This section is for information about the station.

[Station]

# Description of the station location
location = Fiddaun - Craughwell - County Galway (IE)

# Latitude and longitude in decimal degrees
latitude = 53.283
longitude = -9.118

# Altitude of the station, with unit it is in. This is downloaded from
# from the station if the hardware supports it.
altitude = 57, meter

# 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 = SDR

# If you have a website, you may specify an URL
station_url = https://stormy.ie/weather/live

# 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 = 0

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

[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

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

[SDR]

This section is for the software-defined radio driver.

# The driver to use
driver = user.sdr
cmd = /usr/local/bin/rtl_433 -f 868.3M -R 119 -F json

[[sensor_map]]
    outTemp = temperature.104.Bresser5in1Packet
    outHumidity = humidity.104.Bresser5in1Packet
    windSpeed = wind_speed.104.Bresser5in1Packet
    windDir = wind_dir.104.Bresser5in1Packet
    windGust = gust_speed.104.Bresser5in1Packet
    rain_total = rain_total.104.Bresser5in1Packet
    log_unknown_sensors = True
    log_unmapped_sensors = True

[[deltas]]
    rain = rain_total

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

This section is for uploading data to Internet sites

[StdRESTful]

[[MQTT]]
    server_url = mqtt://weewx:***************@*****.*****.**:8883/
    topic = weather
    unit_system = METRICWX
    binding = archive, loop
    aggregation = aggregate
    [[[tls]]]
        ca_certs = /etc/ssl/certs/ca-certificates.crt
        tls_version = tlsv2
    [[[inputs]]]
        [[[[windSpeed]]]]
            name = windSpeed_mps
            units = km_per_hour
        [[[[windGust]]]]
            name = windGust_mps
            units = km_per_hour

[[StationRegistry]]
    # To register this weather station with weewx, set this to true
    register_this_station = true

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

    # If you wish to do this, set the option 'enable' to true,
    # and specify a username and password.
    # To guard against parsing errors, put the password in quotes.
    enable = false
    username = replace_me
    password = replace_me

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

    # If you wish to do this, set the option 'enable' to true,
    # and specify the station ID (e.g., CW1234).
    enable = false
    station = replace_me

# If this is an APRS (radio amateur) station, uncomment
# the following and replace with a passcode (e.g., 12345).
#passcode = replace_me (APRS stations only)

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

    # If you wish to do this, set the option 'enable' to true,
    # and specify a station and password.
    # To guard against parsing errors, put the password in quotes.
    enable = true
    station = FIDDAUN
    password = ********

[[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 = true
    station = ******
    password = ******

    # 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

    # If you plan on using wunderfixer, set the following
    # to your API key:
    api_key = replace_me
[[Windy]]
    api_key = ******************

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

This section specifies what reports, using which skins, to generate.

[StdReport]

# Where the skins reside, relative to WEEWX_ROOT
SKIN_ROOT = /etc/weewx/skins

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

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

[[StandardReport]]
    HTML_ROOT = /var/www/html/weewx/standard
    skin = Standard
    [[[Units]]]
        [[[[Groups]]]]
            group_distance = km
            group_altitude = meter
            group_degree_day = degree_C_day
            group_pressure = mbar
            group_rain = mm
            group_rainrate = mm_per_hour
            group_speed = km_per_hour
            group_speed2 = km_per_hour2
            group_temperature = degree_C

[[SeasonsReport]]
    # The SeasonsReport uses the 'Seasons' skin, which contains the
    # images, templates and plots for the report.
    skin = Seasons
    enable = true

    [[[Units]]]
        [[[[Groups]]]]
            group_distance = km
            group_altitude = meter
            group_degree_day = degree_C_day
            group_pressure = mbar
            group_rain = mm
            group_rainrate = mm_per_hour
            group_speed = km_per_hour
            group_speed2 = km_per_hour2
            group_temperature = degree_C

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

[[StackedWindRose]]
    HTML_ROOT = /var/www/html/weewx/StackedWindRose
    skin = StackedWindRose
    [[[Units]]]
        [[[[Labels]]]]
            mile_per_hour = mph
            meter_per_second = m/s
            knot = knots
            km_per_hour = km/h
        [[[[Groups]]]]
            group_speed = km_per_hour
    [[[Labels]]]
        compass_points = N, S, E, W
        [[[[Generic]]]]
            windSpeed = Wind Speed
            windGust = Gust Speed
    [[[ImageStackedWindRoseGenerator]]]
        windrose_plot_border = 5
        windrose_legend_bar_width = 10
        windrose_legend_font_size = 10
        image_background_box_color = 0xF5C696
        windrose_plot_font_size = 10
        image_background_circle_color = 0xF5F5F5
        image_width = 382
        image_background_image = None
        image_background_range_ring_color = 0xC3D9DD
        windrose_plot_petal_colors = aqua, 0xFF9900, 0xFF3300, 0x009900, 0x00CC00, 0x33FF33, 0x00FFCC
        image_height = 361
        windrose_label_font_size = 12
        windrose_font_path = /usr/share/fonts/truetype/freefont/FreeSansBold.ttf
        windrose_plot_petal_width = 16
        windrose_label_font_color = 0x000000
        windrose_legend_font_color = 0x000000
        windrose_plot_font_color = 0x000000
        [[[[day_images]]]]
            period = 86400
            [[[[[daywindrose]]]]]
                format = png
                [[[[[[windSpeed]]]]]]
                    time_stamp_location = bottom, right
                    time_stamp = %H:%M %-d %b %y
                    label = 24 Hour Wind Rose
    [[[StackedWindRoseImageGenerator]]]
        image_background_image = None
        image_width = 382
        image_height = 361
        image_background_circle_color = 0xF5F5F5
        image_background_box_color = 0xF5C696
        image_background_range_ring_color = 0xC3D9DD
        windrose_plot_border = 5
        windrose_legend_bar_width = 10
        windrose_font_path = /usr/share/fonts/truetype/freefont/FreeSansBold.ttf
        windrose_plot_font_size = 10
        windrose_plot_font_color = 0x000000
        windrose_legend_font_size = 10
        windrose_legend_font_color = 0x000000
        windrose_label_font_size = 12
        windrose_label_font_color = 0x000000
        windrose_plot_petal_colors = aqua, 0xFF9900, 0xFF3300, 0x009900, 0x00CC00, 0x33FF33, 0x00FFCC
        windrose_plot_petal_width = 16
        [[[[day_images]]]]
            time_length = 86400
            [[[[[daywindrose]]]]]
                format = png
                [[[[[[windSpeed]]]]]]
                    label = 24 Hour Wind Rose
                    time_stamp = %H:%M %-d %b %y
                    time_stamp_location = bottom, right
# 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.

# The StandardReport uses the 'Standard' skin, which contains the
# images, templates and plots for the report.

[[Belchertown]]
    skin = Belchertown
    HTML_ROOT = /var/www/html/weewx/live
    [[[Extras]]]
        belchertown_root_url = https://stormy.ie/weather/live
    [[[Units]]]
        [[[[Groups]]]]
            group_distance = km
            group_altitude = meter
            group_degree_day = degree_C_day
            group_pressure = mbar
            group_rain = mm
            group_rainrate = mm_per_hour
            group_speed = km_per_hour
            group_speed2 = km_per_hour2
            group_temperature = degree_C

[[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, uncomment and fill out the next four lines.
    # Use quotes around passwords to guard against parsing errors.
    #user = replace with the ftp username
    #password = replace with the ftp password
    #server = replace with the ftp server name, e.g, www.threefools.org
    #path = replace with the ftp 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 as to the user account on the remote machine where the files
    # will be copied.
    #
    # The server, user, and path determine where files will be sent.
    # The server is the server name, such as www.threefools.org
    # The user is the username, such as weewx
    # The path is the destination directory, such as /var/www/html/weather
    # Be sure that the user has write permissions on the destination!
    server = ******
    user = root
    path = /home/stormyie/public_html/weather

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

    # The following section determines the selection and formatting of units.
    [[[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 = meter    # Options are 'foot' or 'meter'
            group_degree_day = degree_C_day    # Options are 'degree_F_day' or 'degree_C_day'
            group_pressure = mbar    # Options are 'inHg', 'mmHg', 'mbar', or 'hPa'
            group_rain = cm    # Options are 'inch', 'cm', or 'mm'
            group_rainrate = cm_per_hour    # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour'
            group_speed = km_per_hour    # Options are 'mile_per_hour', 'km_per_hour', 'knot', or 'meter_per_second'
            group_speed2 = km_per_hour2    # Options are 'mile_per_hour2', 'km_per_hour2', 'knot2', or 'meter_per_second2'
            group_temperature = degree_C    # Options are 'degree_F' or 'degree_C'
            group_distance = km

        # 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_per_hour = %.0f
            km_per_hour2 = %.1f
            knot = %.0f
            knot2 = %.1f
            mbar = %.1f
            meter = %.0f
            meter_per_second = %.1f
            meter_per_second2 = %.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 sets the label to be used for each type of unit
        [[[[Labels]]]]

            day = " day", " days"
            hour = " hour", " hours"
            minute = " minute", " minutes"
            second = " second", " seconds"
            NONE = ""

        # The following section sets the format to be used for each time scale.
        # The values below will work in every locale, but they may not look
        # particularly attractive. See the Customization Guide for alternatives.
        [[[[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 should be 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 and cooling 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.0, 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 = METRICWX    # 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
    outTemp = -40, 120, degree_F
    inTemp = 10, 120, degree_F
    outHumidity = 0, 100
    inHumidity = 0, 100
    windSpeed = 0, 120, mile_per_hour
    pressure = 24, 34.5, inHg

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

This section controls the origin of derived values.

[StdWXCalculate]

[[Calculations]]
    # Derived quantities are calculated by this service. 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
    barometer = software
    beaufort = prefer_hardware
    altimeter = prefer_hardware
    windchill = software
    heatindex = prefer_hardware
    dewpoint = prefer_hardware
    inDewpoint = prefer_hardware
    rainRate = software
    windrun = software
    cloudbase = software
    appTemp = prefer_hardware
    humidex = prefer_hardware
    maxSolarRad = prefer_hardware
    ET = 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 = software

# Whether to include LOOP data in hi/low statistics
loop_hilo = True

# The data binding used to save archive records
data_binding = wx_binding

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

This section binds a data store to a database.

[DataBindings]

[[wx_binding]]
    # The database must match one of the sections in [Databases].
    # This is likely to be the only option you would want to change.
    database = archive_mysql
    # The name of the table within the database
    table_name = archive
    # The manager handles aggregation of data for historical summaries
    manager = weewx.wxmanager.WXDaySummaryManager
    # The schema defines the structure of the database.
    # It is *only* used when the database is created.
    schema = user.extensions.schema_extended

[[indoor_binding]]
    # Binding for my WMR100 on the RPi
    database = indoor_mysql
    # The name of the table within the database
    table_name = archive
    # The class to manage the database
    manager = weewx.wxmanager.WXDaySummaryManager
    # The schema defines to structure of the database contents
    schema = schemas.wview.schema

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

This section defines various databases.

[Databases]

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

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

[[indoor_mysql]]
    database_type = MySQL
    database_name = weewx2
    host = localhost

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

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 for the user name (quotes guard against parsing errors)
    password = ******

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

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 = user.extra_sensors_service.ExtraSensorsService, user.bmp280a.bmp
    #data_services = user.extra_sensors_service.ExtraSensorsService
    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, user.mqtt.MQTT, user.windy.Windy
    report_services = weewx.engine.StdPrint, weewx.engine.StdReport

############################################################################## `

uajqq commented 3 years ago

Very weird—I can’t reproduce this. Can I verify that you cloned my fork, switched to the beaufort_fix branch, and then installed? Is it possible you’re still using the master branch that doesn’t have the fix yet?

uajqq commented 3 years ago

You can check which version of the file you have by going into your weewx folder and running the following command:

sed -n '1200,1211p' < bin/user/belchertown.py

That will print the section of belchertown.py that contains the updated code. The output should be:

                current_obs_icon = ""
                visibility = "N/A"
                visibility_unit = ""
        else:
            current_obs_icon = ""
            current_obs_summary = ""
            visibility = "N/A"
            visibility_unit = ""
            beaufort0 = ""
            beaufort1 = ""
            beaufort2 = ""
            beaufort3 = ""

If it isn’t, you don’t have the updated file for whatever reason.

mercurystorm commented 3 years ago

clearly mine is not pulling the update even though it said it had 👍 root@rpi-weewx:~# sed -n '1200,1211p' < /usr/share/weewx/user/belchertown.py current_obs_summary = aeris_coded_weather( data["current"][0]["response"]["ob"]["weatherPrimaryCoded"] ) current_obs_icon = aeris_icon( data["current"][0]["response"]["ob"]["icon"] ) + ".png"

            if forecast_units == "si" or forecast_units == "ca":
                if data["current"][0]["response"]["ob"]["visibilityKM"] is not None:
                    visibility = locale.format("%g", data["current"][0]["response"]["ob"]["visibilityKM"] )
                    visibility_unit = "km"
                else:
                    visibility = "N/A"
                    visibility_unit = ""
            else:
                # us, uk2 and default to miles per hour

root@rpi-weewx:~# `

uajqq commented 3 years ago

Yeah, looks like you were on the Master branch. The fix has been merged now, actually, so getting the latest Belchertown download should get you the fix.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.