Re: [weewx-user] Where to modify the final timestamp?

107 views
Skip to first unread message

Tom Keffer

unread,
Mar 10, 2023, 6:31:21 AM3/10/23
to weewx...@googlegroups.com

On Fri, Mar 10, 2023 at 12:14 AM PC <blaise....@gmail.com> wrote:
Hello
Weewx resumed life but with a constant delay not arranging and with a "hole" of a week from February 28. I tried "Wee_database-Rebuild-Daily" and there, it is no longer data. I found this in the log

Mar 10 09:00:24 PiMeteo weewx[14479] DEBUG weewx.drivers.vantage: Retrieving 513 page(s); starting index= 0
Mar 10 09:00:24 PiMeteo weewx[14479] DEBUG weewx.drivers.vantage: DMPAFT complete: page timestamp 2003-12-03 13:45:00 CET (1070455500) less than final timestamp 2023-03-08 15:20:00 CET (1678285200)


How can you fix this?
Where to modify the final timestamp?

Merci

--
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+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/4a67f8f9-c3e0-4e15-aaf4-63f7a5001230n%40googlegroups.com.

PC

unread,
Mar 10, 2023, 7:47:47 AM3/10/23
to weewx-user
J'ai un autre problème :
Mar 10 13:43:52 PiMeteo weewx[3486]: Stopping weewx weather system: weewx not running....
Mar 10 13:43:52 PiMeteo systemd[1]: weewx.service: Succeeded.
Mar 10 13:43:52 PiMeteo systemd[1]: Stopped LSB: weewx weather system.
Mar 10 13:43:52 PiMeteo systemd[1]: Starting LSB: weewx weather system...
Mar 10 13:43:52 PiMeteo weewx[3508] INFO __main__: Initializing weewx version 4.10.2
Mar 10 13:43:52 PiMeteo weewx[3508] INFO __main__: Using Python 3.7.3 (default, Oct 31 2022, 14:04:00) #012[GCC 8.3.0]
Mar 10 13:43:52 PiMeteo weewx[3508] INFO __main__: Located at /bin/python3
Mar 10 13:43:52 PiMeteo weewx[3508] INFO __main__: Platform Linux-5.10.103-v7l+-armv7l-with-debian-10.13
Mar 10 13:43:52 PiMeteo weewx[3508] INFO __main__: Locale is 'fr_BE.UTF-8'
Mar 10 13:43:52 PiMeteo weewx[3508] INFO __main__: Using configuration file /etc/weewx/weewx.conf
Mar 10 13:43:52 PiMeteo weewx[3508] INFO __main__: Debug is 1
Mar 10 13:43:52 PiMeteo weewx[3508] INFO __main__: PID file is /var/run/weewx.pid
Mar 10 13:43:52 PiMeteo weewx[3512] DEBUG __main__: Initializing engine
Mar 10 13:43:52 PiMeteo weewx[3512] INFO weewx.engine: Loading station type Vantage (weewx.drivers.vantage)
Mar 10 13:43:52 PiMeteo weewx[3512] DEBUG weewx.drivers.vantage: Driver version is 3.5.2
Mar 10 13:43:52 PiMeteo weewx[3512] DEBUG weewx.drivers.vantage: Option loop_request=1
Mar 10 13:43:52 PiMeteo weewx[3512] DEBUG weewx.drivers.vantage: Opened up serial port /dev/ttyUSB0; baud 19200; timeout 4.00
Mar 10 13:43:52 PiMeteo weewx[3497]: Starting weewx weather system: weewx.
Mar 10 13:43:52 PiMeteo systemd[1]: Started LSB: weewx weather system.
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.drivers.vantage: Successfully woke up Vantage console
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.drivers.vantage: Hardware type is 16
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.drivers.vantage: ISS ID is 1
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.drivers.vantage: Hardware name: Vantage Pro2
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.engine.StdTimeSynch
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.engine.StdTimeSynch
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.engine.StdConvert
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.engine: StdConvert target unit is 0x10
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.engine.StdConvert
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.engine.StdCalibrate
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.engine.StdCalibrate
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.engine.StdQC
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.engine.StdQC
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.wxservices.StdWXCalculate
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.wxservices: StdWXCalculate will use data binding wx_binding
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.manager: Daily summary version is 4.0
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.wxservices.StdWXCalculate
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdWXXTypes
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdWXXTypes
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdPressureCooker
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdPressureCooker
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdRainRater
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdRainRater
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdDelta
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdDelta
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.engine.StdArchive
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.engine: Archive will use data binding wx_binding
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.engine: Record generation will be attempted in 'hardware'
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.engine: Using archive interval of 300 seconds (specified by hardware)
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Use LOOP data in hi/low calculations: 1
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.engine.StdArchive
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.restx.StdStationRegistry
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.restx: StationRegistry: Registration not requested.
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.restx.StdStationRegistry
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.restx.StdWunderground
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.restx: Wunderground: Posting not enabled.
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.restx.StdWunderground
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.restx.StdPWSweather
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.restx: PWSweather: Posting not enabled.
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.restx.StdPWSweather
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.restx.StdCWOP
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.restx: CWOP: Posting not enabled.
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.restx.StdCWOP
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.restx.StdWOW
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.restx: WOW: Posting not enabled.
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.restx.StdWOW
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.restx.StdAWEKAS
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.restx: AWEKAS: Posting not enabled.
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.restx.StdAWEKAS
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service user.mqtt.MQTT
Mar 10 13:43:53 PiMeteo weewx[3512] INFO user.mqtt: service version is 0.24
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.restx: MQTT: Data will not be posted: Missing option 'server_url'
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service user.mqtt.MQTT
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.engine.StdPrint
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.engine.StdPrint
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Loading service weewx.engine.StdReport
Mar 10 13:43:53 PiMeteo weewx[3512] INFO weewx.engine: 'pyephem' detected, extended almanac data is available
Mar 10 13:43:53 PiMeteo weewx[3512] DEBUG weewx.engine: Finished loading service weewx.engine.StdReport
Mar 10 13:43:53 PiMeteo weewx[3512] INFO __main__: Starting up weewx version 4.10.2
Mar 10 13:43:54 PiMeteo weewx[3512] DEBUG weewx.drivers.vantage: Successfully woke up Vantage console
Mar 10 13:43:54 PiMeteo weewx[3512] INFO weewx.engine: Clock error is 0.73 seconds (positive is fast)
Mar 10 13:43:54 PiMeteo weewx[3512] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx'
Mar 10 13:43:54 PiMeteo weewx[3512] INFO weewx.manager: Starting backfill of daily summaries
Mar 10 13:43:54 PiMeteo weewx[3512] INFO weewx.engine: Main loop exiting. Shutting engine down.
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__: Caught unrecoverable exception:
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****  '<=' not supported between instances of 'NoneType' and 'int'
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****  Traceback (most recent call last):
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****    File "/usr/share/weewx/weewxd", line 154, in main
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****      engine.run()
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 178, in run
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****      self.dispatchEvent(weewx.Event(weewx.STARTUP))
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 245, in dispatchEvent
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****      callback(event)
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 576, in startup
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****      _nrecs, _ndays = dbmanager.backfill_day_summary()
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/manager.py", line 1299, in backfill_day_summary
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****      for rec in self.genBatchRecords(start_batch_ts, stop_batch_ts):
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/manager.py", line 524, in genBatchRecords
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****      for _row in self.genBatchRows(startstamp, stopstamp):
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****    File "/usr/share/weewx/weewx/manager.py", line 505, in genBatchRows
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****      if _row[0] <= _last_time:
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****  TypeError: '<=' not supported between instances of 'NoneType' and 'int'
Mar 10 13:43:54 PiMeteo weewx[3512] CRITICAL __main__:     ****  Exiting.

