Here is the output from the groups command I am user pi: pi@raspberrypi:~ $ groups pi adm dialout cdrom sudo audio video plugdev games users netdev lpadmin weewx gpio i2c spi render input
Here is the weewx.conf: # WEEWX CONFIGURATION FILE # # Copyright (c) 2009-2024 Tom Keffer <[email protected]> # See the file LICENSE.txt for your rights. ############################################################################## # This section is for general configuration information. # Set to 1 for extra debug info, otherwise comment it out or set to zero. debug = 0 # Whether to log successful operations. May get overridden below. log_success = True # Whether to log unsuccessful operations. May get overridden below. log_failure = True # This configuration file was created by ... version = 5.2.0 ############################################################################## # This section is for information about the station. [Station] # Description of the station location, such as your town. location = "Ron's Crib - Chalfont, PA" # Latitude in decimal degrees. Negative for southern hemisphere. latitude = 40.2803 # Longitude in decimal degrees. Negative for western hemisphere. longitude = -75.2303 # Altitude of the station, with the unit it is in. This is used only # if the hardware cannot supply a value. altitude = 300, foot # Choose 'foot' or 'meter' for unit # Set to type of station hardware. There must be a corresponding stanza # in this file, which includes a value for the 'driver' option. station_type = fileparse # If you have a website, you may specify an URL. The URL is required if you # intend to register your station. The URL must include the scheme, for # example, "http://" or "https://" #station_url = https://www.example.com # The start of the rain year (1=January; 10=October, etc.). This is # downloaded from the station if the hardware supports it. rain_year_start = 1 # Start of week (0=Monday, 6=Sunday) week_start = 6 ############################################################################## [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/bin/user.fileparse ############################################################################## [FileParse] poll_interval = 10 path = /var/tmp/data.csv driver = user.fileparse loop_interval = 10 [[label_map]] pressure = pressure outTemp = outTemp inTemp = inTemp outHumidity = outHumidity inHumidity = inHumidity windSpeed = windSpeed windDir = windDir windGust = windGust windGustDir = windGustDir supplyVoltage = supplyVoltage lightLevel = radiation rain = rain ############################################################################## # This section is for uploading data to Internet sites [StdRESTful] # Uncomment and change to override logging for uploading services. # log_success = True # log_failure = True [[StationRegistry]] # To register this weather station at weewx.com, set this to true, and # set option 'station_url', located in the [Station] section above. register_this_station = False [[AWEKAS]] # This section is for configuring posts to AWEKAS. # If you wish to post to AWEKAS, set the option 'enable' to true, then # specify a username and password. # Use quotes around the password to guard against parsing errors. enable = false username = replace_me password = replace_me [[CWOP]] # This section is for configuring posts to CWOP. # If you wish to post to CWOP, set the option 'enable' to true, # then specify the station ID (e.g., CW1234). enable = false station = replace_me # If this is an APRS (radio amateur) station, specify the # passcode (e.g., 12345). Otherwise, ignore. passcode = replace_me [[PWSweather]] # This section is for configuring posts to PWSweather.com. # If you wish to post to PWSweather.com, set the option 'enable' to # true, then specify a station and password. # Use quotes around the password to guard against parsing errors. enable = false station = replace_me password = replace_me [[WOW]] # This section is for configuring posts to WOW (wow.metoffice.gov.uk). # If you wish to post to WOW, set the option 'enable' to true, then # specify a station and password. # Use quotes around the password to guard against parsing errors. enable = false station = replace_me password = replace_me [[WOW-BE]] # This section is for configuring WeeWX to upload to WOW-BE (wow.meteo.be) # If you wish to post to WOW-BE, set the option 'enable' to true, then # specify a station and password. # Use quotes around the password to guard against parsing errors. enable = false station = replace_me password = replace_me [[Wunderground]] # This section is for configuring posts to the Weather Underground. # If you wish to post to the Weather Underground, set the option # 'enable' to true, then specify a station (e.g., 'KORHOODR3'). Use # the station key (find it at # https://www.wunderground.com/member/devices) for the password. enable = false station = replace_me password = replace_me # Set the following to True to have weewx use the WU "Rapidfire" # protocol. Not all hardware can support it. See the User's Guide. rapidfire = False ############################################################################## # 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 = false [[SkyPiratesReport]] # The SkyPiratesReport uses the 'SkyPirates' skin, which contains the #templates for the report. skin = SkyPirates 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 [[BasicReport]] skin = Basic enable = True # Language to use: lang = en # Unit system to use: unit_system = US # Where to put the results: HTML_ROOT = /var/www/html/weewx/basic [[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 = password = server = # The ftp server name, e.g, www.myserver.org path = public_html/ # The destination directory, e.g., /weather # Set to True for an FTP over TLS (FTPS) connection. Not all servers # support this. secure_ftp = False # To upload files from something other than what HTML_ROOT is set # to above, specify a different HTML_ROOT here. #HTML_ROOT = /var/www/html/weewx # Most FTP servers use port 21 port = 21 # Set to 1 to use passive mode, zero for active mode passive = 1 [[RSYNC]] # rsync'ing to a webserver is treated as just another report. skin = Rsync # If you wish to use rsync, you must configure passwordless ssh using # public/private key authentication from the user account that weewx # runs to the user account on the remote machine where the files # will be copied. # # If you wish to use rsync, set "enable" to "true", then # fill out server, user, and path. # The server should appear in your .ssh/config file. # The user is the username used in the identity file. # The path is the destination directory, such as /var/www/html/weather. # Be sure that the user has write permissions on the destination! enable = false server = replace_me user = replace_me path = replace_me # To upload files from something other than what HTML_ROOT is set # to above, specify a different HTML_ROOT here. #HTML_ROOT = /var/www/html/weewx # Rsync can be configured to remove files from the remote server if # they don't exist under HTML_ROOT locally. USE WITH CAUTION: if you # make a mistake in the remote path, you could could unintentionally # cause unrelated files to be deleted. Set to 1 to enable remote file # deletion, zero to allow files to accumulate remotely. delete = 0 # Options in the [[Defaults]] section below will apply to all reports. # What follows are a few of the more popular options you may want to # uncomment, then change. [[Defaults]] # Which language to use for all reports. Not all skins support all # languages. You can override this for individual reports. lang = en # Which unit system to use for all reports. Choices are 'us', 'metric', # or 'metricwx'. You can override this for individual reports. unit_system = us [[[Units]]] # Option "unit_system" above sets the general unit system, but # overriding specific unit groups is possible. These are popular # choices. Uncomment and set as appropriate. The unit is always # in the singular, e.g., 'mile_per_hour', NOT 'miles_per_hour' [[[[Groups]]]] # group_altitude = meter # Options are 'foot' or 'meter' # group_pressure = mbar # Options are 'inHg', 'mmHg', 'mbar', or 'hPa' # group_rain = mm # Options are 'inch', 'cm', or 'mm' # group_rainrate = mm_per_hour # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour' # group_temperature = degree_C # Options are 'degree_C', 'degree_F', or 'degree_K' # The following line is used to keep the above lines indented # properly. It can be ignored. unused = unused # Uncommenting the following section frequently results in more # attractive formatting of times and dates, but may not work in # your locale. [[[[TimeFormats]]]] # day = %H:%M # week = %H:%M on %A # month = %d-%b-%Y %H:%M # year = %d-%b-%Y %H:%M # rainyear = %d-%b-%Y %H:%M # current = %d-%b-%Y %H:%M # ephem_day = %H:%M # ephem_year = %d-%b-%Y %H:%M # The following line is used to keep the above lines indented # properly. It can be ignored. unused = unused [[[Labels]]] # Users frequently change the labels for these observation types. [[[[Generic]]]] barometer = Barometer dewpoint = Dew Point ET = ET heatindex = Heat Index inHumidity = Box Humidity inTemp = Box Temperature outHumidity = Humidity outTemp = Outside Temperature radiation = Radiation rain = Rain rainRate = Rain Rate UV = UV Index windDir = Wind Direction windGust = Gust Speed windGustDir = Gust Direction windSpeed2avg = Wind 2 Min Avg windDir2avg = Wind Dir 2 Min Avg windGust10avg = Gust 10 Min Avg windGustDir10avg = Gust Dir 10 Avg windSpeed = Wind Speed windchill = Wind Chill windgustvec = Gust Vector windvec = Wind Vector extraTemp1 = Temperature1 extraTemp2 = Temperature2 extraTemp3 = Temperature3 # 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 # The following line is used to keep the above lines indented # properly. It can be ignored. unused = unused ############################################################################## # This service converts the unit system coming from the hardware to a unit # system in the database. [StdConvert] # The target_unit affects only the unit system in the database. Once # chosen it cannot be changed without converting the entire database. # Modification of target_unit after starting weewx will result in # corrupt data - the database will contain a mix of US and METRIC data. # # The value of target_unit does not affect the unit system for # reporting - reports can display US, Metric, or any combination of units. # # In most cases, target_unit should be left as the default: US # # In particular, those migrating from a standard wview installation # should use US since that is what the wview database contains. # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING! target_unit = US # Options are 'US', 'METRICWX', or 'METRIC' ############################################################################## # This section can adjust data using calibration expressions. [StdCalibrate] [[Corrections]] # For each type, an arbitrary calibration expression can be given. # It should be in the units defined in the StdConvert section. # Example: foo = foo + 0.2 ############################################################################## # This section is for quality control checks. If units are not specified, # values must be in the units defined in the StdConvert section. [StdQC] [[MinMax]] barometer = 26, 32.5, inHg pressure = 24, 34.5, inHg outTemp = -40, 120, degree_F inTemp = 10, 120, degree_F outHumidity = 0, 100 inHumidity = 0, 100 windSpeed = 0, 120, mile_per_hour rain = 0, 10, inch ############################################################################## # This section controls the origin of derived values. [StdWXCalculate] [[Calculations]] # How to calculate derived quantities. Possible values are: # hardware - use the value provided by hardware # software - use the value calculated by weewx # prefer_hardware - use value provide by hardware if available, # otherwise use value calculated by weewx pressure = prefer_hardware altimeter = prefer_hardware appTemp = prefer_hardware barometer = prefer_hardware cloudbase = prefer_hardware dewpoint = prefer_hardware ET = prefer_hardware heatindex = prefer_hardware humidex = prefer_hardware inDewpoint = prefer_hardware maxSolarRad = prefer_hardware rainRate = prefer_hardware windchill = prefer_hardware windrun = prefer_hardware ############################################################################## # For hardware that supports it, this section controls how often the # onboard clock gets updated. [StdTimeSynch] # How often to check the weather station clock for drift (in seconds) clock_check = 14400 # How much it can drift before we will correct it (in seconds) max_drift = 5 ############################################################################## # This section is for configuring the archive service. [StdArchive] # If the station hardware supports data logging then the archive interval # will be downloaded from the station. Otherwise, specify it (in seconds). archive_interval = 300 # If possible, new archive records are downloaded from the station # hardware. If the hardware does not support this, then new archive # records will be generated in software. # Set the following to "software" to force software record generation. record_generation = hardware # Whether to include LOOP data in hi/low statistics. loop_hilo = True # Uncomment and change to override logging for archive operations. # log_success = True # log_failure = True # The data binding used to save archive records. data_binding = wx_binding ############################################################################## # This section binds a data store to a database. [DataBindings] [[wx_binding]] # The database must match one of the sections in [Databases]. # This is likely to be the only option you would want to change. database = archive_sqlite # The name of the table within the database. table_name = archive # The manager handles aggregation of data for historical summaries. manager = weewx.manager.DaySummaryManager # The schema defines the structure of the database. # It is *only* used when the database is created. schema = weewx.schemas.wview_extended.schema ############################################################################## # This section defines various databases. [Databases] # A SQLite database is simply a single file. [[archive_sqlite]] database_name = weewx.sdb database_type = SQLite # MySQL [[archive_mysql]] database_name = weewx database_type = MySQL ############################################################################## # This section defines defaults for the different types of databases. [DatabaseTypes] # Defaults for SQLite databases. [[SQLite]] driver = weedb.sqlite # Directory in which database files are located, relative to WEEWX_ROOT SQLITE_ROOT = /var/lib/weewx # Defaults for MySQL databases. [[MySQL]] driver = weedb.mysql # The host where the database is located. host = localhost # The user name for logging in to the host. user = weewx # Use quotes around the password to guard against parsing errors. password = weewx ############################################################################## # This section configures the internal weewx engine. [Engine] # This section specifies which services should be run and in what order. [[Services]] prep_services = weewx.engine.StdTimeSynch data_services = , 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.StdWOWBE, weewx.restx.StdAWEKAS report_services = weewx.engine.StdPrint, weewx.engine.StdReport Thanks for working through this with me! On Tuesday, October 28, 2025 at 5:11:46 PM UTC-4 Jobu wrote: > FWIW, on my system while files are assigned to the weewx group, group > permissions are 400 (read-only). > > This was a fresh install of weewx 5.1.0 using `apt install weewx` on > Unbuntu 24.04 > > On Tuesday, October 28, 2025 at 4:03:26 PM UTC-5 vince wrote: > > Permission denied generally means you tried to read or write from/to > someplace you aren't in the required group to succeed doing that. The > problem going away via sudo (which you shouldn't almost ever need to do > typically for weewx v5) generally confirms that. > > Keyerror frequently means a typo or something missing from weewx.conf so > you probably should post that for more eyeballs taking a look. > On Tuesday, October 28, 2025 at 1:52:47 PM UTC-7 Ron Walker wrote: > > Addtional information. After running the command the fileparse > installation appeared to finish successfully, however, when I started > weewx, it failed with the following: > > weewx.service - WeeWX > Loaded: loaded (/usr/lib/systemd/system/weewx.service; enabled; > preset: enabled) > Active: failed (Result: exit-code) since Tue 2025-10-28 16:43:39 EDT; > 8s ago > Duration: 801ms > Invocation: 61d79b2574f2414689af666970c8e86a > Docs: https://weewx.com/docs > Process: 1844 ExecStart=weewxd /etc/weewx/weewx.conf (code=exited, > status=1/FAILURE) > Main PID: 1844 (code=exited, status=1/FAILURE) > CPU: 702ms > > Oct 28 16:43:39 raspberrypi weewxd[1844]: > self.setupStation(config_dict) > Oct 28 16:43:39 raspberrypi weewxd[1844]: > ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ > Oct 28 16:43:39 raspberrypi weewxd[1844]: File > "/usr/share/weewx/weewx/engine.py", line 99, in setupStation > Oct 28 16:43:39 raspberrypi weewxd[1844]: driver = > config_dict[station_type]['driver'] > Oct 28 16:43:39 raspberrypi weewxd[1844]: > ~~~~~~~~~~~^^^^^^^^^^^^^^ > Oct 28 16:43:39 raspberrypi weewxd[1844]: File > "/usr/lib/python3/dist-packages/configobj/__init__.py", line 549, in > __getit> > Oct 28 16:43:39 raspberrypi weewxd[1844]: val = dict.__getitem__(self, > key) > Oct 28 16:43:39 raspberrypi weewxd[1844]: KeyError: 'fileparse' > Oct 28 16:43:39 raspberrypi systemd[1]: weewx.service: Main process > exited, code=exited, status=1/FAILURE > Oct 28 16:43:39 raspberrypi systemd[1]: weewx.service: Failed with result > 'exit-code'. > > Sorry for the multiple messages! > > On Tuesday, October 28, 2025 at 4:43:14 PM UTC-4 Ron Walker wrote: > > Hi Tom, > > I confirmed that I (user pi) am in the weewx group and ran the command as > you suggested, but the outcome is the same! I tried running the command > using sudo and it worked! > > Any ideas? > > Ron > > On Tuesday, October 28, 2025 at 4:29:39 PM UTC-4 Tom Keffer wrote: > > Probably a permissions problem. Try adding yourself to the 'weewx' group: > > *sudo usermod -aG weewx my-user-name* > *exec bash* > > > -tk > > On Tue, Oct 28, 2025 at 12:52 PM 'Ron Walker' via weewx-user < > [email protected]> wrote: > > Hi All, > > I have a fresh install of version 5.2.0 running on a Raspberry Pi running > Trixie OS. The installation went smoothly with no issues except I did have > to add myself to the weewx group in order to access files. The issues came > when I attempted to use the fileparse driver. I installed the driver using > the following command: > > *weectl extension install /etc/weewx/examples/fileparse* > > When I executed the command I got the following error: > > pi@raspberrypi:~ $ weectl extension install /etc/weewx/examples/fileparse > Using configuration file /etc/weewx/weewx.conf > Install extension '/etc/weewx/examples/fileparse' (y/n)? y > Traceback (most recent call last): > File "/usr/share/weewx/weectl.py", line 75, in <module> > main() > ~~~~^^ > File "/usr/share/weewx/weectl.py", line 67, in main > namespace.func(namespace) > ~~~~~~~~~~~~~~^^^^^^^^^^^ > File "/usr/share/weewx/weectllib/__init__.py", line 90, in dispatch > namespace.action_func(config_dict, namespace) > ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/share/weewx/weectllib/extension_cmd.py", line 116, in > install_extension > ext.install_extension(namespace.source, no_confirm=namespace.yes) > ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/share/weewx/weecfg/extension.py", line 143, in > install_extension > extension_name = self.install_from_dir(extension_path) > File "/usr/share/weewx/weecfg/extension.py", line 187, in > install_from_dir > self._install_files(installer['files'], extension_dir) > ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/share/weewx/weecfg/extension.py", line 271, in _install_files > shutil.copy(source_path, destination_path) > ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.13/shutil.py", line 429, in copy > copymode(src, dst, follow_symlinks=follow_symlinks) > ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.13/shutil.py", line 318, in copymode > chmod_func(dst, stat.S_IMODE(st.st_mode)) > ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > PermissionError: [Errno 1] Operation not permitted: > '/etc/weewx/bin/user/fileparse.py' > > Can someone point me in the right direction? > > Thanks in advance! > > Ron > > -- > You received this message because you are subscribed to the Google Groups > "weewx-user" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/d/msgid/weewx-user/1cb13cd9-8406-4662-bf00-926ddf2cd861n%40googlegroups.com > > <https://groups.google.com/d/msgid/weewx-user/1cb13cd9-8406-4662-bf00-926ddf2cd861n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/weewx-user/9248ab93-b5cc-4ffd-8a29-414ad42d2e27n%40googlegroups.com.
