Hello,

I am new to using WeeWX, and am having trouble getting the MQTTSubscribe 
driver to work properly. I am following the directions found 
at https://github.com/bellrichm/WeeWX-MQTTSubscribe as best as I can, but 
some of it is hard for me to understand. My basic understanding of WeeWX 
and MQTT is very limited, so I am going to do the best I can to explain my 
problem, provide whatever information necessary, and (hopefully) get this 
issue resolved so I can get my weather station working.

Here is my Hardware/Software Setup Overview:

*Weather Station/MQTT Client/MQTT Publisher:*

BC-Robotics 1591B Weatherboard 
<https://bc-robotics.com/shop/raspberry-pi-pico-1591b-weather-board/> with 
Raspberry 
Pico 2W <https://www.raspberrypi.com/products/raspberry-pi-pico-2/>, 
running MicroPython v1.26.1-2025-09-11. This device is collecting, parsing, 
and sending data from various weather sensors connected to it over WiFi on 
my local LAN using umqttsimple. This device is set up as an MQTT client, 
which publishes the sensor data using the topic "weatherpi" to the MQTT 
broker on the Raspberry Pi Zero 2W listed below. 

*Weather Reciever/MQTT Server/MQTT Broker/MQTT Subscriber/WeeWX Server:*

Raspberry Pi Zero 2W 
<https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/>, running 
Raspberry OS "Bookworm" with WeeWX version 5.1.0-4 installed as a Debian 
package via the WeeWX debian repo instructions. I have installed  Mosquitto 
version 2.0.11, and python3-paho-mqtt 1.6.1-1. I set up Mosquitto to act as 
an MQTT broker on this device, subscribed to the topic "weatherpi", which 
is published by the Pico. I have installed the MQTTSubscribe  driver per 
the instructions found in the Github link above.

AFAICT, I have everything set up correctly on the Pico, and it is 
publishing successfully to the Mosquitto MQTT server, but when I run sudo 
weectl station reconfigure, after going through all the prompts, I get the 
following error:

Traceback (most recent call last):
  File "/usr/share/weewx/weectl.py", line 75, in <module>
    main()
  File "/usr/share/weewx/weectl.py", line 67, in main
    namespace.func(namespace)
  File "/usr/share/weewx/weectllib/__init__.py", line 90, in dispatch
    namespace.action_func(config_dict, namespace)
  File "/usr/share/weewx/weectllib/station_cmd.py", line 311, in 
