@matthew I think that the below responds to all your specific questions. Let me know if there is any other information that would help you. I am running a single instance of weewx on a Raspberry Pi 3B, which also runs various systemd services which monitor and manage my heating system and components of my power and lighting systems. I am currently running the latest release of Bullseye on the Pi. I know that Bookworm has been out and nominally stable for a while, and am working with it on a spare system, but some of my other software isn't yet convinced that it is happy to run under some of the new 'rules' that come with the new version of the OS. I am a reasonably competent Unix user and a reasonably competent Python (among other languages) programmer, but most of my low level OS and programming experience was gained on Windows OSes.
weewx is hooked up to a Davis Vantage Pro 2 Plus weather station, by means of a Meteo-pi HAT (which includes a RTC). The interface is seen by the Pi as its first serial port (serial0). I have been using weewx to monitor and record the weather station's output here since 2020, and for a while before that at the house in Illinois from which I moved at that time. The Version number in the weewx.conf file (copy attached) is 4.10.2, but it was apt installed when I moved to Bullseye, a couple of years ago, so regular apt upgrades will have been keeping the software updated. I have written and use a number of weewx user services to incorporate data from other sensors and to 'tweak' some of the data coming from the weather station before it gets stored. These have not caused any issues under the new version - they do do some file access, but only reading files, so access privileges would not be expected to be a problem (and aren't). I have weewx set up to generate two sets of reports, both using skins based on an early version of the Seasons skin, but with some (different) modifications and deletions. One of the reports shows all the information available to it (including some from independent sensors around my house) and is 'for internal use'; the other shows only standard weather information and is used for two public sites, one associated with my own personal site, and the other with a HOA site that I manage for my community. The HOA site 'cross-loads' the charts it displays from my personal site, so weewx is not directly concerned with uploading these image files to it. However, the HOA site gets current weather information from a Cumulus realtime.txt file generated by weewx which is uploaded directly to it, so weewx.conf has two FTP stanzas - one for the public site, and one for the realtime.txt file. The 'for internal use' report is written to /var/www/html/weewx, and served from there to the local network by an instance of nginx running on the Pi. nginx only needs read access to the files, so access rights weren't a problem. The public report is written to /var/www/html/weewx2, and FTP uploaded from there by weewx to my live site on an ISP's servers. The realtime.txt file is written to /var/www/html/weewx3, and FTP uploaded from there by weewx to a location on the HOA site. All the folders are regular 'physical' folders and are directly declared in my conf file - I try to avoid using symlinks unless I absolutely have to, since I frequently find their behavior non-intuitive! I actually had two classes of problems. weewx initially not running at all after the upgrade was deeply worrying, but relatively easy to troubleshoot, since the error reports from systemctl status were relatively clear in pointing to the problems. Once I got it running, by sorting out the most severe access problems, I had more difficult chasing down problems with my public reports, which were not being updated as a result of permissions errors that were not causing weewx to crash. As I noted also, my life was made immeasurably more difficult by the fact that the symptoms that I was initially seeing for the public reports suggested more problems of a type that I had already experienced from recent changes to my ISP's FTP servers, rather than issues with weewx generating them. I found getting the settings right for the two subfolders in my HTML report folders (NOAA and fonts) particularly tricky - probably because I initially used a recursive chmod command that was wrong for the directories affected. On Wednesday, February 21, 2024 at 7:13:08 PM UTC-5 matthew wall wrote: > On Wednesday, February 21, 2024 at 6:50:52 PM UTC-5 Peter Fletcher wrote: > > There were essentially no issues with the 4.x->5.x update. What I wasn't > prepared for was an update *from 5.01 to 5.02* clobbering everything *that > was previously working in 5.01*. I don't think that it is reasonable to > expect the user to carefully (re-)read all the documentation before > doing/allowing a 'second decimal place' update. > > > peter, it would be helpful if you could describe a bit more about your > configuration. > > are you running with hardware that required separate installation (e.g., > sdr) or hardware drivers or kernel modules? > > are you running multiple instances of weewd? > > are your reports all within a single directory tree, or are they scattered? > > did you implement the various report locations using symlinks, or is it > all explicitly declared within your weewx config file? > > did you have any issues with weewx integration to a local web server? if > so, how did you configure that? > > do you have ssh or other configurations for remote access that were > affected by the permissions changes? where are those located, and how are > they used? > > i'm working on a handful of adjustments to the deb/rpm packaging that will > hopefully avoid some of the issues you ran into. so description of systems > that are more extensive than just 'apt install' are very helpful. in > hindsight, we probably should have done the root-to-weewx change in the > 5.0.0 release, not a dot-dot. it was not until 5.0 went out that we > realized how many *more* issues there would be if some people end up with > weewx running as root while others run unprivileged. > > apologies for the disruption it caused. > > m > -- 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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/9e1630e8-37f6-429a-a096-992b573e9b2cn%40googlegroups.com.
# WEEWX CONFIGURATION FILE # # Copyright (c) 2009-2019 Tom Keffer <tkef...@gmail.com> # See the file LICENSE.txt for your rights. ############################################################################## # This section is for general configuration information. # Set to 1 for extra debug info, otherwise comment it out or set to zero debug = 0 # Root directory of the weewx data file hierarchy for this station WEEWX_ROOT = / # Whether to log successful operations log_success = True # Whether to log unsuccessful operations log_failure = True # How long to wait before timing out a socket (FTP, HTTP) connection socket_timeout = 20 # Do not modify this. It is used when installing and updating weewx. version = 4.10.2 ############################################################################## # This section is for information about the station. [Station] # Description of the station location location = "Rivera Greens, E Amherst, NY" # Latitude and longitude in decimal degrees latitude = 43.03438 longitude = -78.68736 # Altitude of the station, with unit it is in. This is downloaded from # from the station if the hardware supports it. altitude = 595, foot # Set to type of station hardware. There must be a corresponding stanza # in this file with a 'driver' parameter indicating the driver to be used. station_type = Vantage # If you have a website, you may specify an URL station_url = https://fletchers-uk.com/weather # 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 ############################################################################## [Vantage] # This section is for the Davis Vantage series of weather stations. # Connection type: serial or ethernet # serial (the classic VantagePro) # ethernet (the WeatherLinkIP or Serial-Ethernet bridge) type = serial # If the connection type is serial, a port must be specified: # Debian, Ubuntu, Redhat, Fedora, and SuSE: # /dev/ttyUSB0 is a common USB port name # /dev/ttyS0 is a common serial port name # BSD: # /dev/cuaU0 is a common serial port name port = /dev/serial0 # If the connection type is ethernet, an IP Address/hostname is required: host = 1.2.3.4 ###################################################### # The rest of this section rarely needs any attention. # You can safely leave it "as is." ###################################################### # Serial baud rate (usually 19200) baudrate = 19200 # TCP port (when using the WeatherLinkIP) tcp_port = 22222 # TCP send delay (when using the WeatherLinkIP): tcp_send_delay = 0.5 # The type of LOOP packet to request: 1 = LOOP1; 2 = LOOP2; 3 = both loop_request = 3 # The id of your ISS station (usually 1). If you use a wind meter connected # to a anemometer transmitter kit, use its id iss_id = 1 # How long to wait for a response from the station before giving up (in # seconds; must be greater than 2) timeout = 4 # How long to wait before trying again (in seconds) wait_before_retry = 1.2 # How many times to try before giving up: max_tries = 4 # Vantage model Type: 1 = Vantage Pro; 2 = Vantage Pro2 model_type = 2 # The driver to use: driver = weewx.drivers.vantage ############################################################################## # This section is for uploading data to Internet sites [StdRESTful] [[StationRegistry]] # To register this weather station with weewx, set this to true register_this_station = true [[AWEKAS]] # This section is for configuring posts to AWEKAS. # If you wish to do this, set the option 'enable' to true, # and specify a username and password. # To guard against parsing errors, put the password in quotes. enable = false username = replace_me password = replace_me [[CWOP]] # This section is for configuring posts to CWOP. # If you wish to do this, set the option 'enable' to true, # and specify the station ID (e.g., CW1234). enable = false station = replace_me # If this is an APRS (radio amateur) station, uncomment # the following and replace with a passcode (e.g., 12345). #passcode = replace_me (APRS stations only) [[PWSweather]] # This section is for configuring posts to PWSweather.com. # If you wish to do this, set the option 'enable' to true, # and specify a station and password. # To guard against parsing errors, put the password in quotes. enable = false station = replace_me password = replace_me [[WOW]] # This section is for configuring posts to WOW. # If you wish to do this, set the option 'enable' to true, # and specify a station and password. # To guard against parsing errors, put the password in quotes. enable = false station = replace_me password = replace_me [[Wunderground]] # This section is for configuring posts to the Weather Underground. # If you wish to do this, set the option 'enable' to true, # and specify a station (e.g., 'KORHOODR3') and password. # To guard against parsing errors, put the password in quotes. enable = false station = replace_me password = replace_me # Set the following to True to have weewx use the WU "Rapidfire" # protocol. Not all hardware can support it. See the User's Guide. rapidfire = False # If you plan on using wunderfixer, set the following # to your API key: api_key = replace_me ############################################################################## # This section specifies what reports, using which skins, to generate. [StdReport] # Where the skins reside, relative to WEEWX_ROOT SKIN_ROOT = /etc/weewx/skins # Where the generated reports should go, relative to WEEWX_ROOT HTML_ROOT = /var/www/html/weewx # The database binding indicates which data should be used in reports. data_binding = wx_binding # Whether to log a successful operation log_success = True # Whether to log an unsuccessful operation log_failure = True #### # Each of the following subsections defines a report that will be run. # See the customizing guide to change the units, plot types and line # colors, modify the fonts, display additional sensor data, and other # customizations. Many of those changes can be made here by overriding # parameters, or by modifying templates within the skin itself. [[SeasonsReport]] # The SeasonsReport uses the 'MySeasons' skin, which contains the # images, templates and plots for the report. # MySeasons is a 'tweaked' version of an earlier incarnation of the # Seasons skin. # When major revisions were (for good and sufficient reasons) made to Seasons # for one of the v 4.x weewx revisions, I found it easier to revert to and # stick with my 'tweaked' version of the original Seasons code. skin = MySeasons enable = true [[PublicReport]] # Limited version of MySeasons Report for public access skin = Mini-Seasons HTML_ROOT = /var/www/html/weewx2 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 [[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 [[StandardReport]] # This is the old "Standard" skin. By default, it is not enabled. skin = Standard enable = false [[FTP2]] # sends current weather data direct to RGHOA site skin = Ftp enable = true HTML_ROOT = /var/www/html/weewx3 user = r***** password = ***** server = ftp.******** path = /public_html/new secure_ftp = False port = 21 passive = 1 [[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 = true HTML_ROOT = /var/www/html/weewx2 user = w***** password = ******** server = ftp.******* # The ftp server name, e.g, www.myserver.org path = / # The destination directory, e.g., /weather # Set to True for an FTP over TLS (FTPS) connection. Not all servers # support this. secure_ftp = False # 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 #### # Various options for customizing your reports. [[Defaults]] [[[Units]]] # The following section sets what unit to use for each unit group. # NB: The unit is always in the singular. I.e., 'mile_per_hour', # NOT 'miles_per_hour' [[[[Groups]]]] group_altitude = foot # Options are 'foot' or 'meter' group_degree_day = degree_F_day # Options are 'degree_F_day' or 'degree_C_day' group_pressure = inHg # Options are 'inHg', 'mmHg', 'mbar', or 'hPa' group_rain = inch # Options are 'inch', 'cm', or 'mm' group_rainrate = inch_per_hour # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour' group_speed = mile_per_hour # Options are 'mile_per_hour', 'km_per_hour', 'knot', or 'meter_per_second' group_speed2 = mile_per_hour2 # Options are 'mile_per_hour2', 'km_per_hour2', 'knot2', or 'meter_per_second2' group_temperature = degree_F # Options are 'degree_F' or 'degree_C' # The following section sets the formatting for each type of unit. [[[[StringFormats]]]] centibar = %.0f cm = %.2f cm_per_hour = %.2f degree_C = %.1f degree_F = %.1f degree_compass = %.0f foot = %.0f hPa = %.1f hour = %.1f inHg = %.3f inch = %.2f inch_per_hour = %.2f km_per_hour = %.0f km_per_hour2 = %.1f knot = %.0f knot2 = %.1f mbar = %.1f meter = %.0f meter_per_second = %.1f meter_per_second2 = %.1f mile_per_hour = %.0f mile_per_hour2 = %.1f mm = %.1f mmHg = %.1f mm_per_hour = %.1f percent = %.0f second = %.0f uv_index = %.1f volt = %.1f watt_per_meter_squared = %.0f NONE = " N/A" # The following section sets the label for each type of unit [[[[Labels]]]] day = " day", " days" hour = " hour", " hours" minute = " minute", " minutes" second = " second", " seconds" NONE = "" # The following section sets the format for each time scale. # The values below will work in every locale, but they may not look # particularly attractive. [[[[TimeFormats]]]] hour = %H:%M day = %X week = %X (%A) month = %x %X year = %x %X rainyear = %x %X current = %x %X ephem_day = %X ephem_year = %x %X [[[[Ordinates]]]] # Ordinal directions. The last one is for no wind direction directions = N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW, N/A # The following section sets the base temperatures used for the # calculation of heating and cooling degree-days. [[[[DegreeDays]]]] # Base temperature for heating days, with unit: heating_base = 65, degree_F # Base temperature for cooling days, with unit: cooling_base = 65, degree_F # Base temperature for growing days, with unit: growing_base = 50.0, degree_F # A trend takes a difference across a time period. The following # section sets the time period, and how big an error is allowed to # still be counted as the start or end of a period. [[[[Trend]]]] time_delta = 10800 # 3 hours time_grace = 300 # 5 minutes # The labels to be used for each observation type [[[Labels]]] # Set to hemisphere abbreviations suitable for your location: hemispheres = N, S, E, W # Formats to be used for latitude whole degrees, longitude whole # degrees, and minutes: latlon_formats = %02d, %03d, %05.2f # Generic labels, keyed by an observation type. [[[[Generic]]]] barometer = Barometer dewpoint = Dew Point ET = ET heatindex = Heat Index inHumidity = Inside Humidity inTemp = Inside Temperature outHumidity = Relative Humidity outTemp = Outside Temperature radiation = Radiation rain = Rain rainRate = Rain Rate UV = UV Index windDir = Wind Direction windGust = Gust Speed windGustDir = Gust Direction windSpeed = Wind Speed windchill = Wind Chill windgustvec = Gust Vector windvec = Wind Vector extraTemp1 = Console Temperature extraTemp2 = Basement Temperature extraTemp3 = Bedroom Temperature extraHumid1 = Console Humidity extraHumid2 = Basement Humidity heatingTemp = Thermostat Temperature # Sensor status indicators rxCheckPercent = Signal Quality txBatteryStatus = Transmitter Battery windBatteryStatus = Wind Battery rainBatteryStatus = Rain Battery outTempBatteryStatus = Outside Temperature Battery inTempBatteryStatus = Inside Temperature Battery consBatteryVoltage = Console Battery heatingVoltage = Heating Battery supplyVoltage = Supply Voltage referenceVoltage = Reference Voltage [[[Almanac]]] # The labels to be used for the phases of the moon: moon_phases = New, Waxing crescent, First quarter, Waxing gibbous, Full, Waning gibbous, Last quarter, Waning crescent ############################################################################## # This service acts as a filter, converting the unit system coming from # the hardware to a unit system in the database. [StdConvert] # The target_unit affects only the unit system in the database. Once # chosen it cannot be changed without converting the entire database. # Modification of target_unit after starting weewx will result in # corrupt data - the database will contain a mix of US and METRIC data. # # The value of target_unit does not affect the unit system for # reporting - reports can display US, Metric, or any combination of units. # # In most cases, target_unit should be left as the default: US # # In particular, those migrating from a standard wview installation # should use US since that is what the wview database contains. # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING! target_unit = US # Options are 'US', 'METRICWX', or 'METRIC' ############################################################################## # This section can adjust data using calibration expressions. [StdCalibrate] [[Corrections]] # For each type, an arbitrary calibration expression can be given. # It should be in the units defined in the StdConvert section. # Example: foo = foo + 0.2 ############################################################################## # This section is for quality control checks. If units are not specified, # values must be in the units defined in the StdConvert section. [StdQC] [[MinMax]] barometer = 26, 32.5, inHg pressure = 24, 34.5, inHg outTemp = -40, 120, degree_F inTemp = 40, 100, degree_F extraTemp1 = 40, 100, degree_F extraTemp2 = 40, 100, degree_F extraTemp3 = 40, 100, degree_F outHumidity = 0, 100 inHumidity = 20, 100 extraHumid1 = 20, 100 extraHumid2 = 20, 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 pressure = hardware barometer = prefer_hardware altimeter = prefer_hardware # altimeter = hardware # windchill = prefer_hardware windchill = hardware # heatindex = prefer_hardware heatindex = hardware # dewpoint = prefer_hardware dewpoint = hardware inDewpoint = prefer_hardware rainRate = prefer_hardware maxSolarRad = prefer_hardware cloudbase = prefer_hardware humidex = prefer_hardware appTemp = prefer_hardware ET = prefer_hardware windrun = prefer_hardware ############################################################################## # For hardware that supports it, this section controls how often the # onboard clock gets updated. [StdTimeSynch] # How often to check the weather station clock for drift (in seconds) clock_check = 14400 # How much it can drift before we will correct it (in seconds) max_drift = 5 ############################################################################## # This section is for configuring the archive service. [StdArchive] # If the station hardware supports data logging then the archive interval # will be downloaded from the station. Otherwise, specify it (in seconds). archive_interval = 300 # If possible, new archive records are downloaded from the station # hardware. If the hardware does not support this, then new archive # records will be generated in software. # Set the following to "software" to force software record generation. record_generation = hardware # Whether to include LOOP data in hi/low statistics loop_hilo = True # The data binding used to save archive records data_binding = wx_binding ############################################################################## # This section binds a data store to a database. [DataBindings] [[wx_binding]] # The database must match one of the sections in [Databases]. # This is likely to be the only option you would want to change. database = archive_sqlite # The name of the table within the database table_name = archive # The manager handles aggregation of data for historical summaries manager = weewx.wxmanager.WXDaySummaryManager # The schema defines the structure of the database. # It is *only* used when the database is created. schema = schemas.wview.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 t host = localhost # The user name for logging in to the host user = weewx # The password for the user name (quotes guard against parsing errors) password = weewx ############################################################################# # This section defines the location of the crt output file [CumulusRealTime] filename = /var/www/html/weewx3/realtime.txt ############################################################################# # This section configures the internal weewx engine. [Engine] # The following section specifies which services should be run and in what order. [[Services]] prep_services = weewx.engine.StdTimeSynch data_services = user.NewTH.ArchTHService, user.NewTH.LoopTHService, user.NewSunshine.LoopSunshineDuration, user.NewSunshine.ArchSunshineDuration # data_services = user.NewTH.ArchTHService, user.NewTH.LoopTHService, user.NewSunshine.LoopSunshineDuration, user.NewSunshine.ArchSunshineDuration, user.Debug.ReportData # Comment out the line containing the Debug service (and include the other) for normal running 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, user.crt.CumulusRealTime 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