Weewx fails to start

413 views
Skip to first unread message

hind...@gmail.com

unread,
Sep 4, 2024, 7:31:27 AM9/4/24
to weewx-user
For some unknown reason my weather station is no longer updating - which must be due to weewx having failed somehow. When I restart my Raspberry Pi, to try to reset things, I get the following:

weewx.service - LSB: weewx weather system

   Loaded: loaded (/etc/init.d/weewx; generated; vendor preset: enabled)

   Active: failed (Result: exit-code) since Wed 2024-09-04 12:23:03 BST; 2min 34s ago

     Docs: man:systemd-sysv-generator(8)

  Process: 480 ExecStart=/etc/init.d/weewx start (code=exited, status=1/FAILURE)

 

Sep 04 12:23:03 raspberrypi weewx[480]:   File "/usr/share/weewx/weewxd", line 25, in <module>

Sep 04 12:23:03 raspberrypi weewx[480]:     import weeutil.logger

Sep 04 12:23:03 raspberrypi weewx[480]:   File "/usr/share/weewx/weeutil/logger.py", line 17, in <module>

Sep 04 12:23:03 raspberrypi weewx[480]:     import weewx

Sep 04 12:23:03 raspberrypi weewx[480]: ImportError: No module named weewx

Sep 04 12:23:03 raspberrypi weewx[480]:  failed!

Sep 04 12:23:03 raspberrypi systemd[1]: weewx.service: Control process exited, code=exited status=1

Sep 04 12:23:03 raspberrypi systemd[1]: Failed to start LSB: weewx weather system.

Sep 04 12:23:03 raspberrypi systemd[1]: weewx.service: Unit entered failed state.

Sep 04 12:23:03 raspberrypi systemd[1]: weewx.service: Failed with result 'exit-code'.

~


Anyone know what is going on please?

Many Thanks


David.

Tom Keffer

unread,
Sep 4, 2024, 12:48:36 PM9/4/24
to weewx...@googlegroups.com
Some sort of PYTHONPATH problem I would imagine, but we need more information.

What version of WeeWX?
What's in your /etc/init.d/weewx?
What version of RaspberryPi OS?
Assuming a reasonably recent version, why not use a systemd service file?

If all else fails, set debug=1, restart weewxd, post the log.


--
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 weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/21297d91-d219-4790-85d2-d1d2131075acn%40googlegroups.com.

hind...@gmail.com

unread,
Sep 4, 2024, 1:23:34 PM9/4/24
to weewx-user
Thanks, Tom.

Weewx is version 4.10.2

/etc/init.d/weewx contains a lot of code. The path section is:

PATH=/sbin:/usr/sbin:/bin:/usr/bin

WEEWX_BIN=/usr/bin/weewxd

WEEWX_CFG=/etc/weewx/weewx.conf

WEEWX_USER=root:root

DESC="weewx weather system"

NAME=weewx

PIDFILE=/var/run/$NAME.pid

My RPi is Raspberry Pi 3 Model B Plus Rev 1.3.  I am running it under quite an old Raspbian version - "Stretch".

Sorry - how do I use a systemd service file?

Thanks

David. 

Tom Keffer

unread,
Sep 4, 2024, 1:33:29 PM9/4/24
to weewx...@googlegroups.com
Sorry, but we're going to have to see the entire file. We need to see how weewxd is invoked.

One more question: what did you modify? Any reason you can think of why it stopped working?

-tk

hind...@gmail.com

unread,
Sep 4, 2024, 2:47:33 PM9/4/24
to weewx-user
No problem.

Copied below.

I don't think I modified anything,  My weather website stopped working when I was on holiday. The last valid graph entry is 20 August 2024 at 5pm  -but not sure my syslog files go back that far to check what happened.

. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# start the daemon/service
#   0 if daemon has been started
#   1 if daemon was already running
#   2 if daemon could not be started
# check using ps not the pid file.  pid file could be leftover.
do_start() {
    NPROC=$(count_procs)
    if [ $NPROC != 0 ]; then
        return 1
    fi
    start-stop-daemon --start --chuid $WEEWX_USER --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS || return 2
    return 0
}

# stop the daemon/service
#   0 if daemon has been stopped
#   1 if daemon was already stopped
#   2 if daemon could not be stopped
#   other if a failure occurred
do_stop() {
    # bail out if the app is not running
    NPROC=$(count_procs)
    if [ $NPROC = 0 ]; then
        return 1
    fi
    # bail out if there is no pid file
    if [ ! -f $PIDFILE ]; then
        return 1
    fi
    start-stop-daemon --stop --pidfile $PIDFILE
    # we cannot trust the return value from start-stop-daemon
    RETVAL=2
    c=0
    while [ $c -lt 24 -a "$RETVAL" = "2" ]; do
        c=`expr $c + 1`
        # process may not really have completed, so check it
        NPROC=$(count_procs)
        if [ $NPROC = 0 ]; then
            RETVAL=0
        else
            echo -n "."
            sleep 5
        fi
    done
    if [ "$RETVAL" = "0" -o "$RETVAL" = "1" ]; then
        # delete the pid file just in case
        rm -f $PIDFILE
    fi
    return "$RETVAL"
}

