# wee_import Some WeeWX users will have historical data from another source (e.g., other weather station software or a manually compiled file) which they wish to import into WeeWX. Such data can, depending upon the source, be imported using the `wee_import` utility. This section details the use of the `wee_import` utility. The `wee_import` utility supports importing observational data from the following sources: * a single Comma Separated Values (CSV) format file * the historical observations of a Weather Underground personal weather station * one or more Cumulus monthly log files * one or more Weather Display monthly log files Before starting, it's worth running the utility with the `--help` flag to see how `wee_import` is used: ``` wee_import --help ``` ``` Usage: wee_import --help wee_import --version wee_import --import-config=IMPORT_CONFIG_FILE [--config=CONFIG_FILE] [--date=YYYY-mm-dd | --from=YYYY-mm-dd[THH:MM] --to=YYYY-mm-dd[THH:MM]] [--dry-run] [--verbose] [--no-prompt] [--suppress-warnings] Import observation data into a WeeWX archive. Options: -h, --help show this help message and exit --config=CONFIG_FILE Use configuration file CONFIG_FILE. --import-config=IMPORT_CONFIG_FILE Use import configuration file IMPORT_CONFIG_FILE. --dry-run Print what would happen but do not do it. --date=YYYY-mm-dd Import data for this date. Format is YYYY-mm-dd. --from=YYYY-mm-dd[THH:MM] Import data starting at this date or date-time. Format is YYYY-mm-dd[THH:MM]. --to=YYYY-mm-dd[THH:MM] Import data up until this date or date-time. Format is YYYY-mm-dd[THH:MM]. --verbose Print and log useful extra output. --no-prompt Do not prompt. Accept relevant defaults and all y/n prompts. --suppress-warnings Suppress warnings to stdout. Warnings are still logged. --version Display wee_import version number. wee_import will import data from an external source into a WeeWX archive. Daily summaries are updated as each archive record is imported so there should be no need to separately rebuild the daily summaries using the wee_database utility. ``` ## Options ### `--config=FILENAME` The utility is pretty good about guessing where the configuration file is, but if you have an unusual installation or multiple stations, you may have to tell it explicitly. ``` wee_import --config=/this/directory/weewx.conf --import-config=/directory/import.conf ``` ### `--import-config=FILENAME` `wee_import` uses a secondary configuration file, known as the import configuration file, to store various import parameters. The `--import-config` option is mandatory for all imports. Example import configuration files for each type of import supported by `wee_import` are provided in the `util/import` directory. These example files are best used by making a copy of into a working directory and then modifying the copy to suit your needs. The `--import-config` option is used as follows: ``` wee_import --import-config=/directory/import.conf ``` ### `--dry-run` The `--dry-run` option will cause the import to proceed but no actual data will be saved to the database. This is a useful option to use when first importing data. ``` wee_import --import-config=/directory/import.conf --dry-run ``` ### `--date=YYYY-mm-dd` Records from a single date can be imported by use of the `--date` option. The `--date` option accepts strings of the format `YYYY-mm-dd`. Whilst the use of the `--date` option will limit the imported data to that of a single date, the default action if the `--date` option (and the `--from` and `--to` options) is omitted may vary depending on the source. The operation of the `--date` option is summarised in the following table:
| option | Records imported for a CSV, Cumulus, Weather Display or WeatherCat import | Records imported for a Weather Underground import |
| omitted (i.e., the default) |
All available records | Todays records only |
| --date=2015-12-22 | All records from 2015-12-22 00:00 (exclusive) to 2015-12-23 00:00 (inclusive) | All records from 2015-12-22 00:00 (exclusive) to 2015-12-23 00:00 (inclusive) |
| options | Records imported for a CSV, Cumulus, Weather Display or WeatherCat import | Records imported for a Weather Underground import | |
| omitted (i.e., the default) |
omitted (i.e., the default) |
All available records | Todays records only |
| --from=2015-12-22 | --to=2015-12-29 | All records from 2015-12-22 00:00 (exclusive) to 2015-12-30 00:00 (inclusive) | All records from 2015-12-22 00:00 (exclusive) to 2015-12-30 00:00 (inclusive) |
| --from=2016-7-18T15:29 | --to=2016-7-25 | All records from 2016-7-18 15:29 (exclusive) to 2016-7-26 00:00 (inclusive) | All records from 2016-7-18 15:29 (exclusive) to 2016-7-26 00:00 (inclusive) |
| --from=2016-5-12 | --to=2016-7-22T22:15 | All records from 2016-5-12 00:00 (exclusive) to 2016-7-22 22:15 (inclusive) | All records from 2016-5-12 00:00 (exclusive) to 2016-7-22 22:15 (inclusive) |
| --from=2016-3-18T15:29 | --to=2016-6-20T22:00 | All records from 2016-3-18 15:29 (exclusive) to 2016-6-20 22:00 (inclusive) | All records from 2016-3-18 15:29 (exclusive) to 2016-6-20 22:00 (inclusive) |
| wind_direction option setting | Source data wind direction value | Imported wind direction value |
| 0, 360 | 0 | 0 |
| 160 | 160 | |
| 360 | 360 | |
| 500 | None/null | |
| -45 | None/null | |
| -9999 | None/null | |
| No data | None/null | |
| -360, 360 | 0 | 0 |
| 160 | 160 | |
| 360 | 360 | |
| 500 | None/null | |
| -45 | 315 | |
| -9999 | None/null | |
| No data | None/null | |
| -180, 180 | 0 | 0 |
| 160 | 160 | |
| 360 | None/null | |
| 500 | None/null | |
| -45 | 315 | |
| -9999 | None/null | |
| No data | None/null |
Note
Importing of text data into text fields in the WeeWX archive is only supported for
WeeWX archive fields that have been configured as text fields. Refer to the Wiki page
Storing text in the database
for details.
If the source data includes a field that contains a WeeWX unit system code (i.e. the equivalent of the WeeWX usUnits field such as may be obtained from WeeWX or wview data) then this field can be mapped to the WeeWX usUnits field and used to set the units used for all fields being imported. In such cases the the weewx_unit_name portion of the imported fields in the field map is not used and can be omitted.
For example, source CSV data with the following structure:
date_and_time,temp,humid,wind,dir,rainfall,rad,river
23 May 2018 13:00,17.4,56,3.0,45,0.0,956,340
23 May 2018 13:05,17.6,56,1.0,22.5,0.4,746,341
where temp is temperature in Celsius, humid is humidity in percent, wind is wind speed in km/h, dir is wind direction in degrees, rainfall is rain in mm, rad is radiation in watts per square meter and river is river height in mm might use a field map as follows:
[[FieldMap]]
dateTime = date_and_time, unix_epoch
outTemp = temp, degree_C
outHumidity = humid, percent
windSpeed = wind, km_per_hour
windDir = dir, degree_compass
rain = rainfall, mm
radiation = rad, watt_per_meter_squared
If the same source CSV data included a field unit_info that contains WeeWX unit system data as follows:
date_and_time,temp,humid,wind,dir,rainfall,rad,river,unit_info
23 May 2018 13:00,17.4,56,3.0,45,0.0,956,340,1
23 May 2018 13:05,17.6,56,1.0,22.5,0.4,746,341,16
then a field map such as the following might be used:
[[FieldMap]]
dateTime = date_and_time, unix_epoch
usUnits = unit_info
outTemp = temp
outHumidity = humid
windSpeed = wind
windDir = dir
rain = rainfall
radiation = rad
Note
Any WeeWX archive fields that are derived (e.g., dewpoint) and for which there is no field mapping may be calculated during import by use
of the calc_missing option in the [CSV]
section of the import configuration file.
Note
The dateTime field map entry is a special case. Whereas
other field map entries may use any supported WeeWX unit name, or no unit name if the
usUnits field is populated, the dateTime field map entry
must include the WeeWX unit name unix_epoch. This is because
wee_import uses the
raw_datetime_format config option to convert the supplied
date-time field data to a Unix epoch timestamp before the field map is applied.
The [WU] section contains the options relating to the import of observational data from a Weather Underground PWS history.
The Weather Underground weather station ID of the PWS from which the historical data will be imported. There is no default.
The Weather Underground API key to be used to obtain the PWS history data. There is no default.
Note
The API key is a seemingly random string of 32 characters used to access the new
(2019) Weather Underground API. PWS contributors can obtain an API key by logging onto the Weather
Underground internet site and accessing Member Settings. 16 character API keys used with the previous Weather
Underground API are not supported.
Determines how the time interval (WeeWX database field interval) between successive observations is determined. This option is identical in operation to the CSV interval option but applies to Weather Underground imports only. As a Weather Underground PWS history sometimes has missing records, the use of interval = derive may give incorrect or inconsistent interval values. Better results may be obtained by using interval = conf if the current WeeWX installation has the same archive_interval as the Weather Underground data, or by using interval = x where x is the time interval in minutes used to upload the Weather Underground data. The most appropriate setting will depend on the completeness and (time) accuracy of the Weather Underground data being imported.
The default is derive.
Determines whether simple quality control checks are applied to imported data. This option is identical in operation to the CSV qc option but applies to Weather Underground imports only. As Weather Underground imports at times contain nonsense values, particularly for fields for which no data was uploaded to Weather Underground by the PWS, the use of quality control checks on imported data can prevent these nonsense values from being imported and contaminating the WeeWX database. The default is True.
Determines whether any missing derived observations will be calculated from the imported data. This option is identical in operation to the CSV calc_missing option but applies to Weather Underground imports only. The default is True.
Determines whether invalid data in a source field is ignored or the import aborted. This option is identical in operation to the CSV ignore_invalid_data option but applies to Weather Underground imports only. The default is True.
The number of records written to the WeeWX database in each transaction. This option is identical in operation to the CSV tranche option but applies to Weather Underground imports only. The default is 250 which should suit most users.
Determines the range of acceptable wind direction values in degrees. This option is identical in operation to the CSV wind_direction option but applies to Weather Underground imports only. The default is 0, 360 which should suit most users.
The [Cumulus] section contains the options relating to the import of observational data from Cumulus monthly log files.
The full path to the directory containing the Cumulus monthly log files to be imported. Do not include a trailing /. There is no default.
The Cumulus monthly log file encoding. This option is identical in operation to the CSV source_encoding option but applies to Cumulus imports only. The default is utf-8-sig.
Determines how the time interval (WeeWX database field interval) between successive observations is determined. This option is identical in operation to the CSV interval option but applies to Cumulus monthly log file imports only. As Cumulus monthly log files can, at times, have missing entries, the use of interval = derive may give incorrect or inconsistent interval values. Better results may be obtained by using interval = conf if the archive_interval for the current WeeWX installation is the same as the Cumulus 'data log interval' setting used to generate the Cumulus monthly log files, or by using interval = x where x is the time interval in minutes used as the Cumulus 'data log interval' setting. The most appropriate setting will depend on the completeness and (time) accuracy of the Cumulus data being imported.
The default is derive.
Determines whether simple quality control checks are applied to imported data. This option is identical in operation to the CSV qc option but applies to Cumulus imports only. The default is True.
Determines whether any missing derived observations will be calculated from the imported data. This option is identical in operation to the CSV calc_missing option but applies to Cumulus imports only. The default is True.
The character used as the date field separator in the Cumulus monthly log file. A solidus (/) is frequently used but it may be another character depending on the settings on the machine that produced the Cumulus monthly log files. This parameter must be included in quotation marks. Default is '/'.
The character used as the field delimiter in the Cumulus monthly log file. A comma is frequently used but it may be another character depending on the settings on the machine that produced the Cumulus monthly log files. This parameter must be included in quotation marks. Default is ','.
The character used as the decimal point in the Cumulus monthly log files. A full stop is frequently used but it may be another character depending on the settings on the machine that produced the Cumulus monthly log files. This parameter must be included in quotation marks. Default is '.'.
Determines whether invalid data in a source field is ignored or the import aborted. This option is identical in operation to the CSV ignore_invalid_data option but applies to Cumulus monthly log file imports only. The default is True.
The number of records written to the WeeWX database in each transaction. This option is identical in operation to the CSV tranche option but applies to Cumulus monthly log file imports only. The default is 250 which should suit most users.
Enables wee_import to distinguish between the case where a UV sensor is present and the UV index is 0 and the case where no UV sensor is present and UV index is 0. This option is identical in operation to the CSV UV_sensor option but applies to Cumulus monthly log file imports only. The default is True.
Enables wee_import to distinguish between the case where a solar radiation sensor is present and the solar radiation is 0 and the case where no solar radiation sensor is present and solar radiation is 0. This option is identical in operation to the CSV solar_sensor option but applies to Cumulus monthly log file imports only. The default is True.
The [[Units]] stanza defines the units used in the Cumulus monthly log files. Units settings are required for temperature, pressure, rain and speed. The format for each setting is:
obs_type = weewx_unit_name
Where obs_type is one of temperature, pressure, rain or speed and weewx_unit_name is the WeeWX unit name of the units used by that particular obs_type. As Cumulus supports a different suite of possible units only a subset of the available WeeWX unit names can be used for some settings.
The [WD] section contains the options relating to the import of observational data from Weather Display monthly log files.
The full path to the directory containing the Weather Display monthly log files to be imported. Do not include a trailing /. There is no default.
The Weather Display monthly log files to be processed. Weather Display uses multiple files to record each month of data. Which monthly log files are produced depends on the Weather Display configuration and the capabilities of the weather station. wee_import supports the following Weather Display monthly log files:
where MM is a one or two digit month and YYYY is a four digit year
The format for the logs_to_process setting is:
logs_to_process = [lg.txt, | logcsv.csv, | vantagelog.txt, | vantagelogcsv.csv, | vantageextrasensorslog.csv]
Note
The leading MMYYYY is omitted when listing the monthly log files to be processed
using the logs_to_process setting. Inclusion of the leading MMYYYY will cause the
import to fail.
Note
The MMYYYYlgcsv.csv and MMYYYYvantagelogcsv.csv log files are CSV versions of
MMYYYYlg.txt and MMYYYYvantagelog.txt respectively. Either the .txt or .csv version of these files should be
used but not both.
The monthly log files selected for processing should be chosen carefully as the selected log files will determine the Weather Display data fields available for import. wee_import is able to import the following data from the indicated monthly log files:
Note
Whilst the above log files may contain the indicated data the data may only be
imported subject to a suitable field map and in-use WeeWX archive table schema (refer
to the [[FieldMap]] option).
The default is lg.txt, vantagelog.txt, vantageextrasensorslog.csv.
The Weather Display monthly log file encoding. This option is identical in operation to the CSV source_encoding option but applies to Weather Display imports only. The default is utf-8-sig.
Determines how the time interval (WeeWX database field interval) between successive observations is determined. This option is identical in operation to the CSV interval option but applies to Weather Display monthly log file imports only. As Weather Display log files nominally have entries at one minute intervals the recommended approach is to set interval = 1. As Weather Display monthly log files can, at times, have missing entries, the use of interval = derive may give incorrect or inconsistent interval values. If the archive_interval for the current WeeWX installation is 1 minute interval = conf may be used. In most cases the most appropriate setting will be interval = 1.
The default is 1.
Determines whether simple quality control checks are applied to imported data. This option is identical in operation to the CSV qc option but applies to Weather Display imports only. The default is True.
Determines whether any missing derived observations will be calculated from the imported data. This option is identical in operation to the CSV calc_missing option but applies to Weather Display imports only. The default is True.
The character used as the field delimiter in Weather Display text format monthly log files (.txt files). A space is normally used but another character may be used if necessary. This parameter must be included in quotation marks. Default is ' '.
The character used as the field delimiter in Weather Display csv format monthly log files (.csv files). A comma is normally used but another character may be used if necessary. This parameter must be included in quotation marks. Default is ','.
The character used as the decimal point in the Weather Display monthly log files. A full stop is frequently used but another character may be used if necessary. This parameter must be included in quotation marks. Default is '.'.
Determines whether missing log files are to be ignored or the import aborted. Weather Display log files are complete in themselves and a missing log file will have no effect other than there will be no imported data for the period covered by the missing log file. The default is True.
Determines whether invalid data in a source field is ignored or the import aborted. This option is identical in operation to the CSV ignore_invalid_data option but applies to Weather Display monthly log file imports only. The default is True.
The number of records written to the WeeWX database in each transaction. This option is identical in operation to the CSV tranche option but applies to Weather Display monthly log file imports only. The default is 250 which should suit most users.
Enables wee_import to distinguish between the case where a UV sensor is present and the UV index is 0 and the case where no UV sensor is present and UV index is 0. This option is identical in operation to the CSV UV_sensor option but applies to Weather Display monthly log file imports only. The default is True.
Enables wee_import to distinguish between the case where a solar radiation sensor is present and the solar radiation is 0 and the case where no solar radiation sensor is present and solar radiation is 0. This option is identical in operation to the CSV solar_sensor option but applies to Weather Display monthly log file imports only. The default is True.
Determines whether extreme temperature and humidity values are ignored. Weather Display log files record the value 255 for temperature and humidity fields if no corresponding sensor is present. Setting ignore_extreme_temp_hum = True will cause temperature and humidity values of 255 to be ignored. Setting ignore_extreme_temp_hum = False will cause temperature and humidity values of 255 to be treated as valid data to be imported. The default is True.
Note
Setting ignore_extreme_temp_hum = False will cause
temperature and humidity values of 255 to be imported; however, these values may be rejected by the simple
quality control checks implemented if qc = True is used.
The [[Units]] stanza defines the units used in the Weather Display monthly log files. Weather Display monthly log files normally use Metric or US customary units depending on the Log File setting under Units on the Units/Wind Chill tab of the Weather Display Universal Setup. In such cases the units configuration option may be set to Metric or US to select either Metric or US customary units. There is no default.
It is also possible to individually specify the log file units used for temperature, pressure, rain and speed. The format for each setting is:
obs_type = weewx_unit_name
Where obs_type is one of temperature, pressure, rain or speed and weewx_unit_name is the WeeWX unit name of the units used by that particular obs_type. As Weather Display supports a different suite of possible units only a subset of the available WeeWX unit names can be used for some settings.
The preferred method for defining the Weather Display log file units is through the use of the units configuration option. When defining the import log file units either the units configuration option should be used or the individual temperature, pressure, rain and speed units defined but not both. If both the units configuration option is defined as well as the individual temperature, pressure, rain and speed units defined then the units configuration option takes precedence and all other units settings are ignored.
The [[FieldMap]] stanza defines the mapping from the Weather Display monthly log data fields to WeeWX archive fields. By default imported Weather Display data is mapped to the corresponding WeeWX archive fields using a default field map. The default field map will likely suit most users; however, depending on the station capabilities and the in-use WeeWX database schema, a custom field map may be required if Weather Display monthly logs contain data from additional sensors that cannot be stored in the WeeWX archive using the default field map. A custom field map also makes it possible to limit the Weather Display monthly log data fields that are imported into WeeWX.
The field map consists of one row per field using the format:
weewx_archive_field_name = weather_display_field_name
Where weewx_archive_field_name is a field name in the in-use WeeWX archive table schema and weather_display_field_name is a Weather Display import field name. The available Weather Display import field names are listed in the table below.
| Field name | Description |
| barometer | barometric pressure |
| dewpoint | dew point |
| direction | wind direction |
| gustspeed | wind gust speed |
| heatindex | heat index |
| humidity | outside humidity |
| hum1 | extra humidity 1 |
| hum2 | extra humidity 2 |
| hum3 | extra humidity 3 |
| hum4 | extra humidity 4 |
| hum5 | extra humidity 5 |
| hum6 | extra humidity 6 |
| radiation | solar radiation |
| rainlastmin | rainfall in the last 1 minute |
| soilmoist | soil moisture |
| soiltemp | soil temperature |
| temperature | outside temperature |
| temp1 | extra temperature 1 |
| temp2 | extra temperature 2 |
| temp3 | extra temperature 3 |
| temp4 | extra temperature 4 |
| temp5 | extra temperature 5 |
| temp6 | extra temperature 6 |
| uv | UV index |
| windspeed | average wind speed |
A mapping is not required for every WeeWX archive field (e.g., the Weather Display monthly logs may not provide inside temperature so no inTemp field mapping is required) and neither does every Weather Display monthly log field need to be included in a mapping (e.g., the Weather Display monthly log field soiltemp may have no data as the station has no soil temperature probe).
Note
Any WeeWX archive fields that are derived
(e.g., dewpoint) and for which there is no field mapping may be calculated during
import by use of the calc_missing option in
the [WD] section of the import configuration file.
The example Weather Display import configuration file located in the /home/weewx/util/import or the /etc/weewx/import directory contains an example field map in the import configuration file comments. There is no default.
The [WeatherCat] section contains the options relating to the import of observational data from WeatherCat monthly .cat files.
The full path to the directory containing the year directories that contain the WeatherCat monthly .cat files to be imported. Do not include a trailing /. There is no default.
The WeatherCat monthly .cat file encoding. This option is identical in operation to the CSV source_encoding option but applies to WeatherCat imports only. The default is utf-8-sig.
Determines how the time interval (WeeWX database field interval) between successive observations is determined. This option is identical in operation to the CSV interval option but applies to WeatherCat imports only. As WeatherCat monthly .cat files can, at times, have missing entries, the use of interval = derive may give incorrect or inconsistent interval values. Better results may be obtained by using interval = conf if the archive_interval for the current WeeWX installation is the same as the WeatherCat .cat file log interval, or by using interval = x where x is the time interval in minutes used in the WeatherCat monthly .cat file(s). The most appropriate setting will depend on the completeness and (time) accuracy of the WeatherCat data being imported.
The default is derive.
Determines whether simple quality control checks are applied to imported data. This option is identical in operation to the CSV qc option but applies to WeatherCat imports only. The default is True.
Determines whether any missing derived observations will be calculated from the imported data. This option is identical in operation to the CSV calc_missing option but applies to WeatherCat imports only. The default is True.
The character used as the decimal point in the WeatherCat monthly .cat files. This parameter must be included in quotation marks. Default is '.'.
The number of records written to the WeeWX database in each transaction. This option is identical in operation to the CSV tranche option but applies to WeatherCat imports only. The default is 250 which should suit most users.
Enables wee_import to distinguish between the case where a UV sensor is present and the UV index is 0 and the case where no UV sensor is present and UV index is 0. This option is identical in operation to the CSV UV_sensor option but applies to WeatherCat imports only. The default is True.
Enables wee_import to distinguish between the case where a solar radiation sensor is present and the solar radiation is 0 and the case where no solar radiation sensor is present and solar radiation is 0. This option is identical in operation to the CSV solar_sensor option but applies to WeatherCat imports only. The default is True.
The [[Units]] stanza defines the units used in the WeatherCat monthly .cat files. Unit settings are required for temperature, pressure, rain and speed. The format for each setting is:
obs_type = weewx_unit_name
Where obs_type is one of temperature, pressure, rain or speed and weewx_unit_name is the WeeWX unit name of the units used by that particular obs_type (refer to the Units appendix in the Customization Guide for details of available WeeWX unit names). As WeatherCat supports a different suite of possible units only a subset of the available WeeWX unit names can be used for some settings.
Warning!
Running WeeWX during a wee_import session can lead to
abnormal termination of the import. If WeeWX must remain running (e.g., so that live data is not lost) run
the wee_import session on another machine or to a second database and merge the
in-use and second database once the import is complete.
wee_import can import data from a single CSV file. The CSV source file must be structured as follows:
A CSV file suitable for import by wee_import may look like this:
Time,Barometer,Temp,Humidity,Windspeed,Dir,Gust,Dayrain,Radiation,Uv,Comment 28/11/2017 08:00:00,1016.9,24.6,84,1.8,113,8,0,359,3.8,"start of observations" 28/11/2017 08:05:00,1016.9,25.1,82,4.8,135,11.3,0,775,4.7, 28/11/2017 08:10:00,1016.9,25.4,80,4.4,127,11.3,0,787,5.1,"note temperature" 28/11/2017 08:15:00,1017,25.7,79,3.5,74,11.3,0,800,5.4, 28/11/2017 08:20:00,1016.9,25.9,79,1.6,95,9.7,0,774,5.5, 28/11/2017 08:25:00,1017,25.5,78,2.9,48,9.7,0,303,3.4,"forecast received" 28/11/2017 08:30:00,1017.1,25.1,80,3.1,54,9.7,0,190,3.6,
or this:
Time,Barometer,Temp,Humidity,Windspeed,Dir,Gust,Dayrain,Radiation,Uv 2/1/2017 06:20:00,1006.4,4.8,48,2.8,NE,4,0,349,2.8 2/1/2017 06:25:00,1006.9,5.0,48,3.8,NNE,21.3,0,885,4.3 2/1/2017 06:30:00,1006.8,5.4,47,3.4,North,12.3,0,887,5.3 2/1/2017 06:35:00,1007,5.2,49,5.5,NNE,13.3,0,600,5.4 2/1/2017 06:40:00,1006.9,5.7,49,2.6,ESE,9.7,0,732,5.5 2/1/2017 06:45:00,1007,5.5,48,1.9,Southsoutheast,9.8,0,393,6.4 2/1/2017 06:50:00,1007.1,5.2,50,2.1,southeast,9.9,0,180,6.6
Note
Cardinal, intercardinal
and/or secondary intercardinal directions may be represented by one, two or three letter abbreviations
e.g., N, SE or SSW; by a single word e.g., North, Southwest or Southsouthwest or by hyphenated or spaced words
e.g., North West or South-south-west. Capitalisation is ignored as are any spaces, hyphens or other white
space. At present only English abbreviations and directions are supported.
The WeeWX archive fields populated during a CSV import depend on the CSV-to-WeeWX field mappings specified in [[FieldMap]] stanza in the import configuration file. If a valid field mapping exists, the WeeWX field exists in the WeeWX archive table schema and provided the mapped CSV field contains valid data, then the corresponding WeeWX field will populated. Note that the CSV import is the only import supported by wee_import that allows any WeeWX archive field to be populated.
Note
The use of the calc_missing option in the import configuration file may result in a
number of derived fields being calculated from the imported data. If these derived fields exist in the
in-use database schema they will be saved to the database as well.
To import observations from a CSV file:
$ cp /home/weewx/util/import/csv-example.conf /var/tmp/csv.conf
source = CSV
To perform a dry run enter the following command:
wee_import --import-config=/var/tmp/csv.conf --dry-run
The output should be something like this:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... A CSV import from source file '/var/tmp/data.csv' has been requested. Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. This is a dry run, imported data will not be saved to archive. Starting dry run import ... 27337 records identified for import. Unique records processed: 27337; Last timestamp: 2018-03-03 06:00:00 AEST (1520020800) Finished dry run import 27337 records were processed and 27337 unique records would have been imported.
The output includes details about the data source, the destination of the imported data and some other details on how the data will be processed. The import will then be performed but no data will be written to the WeeWX database. Upon completion a brief summary of the records processed is provided.
wee_import --import-config=/var/tmp/csv.conf
This will result in a short preamble similar to that from the dry run. At the end of the preamble there will be a prompt:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... A CSV import from source file '/var/tmp/data.csv' has been requested. Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Starting import ... 27337 records identified for import. Proceeding will save all imported records in the WeeWX archive. Are you sure you want to proceed (y/n)?
Unique records processed: 3250; Last timestamp: 2017-12-09 14:45:00 AEST (1512794700)
The line commencing with Unique records processed should update as records are imported with progress information on number of records processed, number of unique records imported and the date time of the latest record processed. Once the initial import is complete wee_import will, if requested, calculate any missing derived observations and rebuild the daily summaries. A brief summary should be displayed similar to the following:
Calculating missing derived observations... Processing record: 27337; Last record: 2018-03-03 06:00:00 AEST (1520020800) Recalculating daily summaries... Records processed: 27337; Last date: 2018-03-03 06:00:00 AEST (1520020800) Finished recalculating daily summaries Finished calculating missing derived observations
When the import is complete a brief summary is displayed similar to the following:
Finished import 27337 records were processed and 27337 unique records imported in 113.91 seconds. Those records with a timestamp already in the archive will not have been imported. Confirm successful import in the WeeWX log file.
Aug 22 14:38:28 stretch12 wee_import[1226] ERROR weewx.manager: Unable to add record 2018-09-04 04:20:00 AEST (1535998800) to database 'weewx.sdb': UNIQUE constraint failed: archive.dateTime
In such cases you should take note of the timestamp of the record(s) concerned and make a decision about whether to delete the pre-existing record and re-import the record or retain the pre-existing record.
Warning!
Running WeeWX during a wee_import session can lead to
abnormal termination of the import. If WeeWX must remain running (e.g., so that live data is not lost) run
the wee_import session on another machine or to a second database and merge the
in-use and second database once the import is complete.
wee_import can import historical observation data for a Weather Underground PWS via the Weather Underground API. The Weather Underground API provides historical weather station observations received by Weather Underground for the PWS concerned on a day by day basis. As such, the data is analogous to the WeeWX archive table. When wee_import imports data from the Weather Underground API each day is considered a 'period'. wee_import processes one period at a time in chronological order (oldest to newest) and provides import summary data on a per period basis.
A Weather Underground import will populate WeeWX archive fields as follows:
Note
If an appropriate field is not returned by the Weather Underground API then
the corresponding WeeWX archive field will contain no data. If the API returns an appropriate field but
with no data, the corresponding WeeWX archive field will be set to None/null.
For example, if the API response has no solar radiation field the WeeWX
radiation archive field will have no data stored. However, if the API
response has a solar radiation field but contains no data, the WeeWX
radiation archive field will be None/null.
Note
If calc_missing = False is included in the [WU] section of the import configuration file being used then all of the above
fields will be set to None/null. The default setting of the calc_missing option is True
To import observations from a Weather Underground PWS history:
$ cp /home/weewx/util/import/wu-example.conf /var/tmp/wu.conf
source = WU
Note
As Weather Underground imports at times contain nonsense values,
particularly for fields for which no data were uploaded to Weather Underground by the PWS,
the use of quality control checks on imported data can prevent these nonsense values from
being imported and contaminating the WeeWX database.
To perform a dry run enter the following command:
wee_import --import-config=/var/tmp/wu.conf --from=2016-01-20T22:30 --to=2016-01-23T06:00 --dry-run
In this case the --from and --to options have been used to import Weather Underground records from 10:30pm on 20 January 2016 to 6:00am on 23 January 2016 inclusive.
Note
If the --date option is omitted, or a date (not
date-time) range is specified using the --from and --to options during a Weather Underground import, then one or more full days of
history data will be imported. This includes records timestamped from 00:00 (inclusive) at the start of the day up to but NOT including the 00:00 record at the end of the last day. As the timestamped record refers to
observations of the previous interval, such an import actually includes one record with observations
from the previous day (the 00:00 record at the start of the day). Whilst
this will not present a problem for wee_import as any records being
imported with a timestamp that already exists in the WeeWX database are ignored, you may wish to use
the --from and --to options with a suitable
date-time range to precisely control which records are imported.
Note
wee_import obtains Weather Underground daily
history data one day at a time via a HTTP request and as such the import of large time spans of data
may take some time. Such imports may be best handled as a series of imports of smaller time spans.
This will result in a short preamble with details on the data source, the destination of the imported data and some other details on how the data will be processed. The import will then be performed but no data will written to the WeeWX database.
The output should be similar to:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... Observation history for Weather Underground station 'ISTATION123' will be imported. Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Observations timestamped after 2016-01-20 22:30:00 AEST (1453293000) and up to and including 2016-01-23 06:00:00 AEST (1453492800) will be imported. This is a dry run, imported data will not be saved to archive. Starting dry run import ... Records covering multiple periods have been identified for import. Period 1 ... Unique records processed: 18; Last timestamp: 2016-01-20 23:55:00 AEST (1453298100) Period 2 ... Unique records processed: 284; Last timestamp: 2016-01-21 23:55:00 AEST (1453384500) Period 3 ... Unique records processed: 284; Last timestamp: 2016-01-22 23:55:00 AEST (1453470900) Period 4 ... Unique records processed: 71; Last timestamp: 2016-01-23 06:00:00 AEST (1453492800) Finished dry run import 657 records were processed and 657 unique records would have been imported.
Note
Any periods for which no data could be obtained will be skipped. The lack
of data may be due to an incorrect station ID, an incorrect date or Weather Underground API problems.
A short explanatory note to this effect will be displayed against the period concerned and an entry
included in the log.
wee_import --import-config=/var/tmp/wu.conf --from=2016-01-20T22:30 --to=2016-01-23T06:00
This will result in a short preamble similar to that of a dry run. At the end of the preamble there will be a prompt:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... Observation history for Weather Underground station 'ISTATION123' will be imported. Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Observations timestamped after 2016-01-20 22:30:00 AEST (1453293000) and up to and including 2016-01-23 06:00:00 AEST (1453492800) will be imported. Starting import ... Records covering multiple periods have been identified for import. Period 1 ... Proceeding will save all imported records in the WeeWX archive. Are you sure you want to proceed (y/n)?
Note
wee_import obtains Weather Underground data
one day at a time via a HTTP request and as such the import of large time spans of data may take some
time. Such imports may be best handled as a series of imports of smaller time spans.
Unique records processed: 18; Last timestamp: 2016-01-20 23:55:00 AEST (1453298100) Period 2 ... Unique records processed: 284; Last timestamp: 2016-01-21 23:55:00 AEST (1453384500) Period 3 ... Unique records processed: 284; Last timestamp: 2016-01-22 23:55:00 AEST (1453470900)
Note
Any periods for which no data could be obtained will be skipped. The lack
of data may be due to an incorrect station ID, an incorrect date or Weather Underground API problems.
A short explanatory note to this effect will be displayed against the period concerned and an entry
included in the log.
The line commencing with Unique records processed should update as records are imported with progress information on number of records processed, number of unique records imported and the date time of the latest record processed. If the import spans multiple days then a new Period line is created for each day.
Once the initial import is complete wee_import will, if requested, calculate any missing derived observations and rebuild the daily summaries. A brief summary should be displayed similar to the following:
Calculating missing derived observations ... Processing record: 204; Last record: 2016-01-22 23:55:00 AEST (1453470900) Recalculating daily summaries... Finished recalculating daily summaries Finished calculating missing derived observations
When the import is complete a brief summary is displayed similar to the following:
Finished import 657 records were processed and 657 unique records imported in 78.97 seconds. Those records with a timestamp already in the archive will not have been imported. Confirm successful import in the WeeWX log file.
Note
The new (2019) Weather Underground API appears to have an issue when
obtaining historical data for the current day. The first time the API is queried the API returns all
historical data up to and including the most recent record. However, subsequent later API queries
during the same day return the same set of records rather than all records up to and including the
time of the latest API query. Users importing Weather Underground data that includes data from the
current day are advised to carefully check the WeeWX log to ensure that all expected records were
imported. If some records are missing from the current day try running an import for the current day
again using the --date option setting. If this fails then wait until the
following day and perform another import for the day concerned again using the
--date option setting. In all cases confirm what data has been imported by
referring to the WeeWX log.
Aug 22 14:38:28 stretch12 weewx[863]: manager: unable to add record 2018-09-04 04:20:00 AEST (1535998800) to database 'weewx.sdb': UNIQUE constraint failed: archive.dateTime
In such cases you should take note of the timestamp of the record(s) concerned and make a decision about whether to delete the pre-existing record and re-import the record or retain the pre-existing record.
Warning!
Running WeeWX during a wee_import session can lead to
abnormal termination of the import. If WeeWX must remain running (e.g., so that live data is not lost) run
the wee_import session on another machine or to a second database and merge the
in-use and second database once the import is complete.
wee_import can import observational data from the one or more Cumulus monthly log files. A Cumulus monthly log file records weather station observations for a single month. These files are accumulated over time and can be considered analogous to the WeeWX archive table. When wee_import imports data from the Cumulus monthly log files each log file is considered a 'period'. wee_import processes one period at a time in chronological order (oldest to newest) and provides import summary data on a per period basis.
A Cumulus monthly log file import will populate the WeeWX archive fields as follows:
Note
If a field in the Cumulus monthly log file has no data then the
corresponding WeeWX archive field will be set to None/null.
Note
If calc_missing = False is included in the
[Cumulus] section of the import configuration file being used then all of
the above fields will be set to None/null. The default setting of the
calc_missing option is True
To import observations from one or more Cumulus monthly log files:
$ cp /home/weewx/util/import/cumulus-example.conf /var/tmp/cumulus.conf
source = Cumulus
To perform a dry run enter the following command:
wee_import --import-config=/var/tmp/cumulus.conf --dry-run
This will result in a short preamble with details on the data source, the destination of the imported data and some other details on how the data will be processed. The import will then be performed but no data will be written to the WeeWX database.
The output should be similar to:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... Cumulus monthly log files in the '/var/tmp/cumulus' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. This is a dry run, imported data will not be saved to archive. Starting dry run import ... Records covering multiple periods have been identified for import. Period 1 ... Unique records processed: 8858; Last timestamp: 2016-10-31 23:55:00 AEST (1477922100) Period 2 ... Unique records processed: 8636; Last timestamp: 2016-11-30 23:55:00 AEST (1480514100) Period 3 ... Unique records processed: 8925; Last timestamp: 2016-12-31 23:55:00 AEST (1483192500) Period 4 ... Unique records processed: 8908; Last timestamp: 2017-01-31 23:55:00 AEST (1485870900) Period 5 ... Unique records processed: 8029; Last timestamp: 2017-02-28 23:55:00 AEST (1488290100) Period 6 ... Unique records processed: 8744; Last timestamp: 2017-03-31 23:55:00 AEST (1490968500) Period 7 ... Unique records processed: 8489; Last timestamp: 2017-04-30 23:02:00 AEST (1493557320) Period 8 ... Unique records processed: 8754; Last timestamp: 2017-05-31 23:55:00 AEST (1496238900) Period 9 ... Unique records processed: 8470; Last timestamp: 2017-06-30 23:55:00 AEST (1498830900) Finished dry run import 77813 records were processed and 77813 unique records would have been imported.
Note
The nine periods correspond to the nine monthly log files used for this
import.
Note
Any periods for which no data could be obtained will be skipped. The lack
of data may be due to a missing Cumulus monthly log file. A short explanatory note to this effect
will be displayed against the period concerned and an entry included in the log.
wee_import --import-config=/var/tmp/cumulus.conf
This will result in a preamble similar to that of a dry run. At the end of the preamble there will be a prompt:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... Cumulus monthly log files in the '/var/tmp/cumulus' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Starting import ... Records covering multiple periods have been identified for import. Period 1 ... Proceeding will save all imported records in the WeeWX archive. Are you sure you want to proceed (y/n)?
If there is more than one Cumulus monthly log file then wee_import will provide summary information on a per period basis during the import. In addition, if the --date option is used then source data that falls outside the date or date range specified with the --date option is ignored. In such cases the preamble may look similar to:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... Cumulus monthly log files in the '/var/tmp/cumulus' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Starting import ... Records covering multiple periods have been identified for import. Period 1 ... Period 1 - no records identified for import. Period 2 ... Period 2 - no records identified for import. Period 3 ... Proceeding will save all imported records in the WeeWX archive. Are you sure you want to proceed (y/n)?
Unique records processed: 2305; Last timestamp: 2016-12-30 00:00:00 AEST (1483020000)
Again if there is more than one Cumulus monthly log file and if the --date option is used then the progress information may instead look similar to:
Period 4 ... Unique records processed: 8908; Last timestamp: 2017-01-31 23:55:00 AEST (1485870900) Period 5 ... Unique records processed: 8029; Last timestamp: 2017-02-28 23:55:00 AEST (1488290100) Period 6 ... Unique records processed: 8744; Last timestamp: 2017-03-31 23:55:00 AEST (1490968500)
Note
Any periods for which no data could be obtained will be skipped. The lack
of data may be due to a missing Cumulus monthly log file. A short explanatory note to this effect
will be displayed against the period concerned and an entry included in the log.
The line commencing with Unique records processed should update as records are imported with progress information on number of records processed, number of unique records imported and the date time of the latest record processed. If the import spans multiple months (ie multiple monthly log files) then a new Period line is created for each month.
Once the initial import is complete wee_import will, if requested, calculate any missing derived observations and rebuild the daily summaries. A brief summary should be displayed similar to the following:
Calculating missing derived observations ... Processing record: 77782; Last record: 2017-06-30 00:00:00 AEST (1519826400) Recalculating daily summaries... Records processed: 77000; Last date: 2017-06-28 11:45:00 AEST (1519811100) Finished recalculating daily summaries Finished calculating missing derived observations
When the import is complete a brief summary is displayed similar to the following:
Finished import 77813 records were processed and 77813 unique records imported in 106.96 seconds. Those records with a timestamp already in the archive will not have been imported. Confirm successful import in the WeeWX log file.
Aug 22 14:38:28 stretch12 weewx[863]: manager: unable to add record 2018-09-04 04:20:00 AEST (1535998800) to database 'weewx.sdb': UNIQUE constraint failed: archive.dateTime
In such cases take note of the timestamp of the record(s) concerned and make a decision about whether to delete the pre-existing record and re-import the record or retain the pre-existing record.
Warning!
Running WeeWX during a wee_import session can lead to
abnormal termination of the import. If WeeWX must remain running (e.g., so that live data is not lost) run
the wee_import session on another machine or to a second database and merge the
in-use and second database once the import is complete.
wee_import can import observational data from the one or more Weather Display monthly log files. Weather Display records observational data on a monthly basis in a number of either space delimited (.txt) and/or comma separated (.csv) text files. wee_import can import observational data from the following Weather Display log files:
where MM is a one or two digit month and YYYY is a four digit year
The Weather Display monthly log files record observational data using a nominal 1 minute interval with each file recording various observations for the month and year designated by the MM and YYYY components of the file name. These files are accumulated over time and can be considered analogous to the WeeWX archive table. When wee_import imports data from the Weather Display monthly log files each set of log files for a given month and year is considered a 'period'. wee_import processes one period at a time in chronological order (oldest to newest) and provides import summary data on a per period basis.
The WeeWX archive fields populated during the import of Weather Display data depends on the field mapping specified in [[FieldMap]] stanza in the import configuration file. A given WeeWX field will be populated if:
The following WeeWX archive fields will be populated from other settings or configuration options and need not be included in the field map:
Note
If calc_missing = False is included in the [WD] section of the import configuration file being used then all of the above
fields will be set to None/null. The default setting of the calc_missing option is True
To import observations from one or more Weather Display monthly log files:
$ cp /home/weewx/util/import/wd-example.conf /var/tmp/wd.conf
source = WD
Note
Due to some peculiarities of the Weather Display log structure it may be
prudent to use the --suppress--warnings option during the initial dry run
so the overall progress of the import can be observed.
To perform a dry run enter the following command:
wee_import --import-config=/var/tmp/wd.conf --dry-run --suppress-warnings
This will result in a short preamble with details on the data source, the destination of the imported data and some other details on how the data will be processed. The import will then be performed but no data will be written to the WeeWX database.
The output should be similar to:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... Weather Display monthly log files in the '/var/tmp/WD' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. This is a dry run, imported data will not be saved to archive. Starting dry run import ... Records covering multiple periods have been identified for import. Period 1 ... Unique records processed: 43183; Last timestamp: 2018-09-30 23:59:00 AEST (1538315940) Period 2 ... Unique records processed: 44620; Last timestamp: 2018-10-31 23:59:00 AEST (1540994340) Period 3 ... Unique records processed: 43136; Last timestamp: 2018-11-30 23:59:00 AEST (1543586340) Period 4 ... Unique records processed: 44633; Last timestamp: 2018-12-31 23:59:00 AEST (1546264740) Period 5 ... Unique records processed: 8977; Last timestamp: 2019-01-07 05:43:00 AEST (1546803780) Finished dry run import 184765 records were processed and 184549 unique records would have been imported. 216 duplicate records were ignored.
Note
The five periods correspond to the five months of log files used for this
import.
Note
Any periods for which no data could be obtained will be skipped. The lack
of data may be due to a missing Weather Display log file. A short explanatory note to this effect
will be displayed against the period concerned and an entry included in the log.
wee_import --import-config=/var/tmp/wd.conf --dry-run
This will result in a short preamble with details on the data source, the destination of the imported data and some other details on how the data will be processed. The import will then be performed but no data will be written to the WeeWX database.
The output should be similar to:
Using WeeWX configuration file /home/weewx/weewx.conf
Starting wee_import...
Weather Display monthly log files in the '/var/tmp/WD' directory will be imported
Using database binding 'wx_binding', which is bound to database 'weewx.sdb'
Destination table 'archive' unit system is '0x01' (US).
Missing derived observations will be calculated.
This is a dry run, imported data will not be saved to archive.
Starting dry run import ...
Records covering multiple periods have been identified for import.
Period 1 ...
Warning: Import field 'radiation' is mapped to WeeWX field 'radiation' but the
import field 'radiation' could not be found in one or more records.
WeeWX field 'radiation' will be set to 'None' in these records.
Warning: Import field 'soiltemp' is mapped to WeeWX field 'soilTemp1' but the
import field 'soiltemp' could not be found in one or more records.
WeeWX field 'soilTemp1' will be set to 'None' in these records.
Warning: Import field 'soilmoist' is mapped to WeeWX field 'soilMoist1' but the
import field 'soilmoist' could not be found in one or more records.
WeeWX field 'soilMoist1' will be set to 'None' in these records.
Warning: Import field 'humidity' is mapped to WeeWX field 'outHumidity' but the
import field 'humidity' could not be found in one or more records.
WeeWX field 'outHumidity' will be set to 'None' in these records.
Warning: Import field 'heatindex' is mapped to WeeWX field 'heatindex' but the
import field 'heatindex' could not be found in one or more records.
WeeWX field 'heatindex' will be set to 'None' in these records.
Warning: Import field 'windspeed' is mapped to WeeWX field 'windSpeed' but the
import field 'windspeed' could not be found in one or more records.
WeeWX field 'windSpeed' will be set to 'None' in these records.
Warning: Import field 'barometer' is mapped to WeeWX field 'barometer' but the
import field 'barometer' could not be found in one or more records.
WeeWX field 'barometer' will be set to 'None' in these records.
Warning: Import field 'dewpoint' is mapped to WeeWX field 'dewpoint' but the
import field 'dewpoint' could not be found in one or more records.
WeeWX field 'dewpoint' will be set to 'None' in these records.
Warning: Import field 'rainlastmin' is mapped to WeeWX field 'rain' but the
import field 'rainlastmin' could not be found in one or more records.
WeeWX field 'rain' will be set to 'None' in these records.
Warning: Import field 'direction' is mapped to WeeWX field 'windDir' but the
import field 'direction' could not be found in one or more records.
WeeWX field 'windDir' will be set to 'None' in these records.
Warning: Import field 'temperature' is mapped to WeeWX field 'outTemp' but the
import field 'temperature' could not be found in one or more records.
WeeWX field 'outTemp' will be set to 'None' in these records.
Warning: Import field 'gustspeed' is mapped to WeeWX field 'windGust' but the
import field 'gustspeed' could not be found in one or more records.
WeeWX field 'windGust' will be set to 'None' in these records.
Unique records processed: 43183; Last timestamp: 2018-09-30 23:59:00 AEST (1538315940)
Period 2 ...
Unique records processed: 44620; Last timestamp: 2018-10-31 23:59:00 AEST (1540994340)
Period 3 ...
Unique records processed: 43136; Last timestamp: 2018-11-30 23:59:00 AEST (1543586340)
Period 4 ...
Unique records processed: 44633; Last timestamp: 2018-12-31 23:59:00 AEST (1546264740)
Period 5 ...
Unique records processed: 8977; Last timestamp: 2019-01-07 05:43:00 AEST (1546803780)
6 duplicate records were identified in period 5:
2019-01-04 10:31:00 AEST (1546561860)
2019-01-04 10:32:00 AEST (1546561920)
2019-01-04 10:33:00 AEST (1546561980)
2019-01-04 10:34:00 AEST (1546562040)
2019-01-04 10:35:00 AEST (1546562100)
2019-01-04 10:36:00 AEST (1546562160)
Finished dry run import
184555 records were processed and 184549 unique records would have been imported.
6 duplicate records were ignored.
In this case the following warnings are evident:
wee_import --import-config=/var/tmp/wd.conf --suppress-warnings
Note
The --suppress--warnings option has been used to
suppress the previously encountered warnings.
This will result in a preamble similar to that of a dry run. At the end of the preamble there will be a prompt:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... Weather Display monthly log files in the '/var/tmp/WD' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Starting import ... Records covering multiple periods have been identified for import. Period 1 ... Proceeding will save all imported records in the WeeWX archive. Are you sure you want to proceed (y/n)?
If there is more than one month of Weather Display monthly log files then wee_import will provide summary information on a per period basis during the import. In addition, if the --date option is used then source data that falls outside the date or date range specified with the --date option is ignored. In such cases the preamble may look similar to:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... Weather Display monthly log files in the '/var/tmp/WD' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Observations timestamped after 2018-10-12 00:00:00 AEST (1539266400) and up to and including 2018-10-13 00:00:00 AEST (1539352800) will be imported. Starting import ... Records covering multiple periods have been identified for import. Period 1 ... Period 1 - no records identified for import. Period 2 ... Proceeding will save all imported records in the WeeWX archive. Are you sure you want to proceed (y/n)?
Unique records processed: 1250; Last timestamp: 2018-12-01 20:49:00 AEST (1543661340)
Again if there is more than one month of Weather Display monthly log files and if the --date option is used then the progress information may instead look similar to:
Period 2 ... Unique records processed: 44620; Last timestamp: 2018-10-31 23:59:00 AEST (1540994340) Period 3 ... Unique records processed: 43136; Last timestamp: 2018-11-30 23:59:00 AEST (1543586340) Period 4 ... Unique records processed: 12000; Last timestamp: 2018-12-09 07:59:00 AEST (1544306340)
Note
Any periods for which no data could be obtained will be skipped. The lack
of data may be due to a missing Weather Display log file. A short explanatory note to this effect
will be displayed against the period concerned and an entry included in the log.
The line commencing with Unique records processed should update as records are imported with progress information on number of unique records processed and the date time of the latest record processed. If the import spans multiple months then a new Period line is created for each month.
Once the initial import is complete wee_import will, if requested, calculate any missing derived observations and rebuild the daily summaries. A brief summary should be displayed similar to the following:
Calculating missing derived observations ... Processing record: 184549; Last record: 2019-01-08 00:00:00 AEST (1546869600) Recalculating daily summaries... Records processed: 184000; Last date: 2019-01-06 20:34:00 AEST (1546770840) Finished recalculating daily summaries Finished calculating missing derived observations
When the import is complete a brief summary is displayed similar to the following:
Finished import 184765 records were processed and 184549 unique records imported in 699.27 seconds. 216 duplicate records were ignored. Those records with a timestamp already in the archive will not have been imported. Confirm successful import in the WeeWX log file.
Aug 22 14:38:28 stretch12 weewx[863]: manager: unable to add record 2018-09-04 04:20:00 AEST (1535998800) to database 'weewx.sdb': UNIQUE constraint failed: archive.dateTime
In such cases take note of the timestamp of the record(s) concerned and make a decision about whether to delete the pre-existing record and re-import the record or retain the pre-existing record.
Warning!
Running WeeWX during a wee_import session can lead to
abnormal termination of the import. If WeeWX must remain running (e.g., so that live data is not lost) run
the wee_import session on another machine or to a second database and merge the
in-use and second database once the import is complete.
wee_import can import observational data from the one or more WeatherCat monthly .cat files. A WeatherCat monthly .cat file records weather station observations for a single month. These files are accumulated over time and can be considered analogous to the WeeWX archive table. When wee_import imports data from the WeatherCat monthly .cat files each file is considered a 'period'. wee_import processes one period at a time in chronological order (oldest to newest) and provides import summary data on a per period basis.
A WeatherCat import will populate the WeeWX archive fields as follows:
Note
If a field in the WeatherCat monthly .cat file has no data then the
corresponding WeeWX archive field will be set to None/null.
Note
If calc_missing = False is included in the
[WeatherCat] section of the import configuration file being used then all
of the above fields will be set to None/null. The default setting of the
calc_missing option is True
To import observations from one or more WeatherCat monthly .cat files:
$ cp /home/weewx/util/import/weathercat-example.conf /var/tmp/wcat.conf
source = WeatherCat
Note
Whilst WeatherCat monthly .cat files use a fixed set of fields the
inclusion of fields other than t (timestamp)
and V (validation) is optional. For this reason the field map used for
WeatherCat imports includes fields that may not exist in some WeatherCat monthly .cat files
resulting in warnings by wee_port that there may be missing data in the
import source. These warnings can be extensive and may detract from the ability of the user to monitor
the progress of the import. It may be prudent to use the --suppress--warnings
option during the initial dry run so the overall progress of the import can be more easily observed.
To perform a dry run enter the following command:
wee_import --import-config=/var/tmp/wcat.conf --dry-run --suppress-warnings
This will result in a short preamble with details on the data source, the destination of the imported data and some other details on how the data will be processed. The import will then be performed but no data will be written to the WeeWX database.
The output should be similar to:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... WeatherCat monthly .cat files in the '/var/tmp/wcat' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. This is a dry run, imported data will not be saved to archive. Starting dry run import ... Records covering multiple periods have been identified for import. Period 1 ... Unique records processed: 39555; Last timestamp: 2016-10-31 23:59:00 AEST (1477922340) Period 2 ... Unique records processed: 38284; Last timestamp: 2016-11-30 23:59:00 AEST (1480514340) Period 3 ... Unique records processed: 39555; Last timestamp: 2016-12-31 23:59:00 AEST (1483192740) Period 4 ... Unique records processed: 39555; Last timestamp: 2017-01-31 23:59:00 AEST (1485871140) Period 5 ... Unique records processed: 35598; Last timestamp: 2017-02-28 23:59:00 AEST (1488290340) Period 6 ... Unique records processed: 39555; Last timestamp: 2017-03-31 23:59:00 AEST (1490968740) Period 7 ... Unique records processed: 38284; Last timestamp: 2017-04-30 23:59:00 AEST (1493560740) Period 8 ... Unique records processed: 38284; Last timestamp: 2017-06-30 23:59:00 AEST (1498831140) Finished dry run import 308670 records were processed and 308670 unique records would have been imported.
Note
The eight periods correspond to the eight monthly .cat files used for this
import.
Note
Any periods for which no data could be obtained will be skipped. The lack
of data may be due to a missing WeatherCat monthly .cat file. A short explanatory note to this effect
will be displayed against the period concerned and an entry included in the log.
wee_import --import-config=/var/tmp/wcat.conf --dry-run
This will result in a short preamble with details on the data source, the destination of the imported data and some other details on how the data will be processed. The import will then be performed but no data will be written to the WeeWX database.
The output should be similar to:
Using WeeWX configuration file /home/weewx/weewx.conf
Starting wee_import...
WeatherCat monthly .cat files in the '/var/tmp/wcat' directory will be imported
Using database binding 'wx_binding', which is bound to database 'weewx.sdb'
Destination table 'archive' unit system is '0x01' (US).
Missing derived observations will be calculated.
This is a dry run, imported data will not be saved to archive.
Starting dry run import ...
Records covering multiple periods have been identified for import.
Period 1 ...
Warning: Import field 'T1' is mapped to WeeWX field 'extraTemp1' but the
import field 'T1' could not be found in one or more records.
WeeWX field 'extraTemp1' will be set to 'None' in these records.
Warning: Import field 'T2' is mapped to WeeWX field 'extraTemp2' but the
import field 'T2' could not be found in one or more records.
WeeWX field 'extraTemp2' will be set to 'None' in these records.
Warning: Import field 'T3' is mapped to WeeWX field 'extraTemp3' but the
import field 'T3' could not be found in one or more records.
WeeWX field 'extraTemp3' will be set to 'None' in these records.
Warning: Import field 'H1' is mapped to WeeWX field 'extraHumid1' but the
import field 'H1' could not be found in one or more records.
WeeWX field 'extraHumid1' will be set to 'None' in these records.
Warning: Import field 'H2' is mapped to WeeWX field 'extraHumid2' but the
import field 'H2' could not be found in one or more records.
WeeWX field 'extraHumid2' will be set to 'None' in these records.
Warning: Import field 'Sm1' is mapped to WeeWX field 'soilMoist1' but the
import field 'Sm1' could not be found in one or more records.
WeeWX field 'soilMoist1' will be set to 'None' in these records.
Warning: Import field 'Sm2' is mapped to WeeWX field 'soilMoist2' but the
import field 'Sm2' could not be found in one or more records.
WeeWX field 'soilMoist2' will be set to 'None' in these records.
Warning: Import field 'Sm3' is mapped to WeeWX field 'soilMoist3' but the
import field 'Sm3' could not be found in one or more records.
WeeWX field 'soilMoist3' will be set to 'None' in these records.
Warning: Import field 'Sm4' is mapped to WeeWX field 'soilMoist4' but the
import field 'Sm4' could not be found in one or more records.
WeeWX field 'soilMoist4' will be set to 'None' in these records.
Warning: Import field 'Lw1' is mapped to WeeWX field 'leafWet1' but the
import field 'Lw1' could not be found in one or more records.
WeeWX field 'leafWet1' will be set to 'None' in these records.
Warning: Import field 'Lw2' is mapped to WeeWX field 'leafWet2' but the
import field 'Lw2' could not be found in one or more records.
WeeWX field 'leafWet2' will be set to 'None' in these records.
Warning: Import field 'St1' is mapped to WeeWX field 'soilTemp1' but the
import field 'St1' could not be found in one or more records.
WeeWX field 'soilTemp1' will be set to 'None' in these records.
Warning: Import field 'St2' is mapped to WeeWX field 'soilTemp2' but the
import field 'St2' could not be found in one or more records.
WeeWX field 'soilTemp2' will be set to 'None' in these records.
Warning: Import field 'St3' is mapped to WeeWX field 'soilTemp3' but the
import field 'St3' could not be found in one or more records.
WeeWX field 'soilTemp3' will be set to 'None' in these records.
Warning: Import field 'St4' is mapped to WeeWX field 'soilTemp4' but the
import field 'St4' could not be found in one or more records.
WeeWX field 'soilTemp4' will be set to 'None' in these records.
Warning: Import field 'Lt1' is mapped to WeeWX field 'leafTemp1' but the
import field 'Lt1' could not be found in one or more records.
WeeWX field 'leafTemp1' will be set to 'None' in these records.
Warning: Import field 'Lt2' is mapped to WeeWX field 'leafTemp2' but the
import field 'Lt2' could not be found in one or more records.
WeeWX field 'leafTemp2' will be set to 'None' in these records.
Unique records processed: 39555; Last timestamp: 2016-10-31 23:59:00 AEST (1477922340)
Period 2 ...
Warning: Import field 'T1' is mapped to WeeWX field 'extraTemp1' but the
import field 'T1' could not be found in one or more records.
WeeWX field 'extraTemp1' will be set to 'None' in these records.
Warning: Import field 'T2' is mapped to WeeWX field 'extraTemp2' but the
import field 'T2' could not be found in one or more records.
WeeWX field 'extraTemp2' will be set to 'None' in these records.
Warning: Import field 'T3' is mapped to WeeWX field 'extraTemp3' but the
import field 'T3' could not be found in one or more records.
WeeWX field 'extraTemp3' will be set to 'None' in these records.
Warning: Import field 'H1' is mapped to WeeWX field 'extraHumid1' but the
import field 'H1' could not be found in one or more records.
WeeWX field 'extraHumid1' will be set to 'None' in these records.
Warning: Import field 'H2' is mapped to WeeWX field 'extraHumid2' but the
import field 'H2' could not be found in one or more records.
WeeWX field 'extraHumid2' will be set to 'None' in these records.
Warning: Import field 'Sm1' is mapped to WeeWX field 'soilMoist1' but the
import field 'Sm1' could not be found in one or more records.
WeeWX field 'soilMoist1' will be set to 'None' in these records.
Warning: Import field 'Sm2' is mapped to WeeWX field 'soilMoist2' but the
import field 'Sm2' could not be found in one or more records.
WeeWX field 'soilMoist2' will be set to 'None' in these records.
Warning: Import field 'Sm3' is mapped to WeeWX field 'soilMoist3' but the
import field 'Sm3' could not be found in one or more records.
WeeWX field 'soilMoist3' will be set to 'None' in these records.
Warning: Import field 'Sm4' is mapped to WeeWX field 'soilMoist4' but the
import field 'Sm4' could not be found in one or more records.
WeeWX field 'soilMoist4' will be set to 'None' in these records.
Warning: Import field 'Lw1' is mapped to WeeWX field 'leafWet1' but the
import field 'Lw1' could not be found in one or more records.
WeeWX field 'leafWet1' will be set to 'None' in these records.
Warning: Import field 'Lw2' is mapped to WeeWX field 'leafWet2' but the
import field 'Lw2' could not be found in one or more records.
WeeWX field 'leafWet2' will be set to 'None' in these records.
Warning: Import field 'St1' is mapped to WeeWX field 'soilTemp1' but the
import field 'St1' could not be found in one or more records.
WeeWX field 'soilTemp1' will be set to 'None' in these records.
Warning: Import field 'St2' is mapped to WeeWX field 'soilTemp2' but the
import field 'St2' could not be found in one or more records.
WeeWX field 'soilTemp2' will be set to 'None' in these records.
Warning: Import field 'St3' is mapped to WeeWX field 'soilTemp3' but the
import field 'St3' could not be found in one or more records.
WeeWX field 'soilTemp3' will be set to 'None' in these records.
Warning: Import field 'St4' is mapped to WeeWX field 'soilTemp4' but the
import field 'St4' could not be found in one or more records.
WeeWX field 'soilTemp4' will be set to 'None' in these records.
Warning: Import field 'Lt1' is mapped to WeeWX field 'leafTemp1' but the
import field 'Lt1' could not be found in one or more records.
WeeWX field 'leafTemp1' will be set to 'None' in these records.
Warning: Import field 'Lt2' is mapped to WeeWX field 'leafTemp2' but the
import field 'Lt2' could not be found in one or more records.
WeeWX field 'leafTemp2' will be set to 'None' in these records.
Unique records processed: 38284; Last timestamp: 2016-11-30 23:59:00 AEST (1480514340)
... (identical entries for periods 3 to 7 omitted for conciseness)
Period 8 ...
Warning: Import field 'T1' is mapped to WeeWX field 'extraTemp1' but the
import field 'T1' could not be found in one or more records.
WeeWX field 'extraTemp1' will be set to 'None' in these records.
Warning: Import field 'T2' is mapped to WeeWX field 'extraTemp2' but the
import field 'T2' could not be found in one or more records.
WeeWX field 'extraTemp2' will be set to 'None' in these records.
Warning: Import field 'T3' is mapped to WeeWX field 'extraTemp3' but the
import field 'T3' could not be found in one or more records.
WeeWX field 'extraTemp3' will be set to 'None' in these records.
Warning: Import field 'H1' is mapped to WeeWX field 'extraHumid1' but the
import field 'H1' could not be found in one or more records.
WeeWX field 'extraHumid1' will be set to 'None' in these records.
Warning: Import field 'H2' is mapped to WeeWX field 'extraHumid2' but the
import field 'H2' could not be found in one or more records.
WeeWX field 'extraHumid2' will be set to 'None' in these records.
Warning: Import field 'Sm1' is mapped to WeeWX field 'soilMoist1' but the
import field 'Sm1' could not be found in one or more records.
WeeWX field 'soilMoist1' will be set to 'None' in these records.
Warning: Import field 'Sm2' is mapped to WeeWX field 'soilMoist2' but the
import field 'Sm2' could not be found in one or more records.
WeeWX field 'soilMoist2' will be set to 'None' in these records.
Warning: Import field 'Sm3' is mapped to WeeWX field 'soilMoist3' but the
import field 'Sm3' could not be found in one or more records.
WeeWX field 'soilMoist3' will be set to 'None' in these records.
Warning: Import field 'Sm4' is mapped to WeeWX field 'soilMoist4' but the
import field 'Sm4' could not be found in one or more records.
WeeWX field 'soilMoist4' will be set to 'None' in these records.
Warning: Import field 'Lw1' is mapped to WeeWX field 'leafWet1' but the
import field 'Lw1' could not be found in one or more records.
WeeWX field 'leafWet1' will be set to 'None' in these records.
Warning: Import field 'Lw2' is mapped to WeeWX field 'leafWet2' but the
import field 'Lw2' could not be found in one or more records.
WeeWX field 'leafWet2' will be set to 'None' in these records.
Warning: Import field 'St1' is mapped to WeeWX field 'soilTemp1' but the
import field 'St1' could not be found in one or more records.
WeeWX field 'soilTemp1' will be set to 'None' in these records.
Warning: Import field 'St2' is mapped to WeeWX field 'soilTemp2' but the
import field 'St2' could not be found in one or more records.
WeeWX field 'soilTemp2' will be set to 'None' in these records.
Warning: Import field 'St3' is mapped to WeeWX field 'soilTemp3' but the
import field 'St3' could not be found in one or more records.
WeeWX field 'soilTemp3' will be set to 'None' in these records.
Warning: Import field 'St4' is mapped to WeeWX field 'soilTemp4' but the
import field 'St4' could not be found in one or more records.
WeeWX field 'soilTemp4' will be set to 'None' in these records.
Warning: Import field 'Lt1' is mapped to WeeWX field 'leafTemp1' but the
import field 'Lt1' could not be found in one or more records.
WeeWX field 'leafTemp1' will be set to 'None' in these records.
Warning: Import field 'Lt2' is mapped to WeeWX field 'leafTemp2' but the
import field 'Lt2' could not be found in one or more records.
WeeWX field 'leafTemp2' will be set to 'None' in these records.
Unique records processed: 38284; Last timestamp: 2017-06-30 23:59:00 AEST (1498831140)
Finished dry run import
308670 records were processed and 308670 unique records would have been imported.
In this case warnings are evident for numerous import/WeeWX field pairs that are mapped but for which no data could be found. If the warnings relate to fields that are not included in the import source data the warning may be safely ignored. If the warning relate to fields that the user expects to be in the import source data the issue should be investigated further before the import is completed
wee_import --import-config=/var/tmp/wcat.conf --suppress-warnings
This will result in a preamble similar to that of a dry run. At the end of the preamble there will be a prompt:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... WeatherCat monthly .cat files in the '/var/tmp/wcat' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Starting import ... Records covering multiple periods have been identified for import. Period 1 ... Proceeding will save all imported records in the WeeWX archive. Are you sure you want to proceed (y/n)?
If there is more than one WeatherCat monthly .cat file then wee_import will provide summary information on a per period basis during the import. In addition, if the --date option is used then source data that falls outside the date or date range specified with the --date option is ignored. In such cases the preamble may look similar to:
Using WeeWX configuration file /home/weewx/weewx.conf Starting wee_import... WeatherCat monthly .cat files in the '/var/tmp/wcat' directory will be imported Using database binding 'wx_binding', which is bound to database 'weewx.sdb' Destination table 'archive' unit system is '0x01' (US). Missing derived observations will be calculated. Starting import ... Records covering multiple periods have been identified for import. Period 1 ... Period 1 - no records identified for import. Period 2 ... Period 2 - no records identified for import. Period 3 ... Proceeding will save all imported records in the WeeWX archive. Are you sure you want to proceed (y/n)?
Unique records processed: 2305; Last timestamp: 2016-12-30 00:00:00 AEST (1483020000)
Again if there is more than one WeatherCat monthly .cat file and if the --date option is used then the progress information may instead look similar to:
Period 4 ... Unique records processed: 8908; Last timestamp: 2017-01-31 23:59:00 AEST (1485870900) Period 5 ... Unique records processed: 8029; Last timestamp: 2017-02-28 23:59:00 AEST (1488290100) Period 6 ... Unique records processed: 8744; Last timestamp: 2017-03-31 23:59:00 AEST (1490968500)
Note
Any periods for which no data could be obtained will be skipped. The lack
of data may be due to a missing WeatherCat monthly .cat file. A short explanatory note to this effect
will be displayed against the period concerned and an entry included in the log.
The line commencing with Unique records processed should update as records are imported with progress information on number of records processed, number of unique records imported and the date time of the latest record processed. If the import spans multiple months (ie multiple monthly .cat files) then a new Period line is created for each month.
Once the initial import is complete wee_import will, if requested, calculate any missing derived observations and rebuild the daily summaries. A brief summary should be displayed similar to the following:
Calculating missing derived observations ... Processing record: 77782; Last record: 2017-06-30 00:00:00 AEST (1519826400) Recalculating daily summaries... Records processed: 77000; Last date: 2017-06-28 11:45:00 AEST (1519811100) Finished recalculating daily summaries Finished calculating missing derived observations
When the import is complete a brief summary is displayed similar to the following:
Finished import 308670 records were processed and 308670 unique records imported in 1907.61 seconds. Those records with a timestamp already in the archive will not have been imported. Confirm successful import in the WeeWX log file.
Aug 22 14:38:28 stretch12 weewx[863]: manager: unable to add record 2018-09-04 04:20:00 AEST (1535998800) to database 'weewx.sdb': UNIQUE constraint failed: archive.dateTime
In such cases take note of the timestamp of the record(s) concerned and make a decision about whether to delete the pre-existing record and re-import the record or retain the pre-existing record.
Sometimes bad things happen during an import.
If errors were encountered, or if you suspect that the WeeWX database has been contaminated with incorrect data, here are some things you can try to fix things up.
Warning!
Deleting the database file or dropping the database will result in all
data in the database being lost.