reconfigure_station
    weectllib.station_actions.station_reconfigure(config_dict=config_dict,
  File "/usr/share/weewx/weectllib/station_actions.py", line 164, in 
station_reconfigure
    config_config(config_dict,
  File "/usr/share/weewx/weectllib/station_actions.py", line 207, in 
config_config
    config_driver(config_dict, driver=driver, no_prompt=no_prompt)
  File "/usr/share/weewx/weectllib/station_actions.py", line 466, in 
config_driver
    settings = weecfg.prompt_for_driver_settings(final_driver,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/weewx/weecfg/__init__.py", line 520, in 
prompt_for_driver_settings
    settings = editor.prompt_for_settings()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/weewx/bin/user/MQTTSubscribe.py", line 2424, in 
prompt_for_settings
    if len(self.existing_options['topics']) > 1:
           ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/configobj/__init__.py", line 554, in 
__getitem__
    val = dict.__getitem__(self, key)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'topics'.

In following the directions given in the top of the weewx-user group with 
regard to posting, I am attaching my weewx.conf file, and system log from 
the RP Zero using the following command: journalctl -xe | grep weewx to 
this post. The other information requested is listed above. If you need 
anything else, please let me know, I am happy to help.

-- 
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 visit 
https://groups.google.com/d/msgid/weewx-user/61a38287-45b3-411a-8c51-081bca35ceb8n%40googlegroups.com.
# WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2024 Tom Keffer <[email protected]>
# See the file LICENSE.txt for your rights.

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

# This section is for general configuration information.

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

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

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

# This configuration file was created by ...
version = 5.1.0

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

#   This section is for information about the station.

[Station]
    
    # Description of the station location, such as your town.
    location = "Mossyrock, WA"
    
    # Latitude in decimal degrees. Negative for southern hemisphere.
    latitude = 46.51875
    # Longitude in decimal degrees. Negative for western hemisphere.
    longitude = -122.505194
    
    # Altitude of the station, with the unit it is in. This is used only
    # if the hardware cannot supply a value.
    altitude = 624, 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.
    #station_type = Simulator
    station_type = MQTTSubscribeDriver

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

[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

[MQTTSubscribeDriver]
    server_url = mqtt://localhost:1883
    # Use your WeeWX server's IP if the broker is on a different machine
    # server_url = mqtt://192.168.1.100:1883
    topic = weatherpi
    field_map = ""
    outside_temperature = temperature
    outside_humidity = humidity
    barometer = pressure
    
    
    # If you have a website, you may specify an URL. The URL is required if you
    # intend to register your station. The URL must include the scheme, for
    # example, "http://"; or "https://";
    #station_url = https://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 the MQTTSubscribe driver.
    
    # The driver to use.
    # Only used by the driver.
    driver = user.MQTTSubscribe
    
    # Controls if validation errors raise an exception (stopping WeeWX from 
starting) or only logged.
    # Default is false
    stop_on_validation_errors = true

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

#   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
    
    [[StationRegistry]]
        # To register this weather station at weewx.com, set this to true, and
        # set option 'station_url', located in the [Station] section 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.
        # Use quotes around the password to guard against parsing errors.
        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.
        # Use quotes around the password to guard against parsing errors.
        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.
        # Use quotes around the password to guard against parsing errors.
        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'). Use
        # the station key (find it at
        # https://www.wunderground.com/member/devices) for the password.
        enable = false
        station = replace_me
        password = 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

    [[MQTT]]
        server_url = mqtt://127.0.0.1:1883

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

#   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 = /var/www/html/weewx
    
    # Uncomment and change to override logging for reports.
    # log_success = True
    # 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
    
    [[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
    
    [[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
    
    [[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 the password 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.  The unit is always
            # in the singular, e.g., '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
                # The following line is used to keep the above lines indented
                # properly. It can be ignored.
                unused = unused

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

#   This service converts 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
    
    # Uncomment and change to override logging for archive operations.
    # log_success = True
    # 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

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

#   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 database files are located, relative to WEEWX_ROOT
        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
        # Use quotes around the password to guard against parsing errors.
        password = weewx

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

#   This section configures the internal weewx engine.

[Engine]
    
    # This section specifies which services should be run and in what order.
    [[Services]]
        prep_services = weewx.engine.StdTimeSynch
        data_services = user.MQTTSubscribe.MQTTSubscribeService,
        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
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport

[Drivers]
    [[mqtt]]
        driver = user.mqtt
        host = 127.0.0.1    # IP of your WeeWX server
        port = 1883
        topic = weatherpi    # The topic your Pico is publishing to

[MQTTSubscribeService]
    # This section is for the MQTTSubscribe service.
    
    # Turn the service on and off.
    # Default is: true
    # Only used by the service.
    enable = true
    
    # Controls if validation errors raise an exception (stopping WeeWX from 
starting) or only logged.
    # Default is false
    stop_on_validation_errors = true

WeeWX-Log 20251014-1358

Subject: A start job for unit weewx.service has finished successfully
░░ A start job for unit weewx.service has finished successfully.
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Initializing weewxd 
version 5.1.0
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Command line: 
/usr/share/weewx/weewxd.py /etc/weewx/weewx.conf
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Using Python: 3.11.2 
(main, Apr 28 2025, 14:11:48) [GCC 12.2.0]
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Located at:   
/usr/bin/python3
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Platform:     
Linux-6.12.47+rpt-rpi-v8-aarch64-with-glibc2.36
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Locale:       
'en_US.UTF-8'
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Entry path:   
/usr/share/weewx/weewxd.py
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: WEEWX_ROOT:   /etc/weewx
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Config file:  
/etc/weewx/weewx.conf
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: User module:  
/etc/weewx/bin/user
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Debug:        1
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: User:         weewx
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Group:        weewx
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO __main__: Groups:       weewx
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG __main__: loop_on_init: False
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG __main__: Initializing engine
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO weewx.engine: Loading station type 
MQTTSubscribeDriver (user.MQTTSubscribe)
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG user.MQTTSubscribe: (Driver) Using 
weewx version 5.1.0
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG user.MQTTSubscribe: (Driver) Using 
Python 3.11.2 (main, Apr 28 2025, 14:11:48) [GCC 12.2.0]
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG user.MQTTSubscribe: (Driver) 
Platform Linux-6.12.47+rpt-rpi-v8-aarch64-with-glibc2.36
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG user.MQTTSubscribe: (Driver) 
Locale is 'en_US.UTF-8'
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG user.MQTTSubscribe: (Driver) 
Record Augmentation is: None
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG user.MQTTSubscribe: (Driver) 
Record Generation is: hardware
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO user.MQTTSubscribe: (Driver) Using 
paho.mqtt 1.6.1
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO user.MQTTSubscribe: (Driver) 
Version is 3.0.0
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO user.MQTTSubscribe: (Driver) Log 
level: 0
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO user.MQTTSubscribe: (Driver) Log 
debug setting: 1
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO user.MQTTSubscribe: (Driver) Log 
console: False
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO user.MQTTSubscribe: (Driver) Log 
file: None
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: INFO user.MQTTSubscribe: (Driver) Max 
loop interval is: 0
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG user.MQTTSubscribe: (Driver) 
sanitized configuration removed ['password']
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: DEBUG user.MQTTSubscribe: (Driver) 
MQTTSUBscriber sanitized_service_dict is {'field_map': '', 'rain_year_start': 
'1', 'week_start': '6', 'outside_humidity': 'humidity', 'server_url': 
'mqtt://localhost:1883', 'outside_temperature': 'temperature', 'driver': 
'user.MQTTSubscribe', 'stop_on_validation_errors': 'true', 'barometer': 
'pressure', 'topic': 'weatherpi'}
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: ERROR weewx.engine: Import of driver 
failed: [[topics]] is required. (<class 'ValueError'>)
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****  
Traceback (most recent call last):
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****    File 
"/usr/share/weewx/weewx/engine.py", line 115, in setupStation
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****      
self.console = loader_function(config_dict, self)
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****          
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****    File 
"/etc/weewx/bin/user/MQTTSubscribe.py", line 2273, in loader
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****      
return MQTTSubscribeDriver(config_dict, engine) # pragma: no cover
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****          
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****    File 
"/etc/weewx/bin/user/MQTTSubscribe.py", line 2303, in __init__
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****      
self.subscriber = MQTTSubscriber.get_subscriber(stn_dict, self.logger)
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****          
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****    File 
"/etc/weewx/bin/user/MQTTSubscribe.py", line 1832, in get_subscriber
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****      
return MQTTSubscriberV1(service_dict, logger)
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****          
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****    File 
"/etc/weewx/bin/user/MQTTSubscribe.py", line 2011, in __init__
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****      
super().__init__(service_dict, logger)
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****    File 
"/etc/weewx/bin/user/MQTTSubscribe.py", line 1751, in __init__
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****      
raise ValueError("[[topics]] is required.")
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL weewx.engine:     ****  
ValueError: [[topics]] is required.
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL __main__: Unable to load 
driver: [[topics]] is required.
Oct 14 13:58:07 Zero2W-1 weewxd[4021]: CRITICAL __main__:     ****  Exiting...
Oct 14 13:58:07 Zero2W-1 systemd[1]: weewx.service: Main process exited, 
code=exited, status=4/NOPERMISSION
░░ An ExecStart= process belonging to unit weewx.service has exited.
Oct 14 13:58:07 Zero2W-1 systemd[1]: weewx.service: Failed with result 
'exit-code'.
░░ The unit weewx.service has entered the 'failed' state with result 
'exit-code'.
Oct 14 14:01:40 Zero2W-1 weectl[4026]: INFO weectllib: Command line: 
/usr/share/weewx/weectl.py station reconfigure
Oct 14 14:01:40 Zero2W-1 weectl[4026]: INFO weectllib: Entry path:   
/usr/share/weewx/weectl.py
Oct 14 14:01:40 Zero2W-1 weectl[4026]: INFO weectllib: WEEWX_ROOT:   /etc/weewx
Oct 14 14:01:40 Zero2W-1 weectl[4026]: INFO weectllib: Config file:  
/etc/weewx/weewx.conf
Oct 14 14:01:40 Zero2W-1 weectl[4026]: INFO weectllib: User module:  
/etc/weewx/bin/user

Reply via email to