# send a SIGHUP to the daemon/service
do_reload() {
    start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
    return 0
}

count_procs() {
    NPROC=`ps ax | grep $WEEWX_BIN | grep $NAME.pid | wc -l`
    echo $NPROC
}

RETVAL=0
case "$1" in
    start)
        log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
            0) log_end_msg 0; RETVAL=0 ;;
            1) log_action_cont_msg " already running" && log_end_msg 0; RETVAL=0 ;;
            2) log_end_msg 1; RETVAL=1 ;;
        esac
        ;;
    stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
            0) log_end_msg 0; RETVAL=0 ;;
            1) log_action_cont_msg " not running" && log_end_msg 0; RETVAL=0 ;;
            2) log_end_msg 1; RETVAL=1 ;;
        esac
        ;;

hind...@gmail.com

unread,
Sep 4, 2024, 3:06:40 PM9/4/24
to weewx-user
I should add, when I start weewx, I get: 

[....] Starting weewx (via systemctl): weewx.service==== AUTHENTICATING FOR org.                                                                                                                                                                                                                                             freedesktop.systemd1.manage-units ===
Authentication is required to start 'weewx.service'.
Multiple identities can be used for authentication:
 1.  ,,, (pi)
 2.  root
Choose identity to authenticate as (1-2): 1
Password:
==== AUTHENTICATION COMPLETE ===
Job for weewx.service failed because the control process exited with error code.
See "systemctl status weewx.service" and "journalctl -xe" for details.
 failed!

Does that helpo diagnose the problem.  I never remember being asked for identity before.  I am not sure I know the root password (dumb, I know).

Tom Keffer

unread,
Sep 4, 2024, 3:44:54 PM9/4/24
to weewx...@googlegroups.com
A favor. Please post the entire file. Don't cut and paste, just include the file. It's hard to get the full picture from the little pieces.

I would also strongly advise that you upgrade from stretch. It hasn't been supported in years. Your RPi 3 is more than capable of running a modern version of RPi OS.

hind...@gmail.com

unread,
Sep 4, 2024, 4:05:34 PM9/4/24
to weewx-user
OK.  No problem.  It is attached.  I renamed it to weewx_init. It is called weewx on my Pi.

Noted re upgrading.  Nervous about losing data etc.

David.

weewx_init

Tom Keffer

unread,
Sep 4, 2024, 4:32:50 PM9/4/24
to weewx...@googlegroups.com
I'm sorry, but there are too many moving parts here. The problem depends on your environment, /etc/default/weewx, what's in /usr/bin/weewxd, the location of the other weewx files, etc. 

Something changed on your system. You're going to have to track it down.

Here's what I would do: get a second SD card (less than $10). Install the latest RPi OS on it. Install WeeWX v5 on it.

Then copy over the database (located under /var/lib/weewx) and the skins (located under /etc/weewx) from the old card. Or, copy from your backup. No chance of losing any data.

-tk

David Hindley

unread,
Sep 4, 2024, 5:25:38 PM9/4/24
to weewx...@googlegroups.com
Tom - OK. Many thanks. Will try that suggestion. 

David. 

You received this message because you are subscribed to a topic in the Google Groups "weewx-user" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/weewx-user/CWN10iKhjUA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/CAPq0zEDECt6FyoqjO%2Bq_evimMomJJb4dtDJEXfBce1fgt7vpvA%40mail.gmail.com.

hind...@gmail.com

unread,
Sep 13, 2024, 10:12:53 AM9/13/24
to weewx-user
It was all going so well....I did as you suggested - first copied all my old weewx files to a USB drive on the Pi,  bought a new SD card, installed the latest Raspbian OS (Bookworm) and got my shiny new SD card running fine.  I then installed weewx and it started weewx up as expected and began populating the empty database from 4 Sept on.  Then I tried to stop weewx so I could copy across the old database with all my history from 2016 onwards.  For some bizarre reason I couldn't get the stop command to work, as per below extract:

xxxxx@weatherpi:/etc $ sudo /etc/init.d/weewx stop
sudo: /etc/init.d/weewx: command not found

Am I being dumb?  Any reason why this shouldn't work?

Thanks

David.

hind...@gmail.com

unread,
Sep 13, 2024, 10:19:23 AM9/13/24
to weewx-user
Incidentally, when I do a grep to see what is running, I get

weewx      13880 12.1  3.4 114556 31596 ?        Dsl  14:58   2:21 python3 /usr/share/weewx/weewxd.py /etc/weewx/weewx.conf
david      13970  0.0  0.2   6088  1920 pts/1    S+   15:17   0:00 grep --color=auto weewxd

