Humor me. Please post the output. On Mon, May 22, 2023 at 2:40 PM Steeple Ian <[email protected]> wrote:
> Yes they do, that is what confuses me. > > On Monday, May 22, 2023 at 10:22:51 PM UTC+1 Tom Keffer wrote: > >> This is surely a straightforward permissions and ownership issue. >> >> What do you see with >> >> *ls -l /home/igm/weewx-data/archive* >> >> >> What user is the daemon running as? >> >> *cat /etc/systemd/system/weewx.service* >> >> >> They should match. >> >> -tk >> >> On Mon, May 22, 2023 at 2:13 PM Steeple Ian <[email protected]> wrote: >> >>> Tom, >>> >>> This is a complete report of the process I used >>> >>> New development server up and running on RaspberryPi B+ >>> For the sake of this exercise the user ID is igm >>> OS Raspberry PI OS Lite (64-Bit) >>> installed applications: - >>> Webmin 2.021 (open source control panel-like appication) >>> Apache 2 >>> >>> installed WeeWX 5.0.0b1: - >>> sudo apt update && sudo apt upgrade >>> sudo apt -y install gcc >>> sudo apt -y install python3-dev >>> sudo apt -y install python3-pip >>> python3 -m pip install wheel >>> python3 -m pip install weewx --user >>> python3 -m pip install --upgrade ephem (the version of ephem that >>> wheel installs 3.7.7.0 has a known bug, this upgrades to ephem 4.1.4) >>> cd /home/igm/.local >>> python3 ./weectl station create (selected simulator as driver and >>> edited weewx.conf to set debug =2, HTML_ROOT = /var/www/html/weewx set >>> in StdReport stanza. Complete weewx.conf at the foot of this posting) >>> cd ~/weewx-data sudo >>> cp util/systemd/weewx.service /etc/systemd/system >>> sudo systemctl daemon-reload >>> sudo systemctl enable weewx >>> sudo systemctl start weewx >>> >>> After the completion of the first achive cycle, Seasons skin created >>> perfectly and subsequently updating every 5min >>> >>> Next stage was to stop WeeWX on my main server and make a copy of my >>> working database file >>> Stopped WeeWX on my development server, moved the working database file >>> copy to my development server in place of the existing database file. >>> To match the ownership, group and permissions: - >>> cd / >>> sudo chown igm:igm /home/igm/weewx-data/archive/weewx.sdb >>> sudo chmod 644 /home/igm/weewx-data/archive/weewx.sdb >>> (checked in my control panel that attributes had been changed >>> correctly) >>> restarted weewx on the devlopment server and logged the below error >>> messages >>> (I tried sudo chmod 777 but still got the same errors) >>> >>> I stopped WeeWX again and tried: - >>> wee_database --update (but still the same errors on restart) >>> >>> I then tried: - >>> wee_database --drop-daily >>> wee_database --rebuild >>> >>> This combination then cleared the errors and the database started >>> updating >>> >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Replace failed for database weewx.sdb: >>> attempt to write a readonly database May 22 21:00:14 igm weewx[13207] ERROR >>> weewx.manager: Replace failed for database weewx.sdb: attempt to write a >>> readonly database May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: >>> Replace failed for database weewx.sdb: attempt to write a readonly database >>> May 22 21:00:14 igm weewx[13207] ERROR weewx.manager: Replace failed for >>> database weewx.sdb: attempt to write a readonly database May 22 21:00:14 >>> igm weewx[13207] ERROR weewx.manager: Replace failed for database >>> weewx.sdb: attempt to write a readonly database May 22 21:00:14 igm >>> weewx[13207] ERROR weewx.manager: Unable to add record 2023-05-22 21:00:00 >>> BST (1684785600) to database 'weewx.sdb': attempt to write a readonly >>> database >>> >>> My weewx.conf file: - >>> >>> # WEEWX CONFIGURATION FILE >>> # >>> # Copyright (c) 2009-2022 Tom Keffer <[email protected]> >>> # See the file LICENSE.txt for your rights. >>> >>> >>> ############################################################################## >>> >>> # This section is for general configuration information. >>> >>> # Set to 1 for extra debug info, otherwise comment it out or set to zero >>> debug = 2 >>> >>> # Root directory of the weewx data file hierarchy for this station >>> WEEWX_ROOT = /home/igm/weewx-data >>> >>> # 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 = 5.0.0b1 >>> >>> >>> ############################################################################## >>> >>> # This section is for information about the station. >>> >>> [Station] >>> >>> # Description of the station location, such as your town: >>> location = "Steeple Claydon, UK" >>> >>> # Latitude in decimal degrees. Negative for southern hemisphere >>> latitude = 51.940 >>> # Longitude in decimal degrees. Negative for western hemisphere. >>> longitude = -0.987 >>> >>> # Altitude of the station, with the unit it is in. This is used only >>> # if the hardware cannot supply a value. >>> altitude = 88, meter # Choose 'foot' or 'meter' for unit >>> >>> # Set to type of station hardware. There must be a corresponding >>> stanza >>> # in this file, which includes a value for the 'driver' option. >>> station_type = Simulator >>> >>> # If you have a website, you may specify an URL. This is required if >>> you >>> # intend to register your station. >>> #station_url = https://www.example.com >>> >>> # The start of the rain year (1=January; 10=October, etc.). This is >>> # downloaded from the station if the hardware supports it. >>> rain_year_start = 1 >>> >>> # Start of week (0=Monday, 6=Sunday) >>> week_start = 0 >>> >>> >>> ############################################################################## >>> >>> [Simulator] >>> # This section is for the weewx weather station simulator >>> >>> # The time (in seconds) between LOOP packets. >>> loop_interval = 2.5 >>> >>> # The simulator mode can be either 'simulator' or 'generator'. >>> # Real-time simulator. Sleep between each LOOP packet. >>> mode = simulator >>> # Generator. Emit LOOP packets as fast as possible (useful for >>> testing). >>> #mode = generator >>> >>> # The start time. Format is YYYY-mm-ddTHH:MM. If not specified, the >>> default >>> # is to use the present time. >>> #start = 2011-01-01T00:00 >>> >>> # The driver to use: >>> driver = weewx.drivers.simulator >>> >>> >>> ############################################################################## >>> >>> # 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', located in the [Station] >>> section above. >>> register_this_station = False >>> >>> [[AWEKAS]] >>> # This section is for configuring posts to AWEKAS. >>> >>> # If you wish to post to AWEKAS, set the option 'enable' to >>> true, then specify a username >>> # and password. 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 post to CWOP, set the option 'enable' to true, >>> # then specify the station ID (e.g., CW1234). >>> enable = false >>> station = replace_me >>> # If this is an APRS (radio amateur) station, specify the >>> # passcode (e.g., 12345). Otherwise, ignore. >>> passcode = replace_me >>> >>> >>> [[PWSweather]] >>> # This section is for configuring posts to PWSweather.com. >>> >>> # If you wish to post to PWSweather.com, set the option 'enable' >>> to true, then specify a >>> # station and password. 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 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 = replace_me >>> password = replace_me >>> >>> [[Wunderground]] >>> # This section is for configuring posts to the Weather >>> Underground. >>> >>> # If you wish to post to the Weather Underground, set the option >>> 'enable' to true, then >>> # specify a station (e.g., 'KORHOODR3') and password. To guard >>> against parsing errors, put >>> # the password in quotes. >>> enable = false >>> station = replace_me >>> password = replace_me >>> >>> # If you plan on using wunderfixer, set the following >>> # to your API key: >>> api_key = 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 >>> >>> >>> ############################################################################## >>> >>> # This section specifies what reports, using which skins, to generate. >>> >>> [StdReport] >>> >>> # Where the skins reside, relative to WEEWX_ROOT >>> SKIN_ROOT = skins >>> >>> # Where the generated reports should go, relative to WEEWX_ROOT >>> HTML_ROOT = /var/www/html/weewx >>> >>> # Uncomment and change to override logging for reports >>> # log_success = True >>> # log_failure = True >>> >>> # The database binding indicates which data should be used in >>> reports. >>> data_binding = wx_binding >>> >>> # Each of the following subsections defines a report that will be >>> run. >>> # See the customizing guide to change the units, plot types and line >>> # colors, modify the fonts, display additional sensor data, and other >>> # customizations. Many of those changes can be made here by >>> overriding >>> # parameters, or by modifying templates within the skin itself. >>> >>> [[SeasonsReport]] >>> # The SeasonsReport uses the 'Seasons' skin, which contains the >>> # images, templates and plots for the report. >>> skin = Seasons >>> enable = true >>> >>> [[SmartphoneReport]] >>> # The SmartphoneReport uses the 'Smartphone' skin, and the >>> images and >>> # files are placed in a dedicated subdirectory. >>> skin = Smartphone >>> enable = false >>> HTML_ROOT = public_html/smartphone >>> >>> [[MobileReport]] >>> # The MobileReport uses the 'Mobile' skin, and the images and >>> files >>> # are placed in a dedicated subdirectory. >>> skin = Mobile >>> enable = false >>> HTML_ROOT = public_html/mobile >>> >>> [[StandardReport]] >>> # This is the old "Standard" skin. By default, it is not enabled. >>> skin = Standard >>> enable = false >>> >>> [[FTP]] >>> # FTP'ing the results to a webserver is treated as just another >>> report, >>> # albeit one with an unusual report generator! >>> skin = Ftp >>> >>> # If you wish to use FTP, set "enable" to "true", then >>> # fill out the next four lines. >>> # Use quotes around passwords to guard against parsing errors. >>> enable = false >>> user = replace_me >>> password = replace_me >>> server = replace_me # The ftp server name, e.g, >>> www.myserver.org >>> path = replace_me # The destination directory, e.g., /weather >>> >>> # Set to True for an FTP over TLS (FTPS) connection. Not all >>> servers >>> # support this. >>> secure_ftp = False >>> >>> # To upload files from something other than what HTML_ROOT is set >>> # to above, specify a different HTML_ROOT here. >>> #HTML_ROOT = public_html >>> >>> # 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 = public_html >>> >>> # Rsync can be configured to remove files from the remote server >>> if >>> # they don't exist under HTML_ROOT locally. USE WITH CAUTION: if >>> you >>> # make a mistake in the remote path, you could could >>> unintentionally >>> # cause unrelated files to be deleted. Set to 1 to enable remote >>> file >>> # deletion, zero to allow files to accumulate remotely. >>> delete = 0 >>> >>> # Options in the [[Defaults]] section below will apply to all >>> reports. >>> # What follows are a few of the more popular options you may want to >>> # uncomment, then change. >>> [[Defaults]] >>> >>> # Which language to use for all reports. Not all skins support >>> all languages. >>> # You can override this for individual reports. >>> lang = en >>> >>> # Which unit system to use for all reports. Choices are 'us', >>> 'metric', or 'metricwx'. >>> # You can override this for individual reports. >>> unit_system = 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 = US # Options are 'US', 'METRICWX', or 'METRIC' >>> >>> >>> ############################################################################## >>> >>> # This section can adjust data using calibration expressions. >>> >>> [StdCalibrate] >>> >>> [[Corrections]] >>> # For each type, an arbitrary calibration expression can be >>> given. >>> # It should be in the units defined in the StdConvert section. >>> # Example: >>> foo = foo + 0.2 >>> >>> >>> ############################################################################## >>> >>> # This section is for quality control checks. If units are not >>> specified, >>> # values must be in the units defined in the StdConvert section. >>> >>> [StdQC] >>> >>> [[MinMax]] >>> barometer = 26, 32.5, inHg >>> pressure = 24, 34.5, inHg >>> outTemp = -40, 120, degree_F >>> inTemp = 10, 120, degree_F >>> outHumidity = 0, 100 >>> inHumidity = 0, 100 >>> windSpeed = 0, 120, mile_per_hour >>> rain = 0, 10, inch >>> >>> >>> ############################################################################## >>> >>> # This section controls the origin of derived values. >>> >>> [StdWXCalculate] >>> >>> [[Calculations]] >>> # How to calculate derived quantities. Possible values are: >>> # hardware - use the value provided by hardware >>> # software - use the value calculated by weewx >>> # prefer_hardware - use value provide by hardware if available, >>> # otherwise use value calculated by weewx >>> >>> pressure = prefer_hardware >>> altimeter = prefer_hardware >>> appTemp = prefer_hardware >>> barometer = prefer_hardware >>> cloudbase = prefer_hardware >>> dewpoint = prefer_hardware >>> ET = prefer_hardware >>> heatindex = prefer_hardware >>> humidex = prefer_hardware >>> inDewpoint = prefer_hardware >>> maxSolarRad = prefer_hardware >>> rainRate = prefer_hardware >>> windchill = prefer_hardware >>> windrun = prefer_hardware >>> >>> >>> ############################################################################## >>> >>> # For hardware that supports it, this section controls how often the >>> # onboard clock gets updated. >>> >>> [StdTimeSynch] >>> >>> # How often to check the weather station clock for drift (in seconds) >>> clock_check = 14400 >>> >>> # How much it can drift before we will correct it (in seconds) >>> max_drift = 5 >>> >>> >>> ############################################################################## >>> >>> # This section is for configuring the archive service. >>> >>> [StdArchive] >>> >>> # If the station hardware supports data logging then the archive >>> interval >>> # will be downloaded from the station. Otherwise, specify it (in >>> seconds). >>> archive_interval = 300 >>> >>> # If possible, new archive records are downloaded from the station >>> # hardware. If the hardware does not support this, then new archive >>> # records will be generated in software. >>> # Set the following to "software" to force software record >>> generation. >>> record_generation = hardware >>> >>> # Whether to include LOOP data in hi/low statistics >>> loop_hilo = True >>> >>> # Uncomment and change to override logging for archive operations >>> # log_success = True >>> # log_failure = True >>> >>> # The data binding used to save archive records >>> data_binding = wx_binding >>> >>> >>> ############################################################################## >>> >>> # This section binds a data store to a database. >>> >>> [DataBindings] >>> >>> [[wx_binding]] >>> # The database must match one of the sections in [Databases]. >>> # This is likely to be the only option you would want to change. >>> database = archive_sqlite >>> # The name of the table within the database >>> table_name = archive >>> # The manager handles aggregation of data for historical >>> summaries >>> manager = weewx.manager.DaySummaryManager >>> # The schema defines the structure of the database. >>> # It is *only* used when the database is created. >>> schema = schemas.wview_extended.schema >>> >>> >>> ############################################################################## >>> >>> # This section defines various databases. >>> >>> [Databases] >>> >>> # A SQLite database is simply a single file >>> [[archive_sqlite]] >>> database_name = weewx.sdb >>> database_type = SQLite >>> >>> # MySQL >>> [[archive_mysql]] >>> database_name = weewx >>> database_type = MySQL >>> >>> >>> ############################################################################## >>> >>> # This section defines defaults for the different types of databases. >>> >>> [DatabaseTypes] >>> >>> # Defaults for SQLite databases >>> [[SQLite]] >>> driver = weedb.sqlite >>> # Directory in which the database files are located, relative to >>> WEEWX_ROOT: >>> SQLITE_ROOT = archive >>> >>> # Defaults for MySQL databases >>> [[MySQL]] >>> driver = weedb.mysql >>> # The host where the database is located >>> host = localhost >>> # The user name for logging in to the host >>> user = weewx >>> # The password (use quotes to guard against parsing errors) >>> password = weewx >>> >>> >>> ############################################################################## >>> >>> # 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 >>> >>> >>> >>> Ian >>> >>> >>> >>> >>> >>> >>> On Sunday, May 21, 2023 at 4:31:19 PM UTC+1 Steeple Ian wrote: >>> >>>> Thank you Tom, >>>> >>>> I will be back home tomorrow evening and planning a fresh install on a >>>> clean OS so I will document as I go along and feedback. >>>> >>>> Ian >>>> >>>> On Saturday, May 20, 2023 at 10:34:41 PM UTC+1 Tom Keffer wrote: >>>> >>>>> It would help if we could see the exact commands you were running, In >>>>> particular, did you use an explicit path to a weewx.conf? What was in that >>>>> configuration file? >>>>> >>>>> Nothing has changed in the database file, but how it is found is >>>>> different. >>>>> >>>>> On Sat, May 20, 2023 at 1:03 PM Steeple Ian <[email protected]> >>>>> wrote: >>>>> >>>>>> I have been trying out 5.0.0b1 to ensure that the weewx-`weather34 >>>>>> skin I maintain is compatible and have noticed an oddity when moving my >>>>>> existing weewx.sdb database file across. >>>>>> >>>>>> I installed using the pip installer method which was impressively >>>>>> smooth, ran for a while with the simulator, then installed the GW1000 >>>>>> Gateway driver. I then made a copy of my existing database file, stopped >>>>>> the new install and moved the copy across, restarted. >>>>>> >>>>>> On looking at the syslog, I noticed that there was an error writing >>>>>> to the database as the database file was reported as read only. At this >>>>>> point, I updated the ownership and permissions from the command line but >>>>>> got the same error report. I took another copy of the database file, same >>>>>> result. Eventually the only way I could get the database file into a >>>>>> writable condition was to use wee_database —drop-daily and —rebuild. >>>>>> >>>>>> I have never had a problem of copying a mature database file across >>>>>> to a new installation before. It was doubly baffling as I assume that it >>>>>> would not be possible to use —drop-daily and —rebuild if the the database >>>>>> file was truly read only. >>>>>> >>>>>> Ian >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "weewx-development" 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-development/6f3eb1c5-a7d7-4086-a24a-05d941812511n%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/weewx-development/6f3eb1c5-a7d7-4086-a24a-05d941812511n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "weewx-development" 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-development/16369f72-56f3-480f-8099-8686f551c948n%40googlegroups.com >>> <https://groups.google.com/d/msgid/weewx-development/16369f72-56f3-480f-8099-8686f551c948n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "weewx-development" 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-development/fbc224f3-c4b3-4063-b5a8-3897363efb65n%40googlegroups.com > <https://groups.google.com/d/msgid/weewx-development/fbc224f3-c4b3-4063-b5a8-3897363efb65n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "weewx-development" 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-development/CAPq0zEC_nSb-wDfxm5szY0--j6gd6m9cFxT76hdmn%2B34t4%2BxFA%40mail.gmail.com.
