Where did you put the module extra_sensors_service.py? Under [[Services]] you have
data_services = weewx.extra_sensors_service.ExtraSensorsService, This means that the engine will be expecting to find it in /home/weewx/bin/weewx/extra_sensors_service.py. This is not a great place for it because it will be lost on the next upgrade. A better place is to put it in /home/weewx/bin/user. Modules there are preserved across an upgrade. Then the option "data_services" becomes data_services = user.extra_sensors_service.ExtraSensorsService, -tk On Thu, Aug 27, 2020 at 10:49 AM Michael Grossie <mhgros...@gmail.com> wrote: > Raspberry Pi 2B+ > Install with setup.py > Station - Simulator (Originally) > Weewx - 4.1.1 > PATH - Home/Weewx > > Had the weewx setup and working perfectly (as far as I know) with the > Simulator weather station while I waited for my ADS-WS1 to arrive. When it > arrived, I connected it via the directions found in an Instructables > Raspberry Pi Weather Station document. > > Confirmed that the ADS-WS1 was functioning via running the Wxconfig file > from ADS with the WS1 connected to a Windows 10 Computer. > > Connected the WS1 to the Raspberry Pi with serial to USB cable. Set the > ttyUSB0 port on the Raspberry Pi to 2400 8N1. Using Minicom, confirmed that > data was flowing from the WS1. > > !!0000001F0000000023A402DD0000015E0000000000000000 > !!0000001F0000000023A302DD0000015E0000000000000000 > !!0000001F0000000023A402DD0000015E0000000000000000 > !!0000001F0000000023A402DD0000015E0000000000000000 > !!0000001F0000000023A302DD0000015E0000000000000000 > !!0000001F0000000023A402DD0000015E0000000000000000 > !!0000001F0000000023A402DD0000015E0000000000000000 > !!0000001F0000000023A402DD0000015E0000000000000000 > !!0000001F0000000023A402DD0000015E0000000000000000 > > Changed the weewx configuration file using *sudo python3 ./bin/wee_config > --reconfigure *to indicate the WS1 as the weather station being used. > Deleted the weewx.sdb folder from home/weewx/archive. > > When attempting to start weewx with *sudo /home/weewx/bin/weewxd* I > receive the following - > > $ sudo python /home/weewx/bin/weewxd > Traceback (most recent call last): > File "/home/weewx/bin/weewxd", line 261, in <module> > main() > File "/home/weewx/bin/weewxd", line 148, in main > engine = weewx.engine.StdEngine(config_dict) > File "/home/weewx/bin/weewx/engine.py", line 75, in __init__ > self.loadServices(config_dict) > File "/home/weewx/bin/weewx/engine.py", line 138, in loadServices > obj = weeutil.weeutil.get_object(svc)(self,config_dict) > File "/home/weewx/bin/weeutil/weeutil.py", line 1093, in get_object > mod = __import__(module) > ImportError: No module named extra_sensors_service > > Running - *sudo /etc/init.d/weewx status -ls* provides - > > weewx.service - LSB: weewx weather system > Loaded: loaded (/etc/init.d/weewx; generated; vendor preset: enabled) > Active: active (exited) since Thu 2020-08-27 11:25:07 CDT; 1h 12min ago > Docs: man:systemd-sysv-generator(8) > Process: 22526 ExecReload=/etc/init.d/weewx reload (code=exited, > status=0/SUCCESS) > Process: 295 ExecStart=/etc/init.d/weewx start (code=exited, > status=0/SUCCESS) > > Aug 27 11:25:08 raspberrypi weewxd[562]: weewx[562] CRITICAL __main__: > **** File "/home/weewx/bin/weewx/engine.py", line 138, in loadServices > Aug 27 11:25:08 raspberrypi weewxd[562]: weewx[562] CRITICAL __main__: > **** obj = weeutil.weeutil.get_object(svc)(self,config_dict) > Aug 27 11:25:08 raspberrypi weewxd[562]: weewx[562] CRITICAL __main__: > **** File "/home/weewx/bin/weeutil/weeutil.py", line 1093, in get_object > Aug 27 11:25:08 raspberrypi weewxd[562]: weewx[562] CRITICAL __main__: > **** mod = __import__(module) > Aug 27 11:25:08 raspberrypi weewxd[562]: weewx[562] CRITICAL __main__: > **** ImportError: No module named extra_sensors_service > Aug 27 11:25:08 raspberrypi weewxd[562]: weewx[562] CRITICAL __main__: > **** Exiting. > Aug 27 12:11:44 raspberrypi systemd[1]: Reloading LSB: weewx weather > system. > Aug 27 12:11:44 raspberrypi weewx[22526]: Reloading weewx weather system: > weewxstart-stop-daemon: warning: failed to kill 562: No such process > Aug 27 12:11:44 raspberrypi weewx[22526]: . > Aug 27 12:11:44 raspberrypi systemd[1]: Reloaded LSB: weewx weather system. > > The ImportError No module named extra_sensors_service - was not there when > using the Simulator weather station. This is referring to a DHT-22 that is > connected to the Raspberry Pi and was "working" with the Simulator weather > station. > > As weewx does not start, the home/weewx/archive/weewx.sdb has not been > recreated. > > *Configuration file is below.* > > # WEEWX CONFIGURATION FILE > # > # Copyright (c) 2009-2019 Tom Keffer > # See the file LICENSE.txt for your rights. > > > ############################################################################## > > # This section is for general configuration information. > > # Set to 1 for extra debug info, otherwise comment it out or set to zero > debug = 1 > > # Root directory of the weewx data file hierarchy for this station > WEEWX_ROOT = /home/weewx > > # 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.1.1 > > > ############################################################################## > > # This section is for information about the station. > > [Station] > > # Description of the station location > location = "Casita - Yuma, AZ" > > # Latitude in decimal degrees. Negative for southern hemisphere > latitude = 31.6288 > # Longitude in decimal degrees. Negative for western hemisphere. > longitude = -114.4056 > > # Altitude of the station, with unit it is in. This is downloaded from > # from the station if the hardware supports it. > altitude = 424, foot # Choose 'foot' or 'meter' for unit > > # 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 = WS1 > > # If you have a website, you may specify an URL > station_url = http://www.grossie.net > > # 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 > > > ############################################################################## > > [WS1] > # This section is for the ADS WS1 series of weather stations. > > # Driver mode - tcp, udp, or serial > mode = serial > > # If serial, specify the serial port device. (ex. /dev/ttyS0, > /dev/ttyUSB0, > # or /dev/cuaU0) > # If TCP, specify the IP address and port number. (ex. > 192.168.36.25:3000) > port = /dev/ttyUSB0 > > # The amount of time, in seconds, before the connection fails if there > is > # no response > timeout = 10 > > # The driver to use: > driver = weewx.drivers.ws1 > > > ############################################################################## > > [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] > > [[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 > > # 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 = public_html > > # 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 = False > > # 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 = true > 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 = true > 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 > > #### > > # 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_distance = mile # Options are 'mile' or 'km' > 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 = %.1f > 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 = %.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 overrides the label used for each type > of unit > [[[[Labels]]]] > > meter = " meter", " meters" # You may prefer "metre". > 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, cooling, and growing 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, 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 = 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 = 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 > > [[[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 = 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 > beaufort = 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 > > # The data binding used to save archive records > data_binding = wx_binding > > > ############################################################################## > > # This section binds a data store to a database. > > [DataBindings] > > [[wx_binding]] > # The database must match one of the sections in [Databases]. > # This is likely to be the only option you would want to change. > database = archive_sqlite > # The name of the table within the database > table_name = archive > # The manager handles aggregation of data for historical summaries > manager = weewx.manager.DaySummaryManager > # The schema defines the structure of the database. > # It is *only* used when the database is created. > schema = schemas.wview_extended.schema > > > ############################################################################## > > # This section defines various databases. > > [Databases] > > # A SQLite database is simply a single file > [[archive_sqlite]] > database_name = weewx.sdb > database_type = SQLite > > # MySQL > [[archive_mysql]] > database_name = weewx > database_type = MySQL > > > ############################################################################## > > # This section defines defaults for the different types of databases. > > [DatabaseTypes] > > # Defaults for SQLite databases > [[SQLite]] > driver = weedb.sqlite > # Directory in which the database files are located > SQLITE_ROOT = %(WEEWX_ROOT)s/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 for the user name (quotes guard against parsing > errors) > password = weewx > > > ############################################################################## > > # This section configures the internal weewx engine. > > [Engine] > > [[Services]] > # This section specifies the services that should be run. They are > # grouped by type, and the order of services within each group > # determines the order in which the services will be run. > prep_services = weewx.engine.StdTimeSynch > data_services = weewx.extra_sensors_service.ExtraSensorsService, > process_services = weewx.engine.StdConvert, > weewx.engine.StdCalibrate, weewx.engine.StdQC, > weewx.wxservices.StdWXCalculate > 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 > > ---------------------------- > Any other files needed for review? > > Suggestions on where to go from here - > > -- > 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/ed9310a5-e26b-41a1-aafb-a69acbe4dac2o%40googlegroups.com > <https://groups.google.com/d/msgid/weewx-user/ed9310a5-e26b-41a1-aafb-a69acbe4dac2o%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 weewx-user+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/CAPq0zEDfefSpw2CTCCE%3DrcYUWFGfHDHSi0Uekzw4NZPLM9e04w%40mail.gmail.com.