Tom Keffer

unread,
Sep 13, 2024, 10:35:08 AM9/13/24
to weewx...@googlegroups.com
With the introduction of systemd, WeeWX no longer uses System V style /etc/init.d scripts. Instead, it uses systemd "service" files.

With systemd, you restart weewx with

sudo systemctl restart weewx

See the section Running as a daemon in the User's Guide.

-tk

hind...@gmail.com

unread,
Sep 13, 2024, 11:15:16 AM9/13/24
to weewx-user
Great.  Thanks, Tom.  Much appreciated. That worked.

hind...@gmail.com

unread,
Apr 16, 2025, 7:58:21 AM4/16/25
to weewx-user
Hi - after a long gap, I am now trying to get my weather website working again. As per earlier messages in this chain, I did eventually get weewx working on a brand new OS install on my RPi, with my previous 9 year historical weewx database copied over. As far as I can tell, weewx seems to be working OK, as it is adding records to the database, although I still seem to get ip-read errors from time to time.  Here is an extract from the log:

Apr 16 12:51:16 weatherpi weewxd[46890]: ERROR weewx.drivers.vantage: LOOP batch try #1; error: timed out

Apr 16 12:51:17 weatherpi weewxd[46890]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 16 12:52:09 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:e4:57:40:c2:d3:72:08:00 SRC=192.168.0.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=20279 PROTO=2

Apr 16 12:52:10 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:98:9e:63:44:ca:fa:08:00 SRC=192.168.0.10 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=16661 PROTO=2

Apr 16 12:52:10 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:9c:32:ce:cc:4b:99:08:00 SRC=192.168.0.11 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=61778 PROTO=2

Apr 16 12:53:08 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:f4:21:ca:86:dc:36:08:00 SRC=192.168.0.24 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=36856 PROTO=2

Apr 16 12:54:14 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:e4:57:40:c2:d3:72:08:00 SRC=192.168.0.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=20288 PROTO=2

Apr 16 12:54:14 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:d4:da:cd:c8:97:af:08:00 SRC=192.168.0.154 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2

Apr 16 12:54:21 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:64:9a:be:19:4b:8e:08:00 SRC=192.168.0.44 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=60879 PROTO=2

Apr 16 12:54:52 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:64:9a:be:19:4b:8e:08:00 SRC=192.168.0.44 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=39300 PROTO=2

Apr 16 12:55:14 weatherpi weewxd[46890]: DEBUG weewx.drivers.vantage: Getting archive packets since 2025-04-16 12:50:00 BST (1744804200)

Apr 16 12:55:16 weatherpi weewxd[46890]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 16 12:55:17 weatherpi weewxd[46890]: DEBUG weewx.drivers.vantage: Retrieving 1 page(s); starting index= 2

Apr 16 12:55:18 weatherpi weewxd[46890]: INFO weewx.manager: Added record 2025-04-16 12:55:00 BST (1744804500) to database 'weewx.sdb'

Apr 16 12:55:18 weatherpi weewxd[46890]: INFO weewx.manager: Added record 2025-04-16 12:55:00 BST (1744804500) to daily summary in 'weewx.sdb'

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.drivers.vantage: DMPAFT complete: page timestamp 2025-04-07 15:20:00 BST (1744035600) less than final timestamp 2025-04-16 12:55:00 BST (1744804500)

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.restx: StationRegistry: wait interval (7200 < 86400) has not passed for record 2025-04-16 12:55:00 BST (1744804500)

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.drivers.vantage: Catch up complete.

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Running reports for latest time in the database.

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Running report 'SeasonsReport'

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.drivers.vantage: Requesting 200 LOOP packets.

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Unable to set locale 'en': unsupported locale setting. Using default.

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Running generators for report 'SeasonsReport' in directory '/etc/weewx/skins/Seasons' with locale 'en_GB.UTF-8'

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.DisplayOptions', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.Gettext', 'weewx.cheetahgenerator.JSONHelpers', 'weewx.cheetahgenerator.PlotInfo', 'weewx.cheetahgenerator.SkinInfo', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo']

Apr 16 12:55:18 weatherpi weewxd[46890]: DEBUG weewx.manager: Daily summary version is 4.0

Apr 16 12:55:19 weatherpi weewxd[46890]: INFO weewx.restx: PWSWeather: Published record 2025-04-16 12:55:00 BST (1744804500)

Apr 16 12:55:19 weatherpi weewxd[46890]: INFO weewx.restx: WOW: Published record 2025-04-16 12:55:00 BST (1744804500)

Apr 16 12:55:19 weatherpi weewxd[46890]: INFO weewx.restx: Wunderground-PWS: Published record 2025-04-16 12:55:00 BST (1744804500)