Tom Keffer

unread,
Mar 10, 2023, 8:10:21 AM3/10/23
to weewx...@googlegroups.com
Do you have a null value for dateTime in your database?

Here is how to check.First, make sure you have the tool sqlite3

sudo apt-get install sqlite3

Then use it to find null values

sqlite3 /var/lib/weewx/weewx.sdb
sqlite> select dateTime from archive where dateTime isnull;
sqlite> .quit

There should not be any null values.



Tom Keffer

unread,
Mar 10, 2023, 10:41:32 AM3/10/23
to Blaise Cacramp, weewx-user
Hmmm, you may have a non-standard schema. 

Try this:

sqlite3 /var/lib/weewx/weewx.sdb
sqlite> .schema
sqlite> .quit


On Fri, Mar 10, 2023 at 5:34 AM Blaise Cacramp <blaise....@gmail.com> wrote:

Ok, not null values

Le 10-03-23 à 14:09, Tom Keffer a écrit :

Blaise Cacramp

unread,
Mar 10, 2023, 12:33:08 PM3/10/23
to Tom Keffer, weewx-user

Yes, I added a few columns that I update daily. So far, this was not a problem

CREATE TABLE archive (`dateTime` INTEGER NOT NULL UNIQUE PRIMARY KEY, `usUnits` INTEGER NOT NULL, `interval` INTEGER NOT NULL, `altimeter` REAL, `appTemp` REAL, `appTemp1` REAL, `barometer` REAL, `batteryStatus1` REAL, `batteryStatus2` REAL, `batteryStatus3` REAL, `batteryStatus4` REAL, `batteryStatus5` REAL, `batteryStatus6` REAL, `batteryStatus7` REAL, `batteryStatus8` REAL, `cloudbase` REAL, `co` REAL, `co2` REAL, `consBatteryVoltage` REAL, `dewpoint` REAL, `dewpoint1` REAL, `ET` REAL, `extraHumid1` REAL, `extraHumid2` REAL, `extraHumid3` REAL, `extraHumid4` REAL, `extraHumid5` REAL, `extraHumid6` REAL, `extraHumid7` REAL, `extraHumid8` REAL, `extraTemp1` REAL, `extraTemp2` REAL, `extraTemp3` REAL, `extraTemp4` REAL, `extraTemp5` REAL, `extraTemp6` REAL, `extraTemp7` REAL, `extraTemp8` REAL, `forecast` REAL, `hail` REAL, `hailBatteryStatus` REAL, `hailRate` REAL, `heatindex` REAL, `heatindex1` REAL, `heatingTemp` REAL, `heatingVoltage` REAL, `humidex` REAL, `humidex1` REAL, `inDewpoint` REAL, `inHumidity` REAL, `inTemp` REAL, `inTempBatteryStatus` REAL, `leafTemp1` REAL, `leafTemp2` REAL, `leafWet1` REAL, `leafWet2` REAL, `lightning_distance` REAL, `lightning_disturber_count` REAL, `lightning_energy` REAL, `lightning_noise_count` REAL, `lightning_strike_count` REAL, `luminosity` REAL, `maxSolarRad` REAL, `nh3` REAL, `no2` REAL, `noise` REAL, `o3` REAL, `outHumidity` REAL, `outTemp` REAL, `outTempBatteryStatus` REAL, `pb` REAL, `pm10_0` REAL, `pm1_0` REAL, `pm2_5` REAL, `pressure` REAL, `radiation` REAL, `rain` REAL, `rainBatteryStatus` REAL, `rainRate` REAL, `referenceVoltage` REAL, `rxCheckPercent` REAL, `signal1` REAL, `signal2` REAL, `signal3` REAL, `signal4` REAL, `signal5` REAL, `signal6` REAL, `signal7` REAL, `signal8` REAL, `snow` REAL, `snowBatteryStatus` REAL, `snowDepth` REAL, `snowMoisture` REAL, `snowRate` REAL, `so2` REAL, `soilMoist1` REAL, `soilMoist2` REAL, `soilMoist3` REAL, `soilMoist4` REAL, `soilTemp1` REAL, `soilTemp2` REAL, `soilTemp3` REAL, `soilTemp4` REAL, `supplyVoltage` REAL, `txBatteryStatus` REAL, `UV` REAL, `uvBatteryStatus` REAL, `windBatteryStatus` REAL, `windchill` REAL, `windDir` REAL, `windGust` REAL, `windGustDir` REAL, `windrun` REAL, `windSpeed` REAL);
CREATE TABLE archive_day_altimeter (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_appTemp (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_appTemp1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_barometer (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_batteryStatus1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_batteryStatus2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_batteryStatus3 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_batteryStatus4 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_batteryStatus5 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_batteryStatus6 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_batteryStatus7 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_batteryStatus8 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_cloudbase (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_co (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_co2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_consBatteryVoltage (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_dewpoint (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_dewpoint1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_ET (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraHumid1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraHumid2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraHumid3 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraHumid4 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraHumid5 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraHumid6 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraHumid7 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraHumid8 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraTemp1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraTemp2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraTemp3 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraTemp4 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraTemp5 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraTemp6 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraTemp7 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_extraTemp8 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_forecast (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_hail (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_hailBatteryStatus (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_hailRate (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_heatindex (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_heatindex1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_heatingTemp (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_heatingVoltage (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_humidex (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_humidex1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_inDewpoint (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_inHumidity (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_inTemp (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_inTempBatteryStatus (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_leafTemp1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_leafTemp2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_leafWet1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_leafWet2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_lightning_distance (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_lightning_disturber_count (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_lightning_energy (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_lightning_noise_count (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_lightning_strike_count (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_luminosity (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_maxSolarRad (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_nh3 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_no2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_noise (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_o3 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_outHumidity (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_outTemp (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_outTempBatteryStatus (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_pb (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_pm10_0 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_pm1_0 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_pm2_5 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_pressure (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_radiation (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_rain (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_rainBatteryStatus (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_rainRate (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_referenceVoltage (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_rxCheckPercent (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_signal1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_signal2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_signal3 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_signal4 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_signal5 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_signal6 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_signal7 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_signal8 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_snow (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_snowBatteryStatus (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_snowDepth (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_snowMoisture (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_snowRate (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_so2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_soilMoist1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_soilMoist2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_soilMoist3 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_soilMoist4 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_soilTemp1 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_soilTemp2 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_soilTemp3 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_soilTemp4 (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_supplyVoltage (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_txBatteryStatus (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_UV (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_uvBatteryStatus (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_windBatteryStatus (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_windchill (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_windDir (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_windGust (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_windGustDir (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_windrun (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_windSpeed (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER);
CREATE TABLE archive_day_wind (dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY, min REAL, mintime INTEGER, max REAL, maxtime INTEGER, sum REAL, count INTEGER, wsum REAL, sumtime INTEGER, max_dir REAL, xsum REAL, ysum REAL, dirsumtime INTEGER, squaresum REAL, wsquaresum REAL);
CREATE TABLE archive_day__metadata (name CHAR(20) NOT NULL UNIQUE PRIMARY KEY, value TEXT);


Le 10-03-23 à 16:41, Tom Keffer a écrit :

Blaise Cacramp

unread,
Mar 10, 2023, 12:57:26 PM3/10/23
to Tom Keffer, weewx-user

The base is connected with MS-ACCESS (one of my specialties) and I exploit some data for my energy management (I was 0also energy manager)

# -*- coding: utf-8 -*-
import mysql.connector
from datetime import datetime, timedelta

# script éxécuté une fois par jour (à 00:07:30 ?)
# version du 30/05/2022 (a)

db = mysql.connector.connect(
  host="localhost",
  user="weewx",
  password="weewx",
  database="weewx"
)
cur = db.cursor()

# -1-   -1-   -1-   -1-   -1-   -1-   -1-   -1-   -1-   -1-   -1-   -1-   -1-   -1-   

# mise à jour du champ 'date_jour' dans la table 'archive' comme suit :
# transforme le timestamp 'archive.dateTime' en une date (sans hh:mm:ss)
# pour le placer dans le chanp 'date_jour' qui servira par après à calculer les valeurs quotidiennes

sql="SELECT archive.dateTime FROM archive WHERE (((archive.date_jour) Is Null));"
cur.execute(sql)
x = cur.fetchall()
i = 0
print("Mise à jour dates dans la table archive")
for l in x:
    i+=1
    DateWx =datetime.fromtimestamp(l[0])
    DateWx =datetime.date(DateWx)
    sql="UPDATE archive SET archive.date_jour = %s WHERE (((archive.dateTime)=%s));"
    value=(DateWx, l[0])
    try:
      # Executing the SQL command
      cur.execute(sql, value)
      # Commit your changes in the database
      db.commit()
      i += cur.rowcount
      print(l[0], end="\t")
      print(DateWx)
    except:
      # Rolling back in case of error
      db.rollback()

print("Nbre de ligne(s) mise(s) à jour : " +  str(i) )

#   -2-   -2-   -2-   -2-   -2-   -2-   -2-   -2-   -2-   -2-   -2-   -2-   -2-   -2-
# mise à jour de la table 't_quotidien' avec les valeurs quotidiennes de la table archive

# 2-1 La dernière date de 't_quotidien'
sql="SELECT Max(t_quotidien.q_date) AS X FROM t_quotidien;"
cur.execute(sql)
x = cur.fetchone()
derDateQuot = x[0]
print("derDateQuot =", end =" ")
print (derDateQuot )
derDateQuot+= timedelta(days=1) # on commence après la dernière date !
# 2-2 la dernière 'date_jour' de 'archive'
sql="SELECT Max(archive.date_jour) AS X FROM archive;"
cur.execute(sql)
x = cur.fetchone()
derDateArch = x[0]
# comme c'est théoriquement le jour en cours, on recule à la veille
print("dernière date archive trouvée : ", end = ' ')
print(derDateArch)
derDateArch -= timedelta(days=1)
print("on termine la veille : ", end = " ")
print(derDateArch)

# 2-3 Boucle entre derDateQuot et derDateArch, insertion des enregistrements
delta=derDateArch-derDateQuot
nbreJours=delta.days + 1
print(nbreJours, end = ' ')
print("jour(s) à calculer")
for i in range(nbreJours):
    dateBoucle = derDateQuot+timedelta(days=i)
    print(dateBoucle, end = ' ')

    sql="SELECT Avg(archive.outTemp) AS MoyenneDeoutTemp, Max(archive.outTemp) AS MaxDeoutTemp1, Min(archive.outTemp) AS MinDeoutTemp, Avg(archive.outHumidity) AS MoyenneDeoutHumidity, Avg(archive.pressure) AS MoyenneDepressure, Sum(archive.rain) AS SommeDerain, Max(archive.rainRate) AS MaxDerainRate "
    sql += " FROM archive GROUP BY archive.date_jour "
    sql += "HAVING archive.date_jour='"
    sql += str(dateBoucle) + "';"
    cur.execute(sql)
    x = cur.fetchone()
    if (x is not None):
      if (len(x)==7):
        sql = "INSERT INTO t_quotidien VALUES("
        sql += "'" + str(dateBoucle) + "',"
        # température moyenne
        if (x[0] is not None):
          sql+= str(round(x[0],2))+", "
        else :
          sql+="Null, "
        # température max
        if (x[1] is not None):
          sql+= str(round(x[1],2))+", "
        else :
          sql+="Null, "
        # température min      
        if (x[2] is not None):
          sql+= str(round(x[2],2))+", "
        else :
          sql+="Null, "
        # Humidité moyenne
        if (x[3] is not None):
          sql+= str(round(x[3],1))+", "
        else :
          sql+="Null, "
        # bar
        if (x[4] is not None):
          sql+= str(round(x[4],2))+", "
        else :
          sql+="Null, "
        # rain
        if (x[5] is not None):
          sql+= str(round(x[5],4))+", "
        else :
          sql+="Null, "
        # rain rate
        if (x[6] is not None):
          sql+= str(round(x[6],4))
        else :
          sql+="Null"
        sql+=",Null,Null,Null);" # tpe, dj18, dj16
        #print(sql)
        try:
          # Executing the SQL command
          cur.execute(sql)
          # Commit your changes in the database
          db.commit()
        except:
          # Rolling back in case of error
          db.rollback()
# 2.4 Calculs TPE, DJ18 et DJ16
print("\nCalculs TPE & Cie\n")
print("date \t\tTPE \tDJ16.5 \tDJ18")
while True :
  # première date où tpe est null
  sql="SELECT Min(t_quotidien.q_date) AS MinDeq_date FROM t_quotidien GROUP BY t_quotidien.q_tpe HAVING t_quotidien.q_tpe Is Null;"
  cur.execute(sql)
  x = cur.fetchone()
  if (x is None):
    break # on sort de la boucle, tout est à jour

  derDateQuot=x[0]
  print(derDateQuot, end = '\t')
  TPE=0
  for i in range(3):
    DateQuot = derDateQuot- timedelta(days=2 - i)
    sql = "SELECT t_quotidien.q_temp FROM t_quotidien WHERE t_quotidien.q_date = '" + str(DateQuot) +"' ;"
    cur.execute(sql)
    x = cur.fetchone()
    if (x is not None):
      if (i==0):
        TPE = x[0]*0.1 # 2 jours avant = 10 %
      elif(i==1):
        TPE+=(x[0]*0.3) # 1 jour avant += 30 %
      else :
        TPE+=(x[0]*0.6) # le jour même += 60 %
        
  print(round(TPE,2),end='\t')
  if (16.5-TPE >= 0):
    DJ16= round(16.5-TPE,2)
  else :
    DJ16 = 0
  if (18-TPE >= 0):
    DJ18= round(18-TPE,2)
  else :
    DJ18 = 0
    
  print(round(DJ16,2), end='\t')
  print(round(DJ18,2), end='\n')
  sql="UPDATE t_quotidien SET t_quotidien.q_tpe = "+ str(TPE)
  sql += ", t_quotidien.q_dj_18 = " +str(DJ18)
  sql += ", t_quotidien.q_dj_16 = " + str(DJ16)
  sql += " WHERE t_quotidien.q_date='" + str(DateQuot) +"';"
  try:
    # Executing the SQL command
    cur.execute(sql)
    # Commit your changes in the database
    db.commit()
  except:
    # Rolling back in case of error
    db.rollback()


db.close
   

Le 10-03-23 à 16:41, Tom Keffer a écrit :
Hmmm, you may have a non-standard schema. 

Tom Keffer

unread,
Mar 10, 2023, 1:08:53 PM3/10/23
to Blaise Cacramp, weewx-user
I have no idea what I'm looking at there.

The  requirements for the database are:
  1. The first column must be dateTime.
  2. The value for dateTime must never be null.
Does your database satisfy these two requirements?

Blaise Cacramp

unread,
Mar 11, 2023, 4:58:12 AM3/11/23
to Tom Keffer, weewx-user

As in fact, Tom, the Datetime field was no longer in 1st position.

I placed it properly while keeping the additional field in 2nd position and it still did not work, even by placing it in the last position.

I have resolved it to delete it and it seems to leave, in any case, no error message.
However, he no longer read the new data ...

I did a wee_device --dump and (no clear memory) and there, everything seems to work.
Probably your latest version is strict, because it worked before and for quite a long time.

I would put this field in a separate and linked table

Thank you Tom

Le 10-03-23 à 19:08, Tom Keffer a écrit :

Tom Keffer

unread,
Mar 11, 2023, 6:18:50 AM3/11/23
to Blaise Cacramp, weewx-user
Glad it is working for you. 

That bit of code was last changed in November, 2014, so it's been that way for a very long time.

However, it should not be so strict on requiring that the first column be dateTime. I've filed an issue to remind myself to relax the restriction. 

Issue #855.


Reply all
Reply to author
Forward
0 new messages