Hello, I wrote to the author of the WMR200 driver and asked him about your problem.
He suggested switching to software record generation and trying again. To do this, set option record_generation <http://weewx.com/docs/usersguide.htm#StdArchive> to 'software'. -tk On Tue, Jul 11, 2017 at 12:20 PM, Maj Hek <[email protected]> wrote: > Hi, > > Just bought a Oregon WMR200 and installed weewx on Rasperri PI. Station > workes fine when running on default sqlite. > > I am trying to move database to my Synology diskstation to preserve memory > card in my PI. I have successfully copied database to mysql with > "wee_database --transfer --dest-binding=dest_binding". When starting up PI > it gives error below. > > I also deleted all tables in database on mysql and restarted PI. Then > tables are created and same error. Then it cannot be bad data that caused > the error. > > Please advice how to proceed. > > Thanks! > > BR Magnus > > Logfile: > Jul 11 20:57:22 raspberrypi weewx[783]: engine: Starting up weewx version > 3.7.1 > Jul 11 20:57:22 raspberrypi weewx[783]: engine: Station does not support > reading the time > Jul 11 20:57:22 raspberrypi weewx[783]: wmr200: MainThread: D genStartup() > phase getting archive packets since ******* N/A ******* ( N/A ) > Jul 11 20:57:22 raspberrypi weewx[783]: wmr200: MainThread: I genStartup() > Database initialization > Jul 11 20:57:23 raspberrypi weewx[783]: wmr200: MainThread: I Time drift > between host and console in seconds:23 > Jul 11 20:57:23 raspberrypi weewx[783]: wmr200: MainThread: D Queuing > live packet rx:1 live_queue_len:1 > Jul 11 20:57:27 raspberrypi weewx[783]: wmr200: MainThread: D Queuing > live packet rx:2 live_queue_len:2 > Jul 11 20:57:32 raspberrypi weewx[783]: wmr200: MainThread: D Queuing > live packet rx:3 live_queue_len:3 > Jul 11 20:57:37 raspberrypi weewx[783]: wmr200: MainThread: D Queuing > live packet rx:4 live_queue_len:4 > Jul 11 20:57:37 raspberrypi weewx[783]: wmr200: MainThread: D Queuing > live packet rx:5 live_queue_len:5 > Jul 11 20:57:47 raspberrypi weewx[783]: wmr200: MainThread: D Queuing > live packet rx:6 live_queue_len:6 > Jul 11 20:57:51 raspberrypi weewx[783]: wmr200: MainThread: D Queuing > live packet rx:7 live_queue_len:7 > Jul 11 20:57:51 raspberrypi rsyslogd-2007: action 'action 17' suspended, > next retry is Tue Jul 11 20:58:21 2017 [try http://www.rsyslog.com/e/2007 > ] > Jul 11 20:57:53 raspberrypi weewx[783]: wmr200: MainThread: D > Acknowledged control packet rx:1 > Jul 11 20:57:54 raspberrypi weewx[783]: wmr200: MainThread: D Queuing > archive packet rx:1 archive_queue_len:1 > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: I genStartup() > Still receiving archive packets cnt:0 len:1 > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: I Using pc > time adjusting archive record time by 23 sec 2017-07-11 19:48:00 CEST > (1499795280) => 2017-07-11 19:48:23 CEST (1499795303) > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: D > Initializing Archive Data.rain_total_last to 0.00 > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: D genStartup() > Yielding received archive record cnt:1 after requested timestamp:0 > pkt_interval:0 pkt:2017-07-11 19:48:23 CEST (1499795303) > Jul 11 20:57:55 raspberrypi weewx[783]: manager: Daily summary version is > 2.0 > Jul 11 20:57:55 raspberrypi weewx[783]: manager: Added record 2017-07-11 > 19:48:23 CEST (1499795303) to database 'weewx' > Jul 11 20:57:55 raspberrypi weewx[783]: engine: Main loop exiting. > Shutting engine down. > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: Thread-4: I USB polling > device thread exiting > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: I USB polling > thread expired > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: Thread-3: I Watchdog > received shutdown > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: Thread-3: I Watchdog > thread exiting > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: I Watchdog > thread expired > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: I Received > packet count live:7 archive:1 control:1 > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: I Received > bytes:1792 sent bytes:48 > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: I Packet > archive queue len:0 live queue len:7 > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: W Exiting with > packets still in live queue cnt:7 > Jul 11 20:57:55 raspberrypi weewx[783]: wmr200: MainThread: I Driver > gracefully exiting > Jul 11 20:57:55 raspberrypi weewx[783]: engine: Caught unrecoverable > exception in engine: > Jul 11 20:57:55 raspberrypi weewx[783]: **** 'interval' > Jul 11 20:57:55 raspberrypi weewx[783]: **** Traceback (most recent > call last): > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/engine.py", line 871, in main > Jul 11 20:57:55 raspberrypi weewx[783]: **** engine.run() > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/engine.py", line 159, in run > Jul 11 20:57:55 raspberrypi weewx[783]: **** > self.dispatchEvent(weewx.Event(weewx.STARTUP)) > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/engine.py", line 223, in dispatchEvent > Jul 11 20:57:55 raspberrypi weewx[783]: **** callback(event) > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/engine.py", line 508, in startup > Jul 11 20:57:55 raspberrypi weewx[783]: **** > self._catchup(self.engine.console.genStartupRecords) > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/engine.py", line 622, in _catchup > Jul 11 20:57:55 raspberrypi weewx[783]: **** origin='hardware')) > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/engine.py", line 223, in dispatchEvent > Jul 11 20:57:55 raspberrypi weewx[783]: **** callback(event) > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/engine.py", line 588, in new_archive_record > Jul 11 20:57:55 raspberrypi weewx[783]: **** > dbmanager.addRecord(event.record, accumulator=self.old_accumulator) > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/manager.py", line 245, in addRecord > Jul 11 20:57:55 raspberrypi weewx[783]: **** > self._addSingleRecord(record, cursor, log_level) > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/manager.py", line 1179, in _addSingleRecord > Jul 11 20:57:55 raspberrypi weewx[783]: **** _weight = > self._calc_weight(record) > Jul 11 20:57:55 raspberrypi weewx[783]: **** File > "/usr/share/weewx/weewx/manager.py", line 1543, in _calc_weight > Jul 11 20:57:55 raspberrypi weewx[783]: **** weight = 60.0 * > record['interval'] if self.version >= '2.0' else 1.0 > Jul 11 20:57:55 raspberrypi weewx[783]: **** KeyError: 'interval' > Jul 11 20:57:55 raspberrypi weewx[783]: **** Exiting. > > Config (deleted some) > > # 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 = / > # 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 = 3.7.1 > ############################################################ > ################## > # This section is for information about the station. > > > # 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 = WMR200 > > > ############################################################ > ################## > [WMR200] > # This section is for the Oregon Scientific WMR200 > > # The station model, e.g., WMR200, WMR200A, Radio Shack W200 > model = WMR200 > > # The driver to use: > driver = weewx.drivers.wmr200 > ############################################################ > ################## > # 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 = false > > [[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. > enable = false > username = replace_me > # To guard against parsing errors, put your password in quotes: > 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. > enable = false > station = replace_me > # To guard against parsing errors, put your password in quotes: > 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. > enable = false > station = replace_me > # To guard against parsing errors, put your password in quotes: > 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. > enable = false > station = replace_me > # To guard against parsing errors, put your password in quotes: > 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 = /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 > > # Each of the following subsections defines a report that will be run. > > [[StandardReport]] > # 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. > > # The StandardReport uses the 'Standard' skin, which contains the > # images, templates and plots for the report. > skin = Standard > [[[Units]]] > [[[[Groups]]]] > group_altitude = meter > group_speed2 = meter_per_second2 > group_pressure = mbar > group_rain = mm > group_rainrate = mm_per_hour > group_temperature = degree_C > group_degree_day = degree_C_day > group_speed = meter_per_second > > [[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, uncomment and fill out the next four > lines. > #user = replace with the ftp username > #password = replace with the ftp password; put in quotes to guard > against parsing errors. > #server = replace with the ftp server name, e.g, > www.threefools.org > #path = replace with the ftp 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 as to the user account on the remote machine where the files > # will be copied. > # > # The following three lines determine where files will be sent. > #server = replace with the rsync server name, e.g, > www.threefools.org > #path = replace with the rsync destination directory (e.g., > /weather) > #user = replace with the rsync username > > # 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 > ############################################################ > ################## > # 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 > outTemp = -40, 120, degree_F > inTemp = 10, 120, degree_F > outHumidity = 0, 100 > inHumidity = 0, 100 > windSpeed = 0, 120, mile_per_hour > pressure = 24, 34.5, inHg > ############################################################ > ################## > # This section controls the origin of derived values. > [StdWXCalculate] > > [[Calculations]] > # Derived quantities are calculated by this service. 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 > barometer = prefer_hardware > altimeter = prefer_hardware > windchill = hardware > heatindex = hardware > dewpoint = prefer_hardware > inDewpoint = prefer_hardware > rainRate = 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 = dest_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 > [[dest_binding]] > database = archive_mysql > table_name = archive > manager = weewx.wxmanager.WXDaySummaryManager > schema = schemas.wview.schema > ############################################################ > ################## > # This section defines various databases. > [Databases] > > # A SQLite database is simply a single file > [[archive_sqlite]] > database_type = SQLite > database_name = weewx.sdb > > # MySQL > [[archive_mysql]] > database_type = MySQL > database_name = weewx > ############################################################ > ################## > # This section defines defaults for the different types of databases. > [DatabaseTypes] > > # Defaults for SQLite databases > [[SQLite]] > driver = weedb.sqlite > # Directory in which the database files are located > SQLITE_ROOT = /var/lib/weewx > > # Defaults for MySQL databases > [[MySQL]] > driver = weedb.mysql > # The host where the database is located > host = 10.0.0.2 > # The user name for logging in to the host > user = weewx > # The password for the user name. Put in quotes to guard against > parsing errors. > password = XXXXXX > ############################################################ > ################## > # 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 = , > 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 > > -- > 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]. > For more options, visit https://groups.google.com/d/optout. > -- 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]. For more options, visit https://groups.google.com/d/optout.