Apr 16 12:55:19 weatherpi weewxd[46890]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 16 12:55:20 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:74:a6:cd:95:8f:9a:08:00 SRC=192.168.0.189 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=25395 PROTO=2

Apr 16 12:55:21 weatherpi weewxd[46890]: INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 3.19 seconds

Apr 16 12:55:21 weatherpi weewxd[46890]: DEBUG weewx.manager: Daily summary version is 4.0

Apr 16 12:55:22 weatherpi weewxd[46890]: INFO weewx.imagegenerator: Generated 13 images for report SeasonsReport in 1.30 seconds

Apr 16 12:55:22 weatherpi weewxd[46890]: INFO weewx.reportengine: Copied 0 files to /var/www/html/weewx

Apr 16 12:55:22 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.

Apr 16 12:55:22 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.

Apr 16 12:55:22 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.

Apr 16 12:55:22 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.

Apr 16 12:55:22 weatherpi weewxd[46890]: DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.

*************************************************************************************************************************************


 However, I am now trying to reinstall the skin that my weather website users - belchertown, and am having problems.  The log has the following:

david@weatherpi:~ $ sudo weectl extension install /home/david/weewx-belchertown-x.x.tar.gz

Using configuration file /etc/weewx/weewx.conf

Install extension '/home/david/weewx-belchertown-x.x.tar.gz' (y/n)? y

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/extension_cmd.py", line 116, in install_extension

    ext.install_extension(namespace.source, no_confirm=namespace.yes)

  File "/usr/share/weewx/weecfg/extension.py", line 132, in install_extension

    raise InstallError(f"Path {extension_path} does not exist.")

weecfg.extension.InstallError: Path /home/david/weewx-belchertown-x.x.tar.gz does not exist.


Does anyone have any ideas what is going on?  I am wondering if it is a PATH related problem, but am not sure.  I did successfully download the skin gz file, but maybe I put it in the wrong place or something.  Any help would be much appreciated.

Many thanks

David.

vince

unread,
Apr 16, 2025, 12:34:47 PM4/16/25
to weewx-user
"Path /home/david/weewx-belchertown-x.x.tar.gz" does not exist is a pretty clear error message. Look at that directory for what your actual filename is.    It is unlikely that x.x is in the filename, if there's a file there at all.

David Hindley

unread,
Apr 16, 2025, 1:12:56 PM4/16/25
to weewx...@googlegroups.com
Sorry - you are quite right - that was very obvious and dumb of me not to spot it. It installed correctly when I used the correct name. Many Thanks.  

David.

hind...@gmail.com

unread,
Apr 17, 2025, 11:01:17 AM4/17/25
to weewx-user
So after correcting this daft error, I managed to download the belchertown skin.  Before the problems occured last September, I was successfully using this skin for my weather website.  I had retained the skin.conf files (both the main one and the belchertown one) so I copied the relevant parts to the new weewx conf files.  I also copied over the sftp conf file, as I use sftp to transfer files to my webserver.  

However, upon restarting weewx with the belchertown skin enabled, I seem to get some errors related to sftp.  An extract from the log file is below.  Not sure if the difficulty in finding user.sftp is connected at all to the earlier message in the log about not finding the en.conf file?

Any suggestions as to what might be going wrong would be much appreciated.

Many thanks

