Hello dear community,
Today I turn to you with the following problem. As you can see on my
website https://station.eckelmann-online.de I use the skin Belchertown. My
data is transferred from my station to WU and fetched via wee_import. So
far so good.
Now I'm trying to integrate the forecast from the DWD. It also works with
the file index_hook_after_station_info.inc, but I would like to include it
in the forecast function of the Belchertown skin. The field remains empty
for me, and the symbols are not displayed either.
[image: Screenshot 2022-10-11 133540.png]
I am attaching the syslog and debug snippets.
syslog:
Oct 11 12:03:51 Wetterstation systemd[1]: Started LSB: weewx weather system.
Oct 11 12:03:51 Wetterstation weewx[207] DEBUG __main__: Initializing engine
Oct 11 12:03:51 Wetterstation weewx[207] INFO weewx.engine: Loading station
type Interceptor (user.interceptor)
Oct 11 12:03:51 Wetterstation weewx[207] INFO user.interceptor: driver
version is 0.60
Oct 11 12:03:51 Wetterstation weewx[207] INFO user.interceptor: device
type: wu-client
Oct 11 12:03:51 Wetterstation weewx[207] INFO user.interceptor: hardware
name: weatherstation via interceptor
Oct 11 12:03:51 Wetterstation weewx[207] INFO user.interceptor: mode is
listen
Oct 11 12:03:51 Wetterstation weewx[207] INFO user.interceptor: listen on
:80
Oct 11 12:03:51 Wetterstation weewx[207] ERROR weewx.engine: Import of
driver failed: [Errno 98] Address already in use (<class 'OSError'>)
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
Traceback (most recent call last):
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
File "/usr/share/weewx/weewx/engine.py", line 119, in setupStation
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
self.console = loader_function(config_dict, self)
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
File "/usr/share/weewx/user/interceptor.py", line 316, in loader
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
return InterceptorDriver(**config_dict[DRIVER_NAME])
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
File "/usr/share/weewx/user/interceptor.py", line 2529, in __init__
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
self._device = self.DEVICE_TYPES.get(self._device_type)(**stn_dict)
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
File "/usr/share/weewx/user/interceptor.py", line 728, in __init__
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
super(WUClient, self).__init__(
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
File "/usr/share/weewx/user/interceptor.py", line 430, in __init__
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
self._server = Consumer.TCPServer(address, port, handler)
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
File "/usr/share/weewx/user/interceptor.py", line 585, in __init__
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
TCPServer.__init__(self, (address, int(port)), handler)
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
File "/usr/lib/python3.10/socketserver.py", line 452, in __init__
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
self.server_bind()
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
File "/usr/lib/python3.10/socketserver.py", line 466, in server_bind
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
self.socket.bind(self.server_address)
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL weewx.engine: ****
OSError: [Errno 98] Address already in use
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL __main__: Unable to load
driver: [Errno 98] Address already in use
Oct 11 12:03:51 Wetterstation weewx[207] CRITICAL __main__: ****
Exiting...
debug:
root@Wetterstation:~# sudo wee_debug --info
Using verbosity=1, displaying most info
wee_debug output will be sent to stdout(console)
Using configuration file /etc/weewx/weewx.conf
Using database binding 'wx_binding', which is bound to database
'archive_sqlite'
System info
Platform: Linux-5.15.60-1-pve-x86_64-with-glibc2.35
Python Version: 3.10.6
Load Information
1 minute load average: 0.83
5 minute load average: 0.87
15 minute load average: 1.03
General Weewx info
Weewx version 4.8.0 detected.
Station info
Station type: Interceptor
Driver: user.interceptor
Driver info
[Interceptor]
# This section is for the network traffic interceptor driver.
# The driver to use:
driver = user.interceptor
# Specify the hardware device to capture. Options include:
# acurite-bridge - acurite internet bridge, smarthub, or access
# observer - fine offset WH2600/HP1000/HP1003, ambient WS2902
# lw30x - oregon scientific LW301/LW302
# lacrosse-bridge - lacrosse GW1000U/C84612 internet bridge
# ecowitt-client - any hardware that uses the ecowitt protocol
# wu-client - any hardware that uses the weather underground protocol
device_type = wu-client
Currently installed extensions
Extension Name Version Description
interceptor 0.60 Capture weather data from HTTP requests
Belchertown 1.2 A clean modern skin with real time streaming
updates and interactive charts. Modeled after BelchertownWeather.com
Archive info
Database name: weewx.sdb
Table name: archive
Version 4.0
Unit system: 16 (METRIC)
First good timestamp: 2022-09-29 00:04:53 CEST (1664402693)
Last good timestamp: 2022-10-11 11:39:53 CEST (1665481193)
Number of records: 3548
weewx (weewx.conf) is set to use an archive interval of 120 seconds.
The station hardware was not interrogated in determining archive interval.
Databases configured in weewx.conf
Database name: weewx.sdb
Database driver: weedb.sqlite
Database name: weewx
Database driver: weedb.mysql
Database host: localhost
Parsed and obfuscated weewx.conf
# WEEWX CONFIGURATION FILE
#
#
# 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. May get overridden below.
log_success = True
# Whether to log unsuccessful operations. May get overridden below.
log_failure = True
# Do not modify this. It is used when installing and updating weewx.
version = 4.8.0
##############################################################################
# This section is for information about the station.
[Station]
# Description of the station location
location = "Quakenbrueck, Germany"
# Latitude in decimal degrees. Negative for southern hemisphere
latitude = 52.670
# Longitude in decimal degrees. Negative for western hemisphere.
longitude = 7.959
# Altitude of the station, with the unit it is in. This is used only
# if the hardware cannot supply a value.
altitude = 24, meter
# 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 = Interceptor
# If you have a website, you may specify an URL. This is required if you
# intend to register your station.
#station_url = http://www.example.com
# The start of the rain year (1=January; 10=October, etc.). This is
# downloaded from the station if the hardware supports it.
rain_year_start = 1
# Start of week (0=Monday, 6=Sunday)
week_start = 6
##############################################################################
[Interceptor]
# This section is for the network traffic interceptor driver.
# The driver to use:
driver = user.interceptor
# Specify the hardware device to capture. Options include:
# acurite-bridge - acurite internet bridge, smarthub, or access
# observer - fine offset WH2600/HP1000/HP1003, ambient WS2902
# lw30x - oregon scientific LW301/LW302
# lacrosse-bridge - lacrosse GW1000U/C84612 internet bridge
# ecowitt-client - any hardware that uses the ecowitt protocol
# wu-client - any hardware that uses the weather underground protocol
device_type = wu-client
##############################################################################
[Simulator]
# This section is for the weewx weather station simulator
# The time (in seconds) between LOOP packets.
loop_interval = 2.5
# The simulator mode can be either 'simulator' or 'generator'.
# Real-time simulator. Sleep between each LOOP packet.
mode = simulator
# Generator. Emit LOOP packets as fast as possible (useful for
testing).
#mode = generator
# The start time. Format is YYYY-mm-ddTHH:MM. If not specified, the
default
# is to use the present time.
#start = 2011-01-01T00:00
# The driver to use:
driver = weewx.drivers.simulator
##############################################################################
# This section is for uploading data to Internet sites
[StdRESTful]
# Uncomment and change to override logging for uploading services.
# log_success = True
# log_failure = True
[[StationRegistry]]
# To register this weather station with weewx, set this to true,
# then fill out option 'station_url' above.
register_this_station = false
[[AWEKAS]]
# This section is for configuring posts to AWEKAS.
# If you wish to post to AWEKAS, set the option 'enable' to true,
then specify a username
# and password. To guard against parsing errors, put the password
in quotes.
enable = false
username = XXX obfuscated by wee_debug XXX
password = XXX obfuscated by wee_debug XXX
[[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 = XXX obfuscated by wee_debug XXX
# If this is an APRS (radio amateur) station, specify the
# passcode (e.g., 12345). Otherwise, ignore.
passcode = replace_me
[[PWSweather]]
# This section is for configuring posts to PWSweather.com.
# If you wish to post to PWSweather.com, set the option 'enable' to
true, then specify a
# station and password. To guard against parsing errors, put the
password in quotes.
enable = false
station = XXX obfuscated by wee_debug XXX
password = XXX obfuscated by wee_debug XXX
[[WOW]]
# This section is for configuring posts to WOW.
# If you wish to post to WOW, set the option 'enable' to true, then
specify a station and
# password. To guard against parsing errors, put the password in
quotes.
enable = false
station = XXX obfuscated by wee_debug XXX
password = XXX obfuscated by wee_debug XXX
[[Wunderground]]
# This section is for configuring posts to the Weather Underground.
# If you wish to post to the Weather Underground, set the option
'enable' to true, then
# specify a station (e.g., 'KORHOODR3') and password. To guard
against parsing errors, put
# the password in quotes.
enable = false
station = XXX obfuscated by wee_debug XXX
password = XXX obfuscated by wee_debug XXX
# If you plan on using wunderfixer, set the following
# to your API key:
api_key = XXX obfuscated by wee_debug XXX
# Set the following to True to have weewx use the WU "Rapidfire"
# protocol. Not all hardware can support it. See the User's Guide.
rapidfire = False
##############################################################################
# This section specifies what reports, using which skins, to generate.
[StdReport]
# Where the skins reside, relative to WEEWX_ROOT
SKIN_ROOT = /etc/weewx/skins
# 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
[[Belchertown]]
skin = Belchertown
HTML_ROOT = /var/www/html
lang = de
[[FTP]]
# FTP'ing the results to a webserver is treated as just another
report,
# albeit one with an unusual report generator!
skin = Ftp
# If you wish to use FTP, set "enable" to "true", then
# fill out the next four lines.
# Use quotes around passwords to guard against parsing errors.
enable = false
user = XXX obfuscated by wee_debug XXX
password = XXX obfuscated by wee_debug XXX
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 = XXX obfuscated by wee_debug XXX
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 = de
# Which unit system to use for all reports. Choices are 'us',
'metric', or 'metricwx'.
# You can override this for individual reports.
unit_system = metricwx
[[[Units]]]
# Option "unit_system" above sets the general unit system, but
overriding specific unit
# groups is possible. These are popular choices. Uncomment and
set as appropriate.
# NB: The unit is always in the singular. I.e., 'mile_per_hour',
# NOT 'miles_per_hour'
[[[[Groups]]]]
# group_altitude = meter # Options are
'foot' or 'meter'
# group_pressure = mbar # Options are
'inHg', 'mmHg', 'mbar', or 'hPa'
# group_rain = mm # Options are
'inch', 'cm', or 'mm'
# group_rainrate = mm_per_hour # Options are
'inch_per_hour', 'cm_per_hour', or 'mm_per_hour'
# group_temperature = degree_C # Options are
'degree_C', 'degree_F', or 'degree_K'
# The following line is used to keep the above lines
indented properly.
# It can be ignored.
unused = unused
# Uncommenting the following section frequently results in more
# attractive formatting of times and dates, but may not work in
# your locale.
[[[[TimeFormats]]]]
# day = %H:%M
# week = %H:%M on %A
# month = %d-%b-%Y %H:%M
# year = %d-%b-%Y %H:%M
# rainyear = %d-%b-%Y %H:%M
# current = %d-%b-%Y %H:%M
# ephem_day = %H:%M
# ephem_year = %d-%b-%Y %H:%M
# The following line is used to keep the above lines
indented properly.
# It can be ignored.
unused = unused
[[[Labels]]]
# Users frequently change the labels for these observation types
[[[[Generic]]]]
# inHumidity = Inside Humidity
# inTemp = Inside Temperature
# outHumidity = Outside Humidity
# outTemp = Outside Temperature
# extraTemp1 = Temperature1
# extraTemp2 = Temperature2
# extraTemp3 = Temperature3
# The following line is used to keep the above lines
indented properly.
# It can be ignored.
unused = unused
##############################################################################
# This service acts as a filter, converting the unit system coming from
# the hardware to a unit system in the database.
[StdConvert]
# The target_unit affects only the unit system in the database. Once
# chosen it cannot be changed without converting the entire database.
# Modification of target_unit after starting weewx will result in
# corrupt data - the database will contain a mix of US and METRIC data.
#
# The value of target_unit does not affect the unit system for
# reporting - reports can display US, Metric, or any combination of
units.
#
# In most cases, target_unit should be left as the default: US
#
# In particular, those migrating from a standard wview installation
# should use US since that is what the wview database contains.
# DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING!
target_unit = METRIC # 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 = 120
# 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 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 = XXX obfuscated by wee_debug XXX
# The password (use quotes to guard against parsing errors)
password = XXX obfuscated by wee_debug XXX
##############################################################################
# This section configures the internal weewx engine.
[Engine]
# The following section specifies which services should be run and in
what order.
[[Services]]
prep_services = weewx.engine.StdTimeSynch
data_services = ,
process_services = weewx.engine.StdConvert,
weewx.engine.StdCalibrate, weewx.engine.StdQC,
weewx.wxservices.StdWXCalculate
xtype_services = weewx.wxxtypes.StdWXXTypes,
weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater,
weewx.wxxtypes.StdDelta
archive_services = weewx.engine.StdArchive
restful_services = weewx.restx.StdStationRegistry,
weewx.restx.StdWunderground, weewx.restx.StdPWSweather,
weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
report_services = weewx.engine.StdPrint, weewx.engine.StdReport
###############################################################################
[DeutscherWetterdienst]
path = /etc/weewx/skins/Belchertown/dwd
[[warning]]
icons = ../dwd/warn_icons_50x50
states = Niedersachsen
[[[counties]]]
Kreis Osnabrueck = OS
[[[cities]]]
Stadt Menslage = OS
[[forecast]]
icons = ../images
orientation = h, v
show_obs_symbols = True # optional
#show_obs_description = False # optional
#show_placemark = True # optional
[[Belchertown]]
section = Belchertown
warnings = OS
forecast = P0148
wee_debug report successfully generated
root@Wetterstation:~#
Maybe someone has an idea.
Many Thanks
--
You received this message because you are subscribed to the Google Groups
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/weewx-user/a6db0e34-e343-4dce-8d3f-70cb5231db24n%40googlegroups.com.