David.

Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.restx: StationRegistry: Delaying post by 35 seconds
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Running reports for latest time in the database.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.drivers.vantage: Requesting 200 LOOP packets.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Report 'SeasonsReport' not enabled. Skipping.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Running report 'sftp'
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/sftp/skin.conf for report 'sftp'
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Cannot read localization file /etc/weewx/skins/sftp/lang/en.conf for report 'sftp': Config file not found: "/etc/weewx/skins/sftp/lang/en.conf".
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: **** Using defaults instead.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Unable to set locale 'en': unsupported locale setting. Using default.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Running generators for report 'sftp' in directory '/etc/weewx/skins/sftp' with locale 'en_GB.UTF-8'
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine: Unable to instantiate generator 'user.sftp.SFTPGenerator'
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****  No module named 'user.sftp'
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 231, in run
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1404, in get_object
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      module = importlib.import_module(module_name)
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      return _bootstrap._gcd_import(name[level:], package, level)
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
Apr 17 15:45:18 weatherpi weewxd[2181]: Traceback (most recent call last):
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weewx/reportengine.py", line 231, in run
Apr 17 15:45:18 weatherpi weewxd[2181]:     obj = weeutil.weeutil.get_object(generator)(
Apr 17 15:45:18 weatherpi weewxd[2181]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weeutil/weeutil.py", line 1404, in get_object
Apr 17 15:45:18 weatherpi weewxd[2181]:     module = importlib.import_module(module_name)
Apr 17 15:45:18 weatherpi weewxd[2181]:              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
Apr 17 15:45:18 weatherpi weewxd[2181]:     return _bootstrap._gcd_import(name[level:], package, level)
Apr 17 15:45:18 weatherpi weewxd[2181]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
Apr 17 15:45:18 weatherpi weewxd[2181]: ModuleNotFoundError: No module named 'user.sftp'
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'user.sftp'
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****  Generator ignored
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Running report 'Belchertown'
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Belchertown/skin.conf for report 'Belchertown'
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Cannot read localization file /etc/weewx/skins/Belchertown/lang/en.conf for report 'Belchertown': Config file not found: "/etc/weewx/skins/Belchertown/lang/en.conf".
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: **** Using defaults instead.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Unable to set locale 'en': unsupported locale setting. Using default.
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.reportengine: Running generators for report 'Belchertown' in directory '/etc/weewx/skins/Belchertown' with locale 'en_GB.UTF-8'
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.cheetahgenerator: Using search list ['user.belchertown.getData', 'weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.DisplayOptions', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.Gettext', 'weewx.cheetahgenerator.JSONHelpers', 'weewx.cheetahgenerator.PlotInfo', 'weewx.cheetahgenerator.SkinInfo', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo']
Apr 17 15:45:18 weatherpi weewxd[2181]: INFO user.belchertown: version 1.3.1
Apr 17 15:45:18 weatherpi weewxd[2181]: DEBUG weewx.manager: Daily summary version is 4.0
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.cheetahgenerator.CheetahGenerator'
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****  'belchertown_locale'
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 248, in run
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      obj.start()
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 465, in start
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      self.run()
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 166, in run
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      ngen = self.generate(gen_dict[section_name], section_name, self.gen_ts)
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      ngen += self.generate(section[subsection], subsection, gen_ts)
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      ngen += self.generate(section[subsection], subsection, gen_ts)
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 309, in generate
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      searchList = self._getSearchList(encoding, timespan,
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 401, in _getSearchList
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      search_list += obj.get_extension_list(timespan, db_lookup)
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/etc/weewx/bin/user/belchertown.py", line 300, in get_extension_list
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      if self.generator.skin_dict["Extras"]["belchertown_locale"] == "auto":
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****    File "/usr/lib/python3/dist-packages/configobj/__init__.py", line 554, in __getitem__
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****      val = dict.__getitem__(self, key)
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****  KeyError: 'belchertown_locale'
Apr 17 15:45:18 weatherpi weewxd[2181]: ERROR weewx.reportengine:         ****  Generator terminated
Apr 17 15:45:18 weatherpi weewxd[2181]: Traceback (most recent call last):
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weewx/reportengine.py", line 248, in run
Apr 17 15:45:18 weatherpi weewxd[2181]:     obj.start()
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weewx/reportengine.py", line 465, in start
Apr 17 15:45:18 weatherpi weewxd[2181]:     self.run()
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 166, in run
Apr 17 15:45:18 weatherpi weewxd[2181]:     ngen = self.generate(gen_dict[section_name], section_name, self.gen_ts)
Apr 17 15:45:18 weatherpi weewxd[2181]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate
Apr 17 15:45:18 weatherpi weewxd[2181]:     ngen += self.generate(section[subsection], subsection, gen_ts)
Apr 17 15:45:18 weatherpi weewxd[2181]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate
Apr 17 15:45:18 weatherpi weewxd[2181]:     ngen += self.generate(section[subsection], subsection, gen_ts)
Apr 17 15:45:18 weatherpi weewxd[2181]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 309, in generate
Apr 17 15:45:18 weatherpi weewxd[2181]:     searchList = self._getSearchList(encoding, timespan,
Apr 17 15:45:18 weatherpi weewxd[2181]:                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 401, in _getSearchList
Apr 17 15:45:18 weatherpi weewxd[2181]:     search_list += obj.get_extension_list(timespan, db_lookup)
Apr 17 15:45:18 weatherpi weewxd[2181]:                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/etc/weewx/bin/user/belchertown.py", line 300, in get_extension_list
Apr 17 15:45:18 weatherpi weewxd[2181]:     if self.generator.skin_dict["Extras"]["belchertown_locale"] == "auto":
Apr 17 15:45:18 weatherpi weewxd[2181]:        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]:   File "/usr/lib/python3/dist-packages/configobj/__init__.py", line 554, in __getitem__
Apr 17 15:45:18 weatherpi weewxd[2181]:     val = dict.__getitem__(self, key)
Apr 17 15:45:18 weatherpi weewxd[2181]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 17 15:45:18 weatherpi weewxd[2181]: KeyError: 'belchertown_locale'




Karen K

unread,
Apr 17, 2025, 3:24:36 PM4/17/25
to weewx-user
1. The SFTP extension may not be installed.
2. The key belchertown_locale is missing in section [Extras] of skin.conf.

David Hindley

unread,
Apr 17, 2025, 4:01:30 PM4/17/25
to weewx...@googlegroups.com
Many thanks. Will try correcting these.  

David. 

hind...@gmail.com

unread,
Apr 20, 2025, 6:12:28 AM4/20/25
to weewx-user
Corrected these, but then some further errors occured, which seem to be related to the report generator.  I am using the belchertown skin and the latest version of weewx.  The error seems connected with "radar_width".  I have searched the weewx-user group for similar problems, but can't find anything.  My log is below, from the beginning of restarting weewx.  weewx keeps running after this error, and seems to run sftp OK, but I think the report generator error means that no useful reports are run.  Any help diagnosing the problem would be greatly appreciated.

Thanks

David.

Apr 20 10:56:42 weatherpi weewxd[10052]: INFO __main__: User:         weewx

Apr 20 10:56:42 weatherpi weewxd[10052]: INFO __main__: Group:        weewx

Apr 20 10:56:42 weatherpi weewxd[10052]: INFO __main__: Groups:       weewx

Apr 20 10:56:42 weatherpi weewxd[10052]: DEBUG __main__: loop_on_init: False

Apr 20 10:56:42 weatherpi weewxd[10052]: DEBUG __main__: Initializing engine

Apr 20 10:56:42 weatherpi weewxd[10052]: INFO weewx.engine: Loading station type Vantage (weewx.drivers.vantage)

Apr 20 10:56:42 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Driver version is 3.6.2

Apr 20 10:56:42 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Option loop_request=1

Apr 20 10:56:42 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Opened up ethernet host 192.168.0.25 on port 22222. timeout=4.0, tcp_send_delay=0.5

Apr 20 10:56:43 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 20 10:56:44 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Hardware type is 16

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: ISS ID is 1

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Hardware name: Vantage Pro2

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.engine.StdTimeSynch

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.engine.StdTimeSynch

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.engine.StdConvert

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.engine: StdConvert target unit is 0x1

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.engine.StdConvert

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.engine.StdCalibrate

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.engine.StdCalibrate

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.engine.StdQC

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.engine.StdQC

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.wxservices.StdWXCalculate

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.wxservices: StdWXCalculate will use data binding wx_binding

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.manager: Daily summary version is 4.0

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.wxservices.StdWXCalculate

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.wxxtypes.StdWXXTypes

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdWXXTypes

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.wxxtypes.StdPressureCooker

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdPressureCooker

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.wxxtypes.StdRainRater

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdRainRater

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.wxxtypes.StdDelta

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdDelta

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.engine.StdArchive

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.engine: Archive will use data binding wx_binding

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.engine: Record generation will be attempted in 'hardware'

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.engine: Using archive interval of 300 seconds (specified by hardware)

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Use LOOP data in hi/low calculations: 1

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.engine.StdArchive

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.restx.StdStationRegistry

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.restx: StationRegistry: Station will be registered.

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.restx.StdStationRegistry

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.restx.StdWunderground

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.restx: WU essentials: {}

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.restx: Wunderground-PWS: Data for station IASHTEAD8 will be posted

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.restx.StdWunderground

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.restx.StdPWSweather

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.restx: PWSWeather: Data for station DHASHTEAD will be posted

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.restx.StdPWSweather

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.restx.StdCWOP

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.restx: CWOP: Posting not enabled.

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.restx.StdCWOP

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.restx.StdWOW

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.restx: WOW: Data for station 2ac56765-3645-e811-a822-0003ff596ea9 will be posted

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.restx.StdWOW

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.restx.StdAWEKAS

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.restx: AWEKAS: Posting not enabled.

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.restx.StdAWEKAS

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service user.mqtt.MQTT

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.manager: Daily summary version is 4.0

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.manager: Daily summary version is 4.0

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.manager: Daily summary version is 4.0

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO user.mqtt: service version is 0.24

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.restx: MQTT: Data will not be posted: Missing option 'server_url'

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service user.mqtt.MQTT

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.engine.StdPrint

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.engine.StdPrint

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Loading service weewx.engine.StdReport

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO weewx.engine: 'pyephem' detected, extended almanac data is available

Apr 20 10:56:48 weatherpi weewxd[10052]: DEBUG weewx.engine: Finished loading service weewx.engine.StdReport

Apr 20 10:56:48 weatherpi weewxd[10052]: INFO __main__: Starting up weewx version 5.1.0

Apr 20 10:56:50 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 20 10:56:50 weatherpi weewxd[10052]: INFO weewx.engine: Clock error is 1.40 seconds (positive is fast)

Apr 20 10:56:50 weatherpi weewxd[10052]: INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'

Apr 20 10:56:50 weatherpi weewxd[10052]: INFO weewx.manager: Starting backfill of daily summaries

Apr 20 10:56:50 weatherpi weewxd[10052]: INFO weewx.manager: Daily summaries up to date

Apr 20 10:56:50 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Getting archive packets since 2025-04-20 10:50:00 BST (1745142600)

Apr 20 10:56:52 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 20 10:56:53 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Retrieving 1 page(s); starting index= 0

Apr 20 10:56:54 weatherpi weewxd[10052]: INFO weewx.manager: Added record 2025-04-20 10:55:00 BST (1745142900) to database 'weewx.sdb'

Apr 20 10:56:54 weatherpi weewxd[10052]: INFO weewx.manager: Added record 2025-04-20 10:55:00 BST (1745142900) to daily summary in 'weewx.sdb'

Apr 20 10:56:54 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: DMPAFT complete: page timestamp 2025-04-11 13:35:00 BST (1744374900) less than final timestamp 2025-04-20 10:55:00 BST (1745142900)

Apr 20 10:56:54 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Catch up complete.

Apr 20 10:56:54 weatherpi weewxd[10052]: INFO weewx.engine: Starting main packet loop.

Apr 20 10:56:54 weatherpi weewxd[10052]: DEBUG weewx.restx: StationRegistry: Delaying post by 36 seconds

Apr 20 10:56:54 weatherpi weewxd[10052]: INFO weewx.restx: WOW: Published record 2025-04-20 10:55:00 BST (1745142900)

Apr 20 10:56:54 weatherpi weewxd[10052]: INFO weewx.restx: PWSWeather: Published record 2025-04-20 10:55:00 BST (1745142900)

Apr 20 10:56:54 weatherpi weewxd[10052]: INFO weewx.restx: Wunderground-PWS: Published record 2025-04-20 10:55:00 BST (1745142900)

Apr 20 10:56:55 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 20 10:56:56 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Requesting 200 LOOP packets.

Apr 20 10:56:57 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 20 10:57:31 weatherpi weewxd[10052]: DEBUG weewx.restx: StationRegistry: Posting too frequently: HTTP Error 429: TOO MANY REQUESTS

Apr 20 10:57:31 weatherpi weewxd[10052]: ERROR weewx.restx: StationRegistry: Failed to publish record 2025-04-20 10:55:00 BST (1745142900): HTTP Error 429: TOO MANY REQUESTS

Apr 20 10:57:57 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:e4:57:40:c2:d3:72:08:00 SRC=192.168.0.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=44679 PROTO=2

Apr 20 10:57:58 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:f4:21:ca:86:dc:36:08:00 SRC=192.168.0.24 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=59565 PROTO=2

Apr 20 10:57:59 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:00:0e:58:13:0e:86:08:00 SRC=192.168.0.37 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2

Apr 20 10:58:58 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:f4:21:ca:86:dc:36:08:00 SRC=192.168.0.24 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=7167 PROTO=2

Apr 20 10:59:48 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:de:53:4c:63:e9:ca:08:00 SRC=192.168.0.102 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=49071 PROTO=2

Apr 20 11:00:02 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:01:e4:57:40:c2:d3:72:08:00 SRC=192.168.0.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=44688 PROTO=2

Apr 20 11:00:02 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:d4:da:cd:c8:97:af:08:00 SRC=192.168.0.154 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2

Apr 20 11:00:15 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Getting archive packets since 2025-04-20 10:55:00 BST (1745142900)

Apr 20 11:00:16 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Successfully woke up Vantage console

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Retrieving 1 page(s); starting index= 1

Apr 20 11:00:18 weatherpi kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:00:5e:00:00:fb:de:53:4c:63:e9:ca:08:00 SRC=192.168.0.102 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=14490 PROTO=2

Apr 20 11:00:18 weatherpi weewxd[10052]: INFO weewx.manager: Added record 2025-04-20 11:00:00 BST (1745143200) to database 'weewx.sdb'

Apr 20 11:00:18 weatherpi weewxd[10052]: INFO weewx.manager: Added record 2025-04-20 11:00:00 BST (1745143200) to daily summary in 'weewx.sdb'

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: DMPAFT complete: page timestamp 2025-04-11 13:40:00 BST (1744375200) less than final timestamp 2025-04-20 11:00:00 BST (1745143200)

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Catch up complete.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.restx: StationRegistry: wait interval (300 < 86400) has not passed for record 2025-04-20 11:00:00 BST (1745143200)

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Running reports for latest time in the database.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Report 'SeasonsReport' not enabled. Skipping.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Running report 'Belchertown'

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.drivers.vantage: Requesting 200 LOOP packets.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Belchertown/skin.conf for report 'Belchertown'

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Cannot read localization file /etc/weewx/skins/Belchertown/lang/en.conf for report 'Belchertown': Config file not found: "/etc/weewx/skins/Belchertown/lang/en.conf".

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: **** Using defaults instead.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Unable to set locale 'en': unsupported locale setting. Using default.

Apr 20 11:00:18 weatherpi weewxd[10052]: DEBUG weewx.reportengine: Running generators for report 'Belchertown' in directory '/etc/weewx/skins/Belchertown' with locale 'en_GB.UTF-8'

Apr 20 11:00:19 weatherpi weewxd[10052]: DEBUG weewx.cheetahgenerator: Using search list ['user.belchertown.getData', 'weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.DisplayOptions', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.Gettext', 'weewx.cheetahgenerator.JSONHelpers', 'weewx.cheetahgenerator.PlotInfo', 'weewx.cheetahgenerator.SkinInfo', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo']

Apr 20 11:00:19 weatherpi weewxd[10052]: INFO user.belchertown: version 1.3.1

Apr 20 11:00:19 weatherpi weewxd[10052]: DEBUG weewx.manager: Daily summary version is 4.0

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.cheetahgenerator.CheetahGenerator'

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****  'radar_width'

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****  Traceback (most recent call last):

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 248, in run

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      obj.start()

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 465, in start

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      self.run()

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 166, in run

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      ngen = self.generate(gen_dict[section_name], section_name, self.gen_ts)

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      ngen += self.generate(section[subsection], subsection, gen_ts)

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      ngen += self.generate(section[subsection], subsection, gen_ts)

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 309, in generate

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      searchList = self._getSearchList(encoding, timespan,

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 401, in _getSearchList

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      search_list += obj.get_extension_list(timespan, db_lookup)

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/etc/weewx/bin/user/belchertown.py", line 458, in get_extension_list

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      radar_width = self.generator.skin_dict["Extras"]["radar_width"]

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****    File "/usr/lib/python3/dist-packages/configobj/__init__.py", line 554, in __getitem__

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      val = dict.__getitem__(self, key)

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****            ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****  KeyError: 'radar_width'

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****  Generator terminated

Apr 20 11:00:19 weatherpi weewxd[10052]: Traceback (most recent call last):

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/usr/share/weewx/weewx/reportengine.py", line 248, in run

Apr 20 11:00:19 weatherpi weewxd[10052]:     obj.start()

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/usr/share/weewx/weewx/reportengine.py", line 465, in start

Apr 20 11:00:19 weatherpi weewxd[10052]:     self.run()

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 166, in run

Apr 20 11:00:19 weatherpi weewxd[10052]:     ngen = self.generate(gen_dict[section_name], section_name, self.gen_ts)

Apr 20 11:00:19 weatherpi weewxd[10052]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate

Apr 20 11:00:19 weatherpi weewxd[10052]:     ngen += self.generate(section[subsection], subsection, gen_ts)

Apr 20 11:00:19 weatherpi weewxd[10052]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 226, in generate

Apr 20 11:00:19 weatherpi weewxd[10052]:     ngen += self.generate(section[subsection], subsection, gen_ts)

Apr 20 11:00:19 weatherpi weewxd[10052]:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 309, in generate

Apr 20 11:00:19 weatherpi weewxd[10052]:     searchList = self._getSearchList(encoding, timespan,

Apr 20 11:00:19 weatherpi weewxd[10052]:                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/usr/share/weewx/weewx/cheetahgenerator.py", line 401, in _getSearchList

Apr 20 11:00:19 weatherpi weewxd[10052]:     search_list += obj.get_extension_list(timespan, db_lookup)

Apr 20 11:00:19 weatherpi weewxd[10052]:                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/etc/weewx/bin/user/belchertown.py", line 458, in get_extension_list

Apr 20 11:00:19 weatherpi weewxd[10052]:     radar_width = self.generator.skin_dict["Extras"]["radar_width"]

Apr 20 11:00:19 weatherpi weewxd[10052]:                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]:   File "/usr/lib/python3/dist-packages/configobj/__init__.py", line 554, in __getitem__

Apr 20 11:00:19 weatherpi weewxd[10052]:     val = dict.__getitem__(self, key)

Apr 20 11:00:19 weatherpi weewxd[10052]:           ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Apr 20 11:00:19 weatherpi weewxd[10052]: KeyError: 'radar_width'

Apr 20 11:00:19 weatherpi weewxd[10052]: INFO weewx.reportengine: Copied 36 files to /var/www/html/weewx/belchertown


Karen K

unread,
Apr 20, 2025, 1:28:14 PM4/20/25
to weewx-user
hind...@gmail.com schrieb am Sonntag, 20. April 2025 um 12:12:28 UTC+2:

Apr 20 11:00:19 weatherpi weewxd[10052]: ERROR weewx.reportengine:         ****      radar_width = self.generator.skin_dict["Extras"]["radar_width"]



It looks far better than before. If you read the syslog messages carefully you find that the key radar_width in section [Extras] is the next one that is missing. You can do this step by step without posting every step here. Look for the key that is mentioned in the logs and add it to skin.conf, then wait for the next archive cycle to pass. If I see it right you need not restart WeeWX for this.
 
Reply all
Reply to author
Forward
0 new messages