Looking for the latest version? Download weewx-3.0.1.tar.gz (916.1 kB)
Home
Name Modified Size Downloads / Week Status
Totals: 8 Items   4.0 MB 664
development_versions 2014-12-08 1414 weekly downloads
older_versions 2014-12-05 3535 weekly downloads
user_contributions 2014-10-16 77 weekly downloads
README.txt 2014-12-08 48.1 kB 3838 weekly downloads
weewx-3.0.1-1.suse.noarch.rpm 2014-12-08 997.8 kB 66 weekly downloads
weewx-3.0.1-1.rhel.noarch.rpm 2014-12-08 1.2 MB 88 weekly downloads
weewx_3.0.1-1_all.deb 2014-12-08 897.7 kB 324324 weekly downloads
weewx-3.0.1.tar.gz 2014-12-08 916.1 kB 288288 weekly downloads
-------------------- weewx packages -------------------- weewx_3.0.1-1_all.deb for Debian, Ubuntu, Mint weewx-3.0.1-1.rhel.noarch.rpm for Redhat, CentOS, Fedora weewx-3.0.1-1.suse.noarch.rpm for SuSE, OpenSuSE weewx-3.0.1.tar.gz for all operating systems including Linux, BSD, MacOSX this is the best choice if you intend to customize weewx -------------------- weewx change history -------------------- 3.0.1 12/07/14 Fixed bug in setup.py that would forget to insert device-specific options in weewx.conf during new installations. 3.0.0 12/07/14 Big update with lots of changes and lots of new features. The overall goal was to make it easier to write and install extensions. Adding custom databases, units, accumulators and many other little things have been made easier. Skins and skin.conf continue to be 100% backwards compatible (since V1.5!). However, search-list extensions will have to be rewritten. Details in the Upgrading Guide. Previously, configuration options for all possible devices were included in the configuration file, weewx.conf. Now, for new installs, it has been slimmed down to the minimum and, instead, configuration options are added on an "as needed" basis, using a new setup.py option "configure". Your configuration file, weewx.conf should be automatically updated to V3 by the upgrade process, using your previously chosen hardware. But, check it over. Not sure we got everything correct. See the Upgrading Guide. Specific changes follow. Total rewrite of how data gets bound to a database. You now specify a "data binding" to indicate where data should be going, and where it is coming from. The default binding is "wx_binding," the weather binding, so most users will not have to change a thing. Other database bindings can be used in tags. Example: $current($data_binding$alt_binding).outTemp Alternate times can also be specified: $current($timestamp$othertime).outTemp Explicit time differences for trends can now be specified: $trend($time_delta=3600).barometer Introduced a new tag $latest, which uses the last available timestamp in a data binding (which may or may not be the same as the "current" timestamp). Introduced a new tag $hours_ago, which returns the stats for X hours ago. So, the max temperature last hour would be $hours_ago($hours_ago=1).outTemp.max. Introduced a shortcut $hour, which returns the stats for this hour. So, the high temperature for this hour would be $hour.outTemp.max Introduced a new tag $days_ago, which returns the stats for X days ago. So, the max temperature the day before yesterday would be $days_ago($days_ago=2).outTemp.max. Included a shortcut $yesterday: The tag $yesterday.outTemp.max would be yesterday's max temperature. Introduced a new aggregation type ".last", which returns the last value in an aggregation interval. E.g., $week.outTemp.last would return the last temperature seen in the week. Introduced a new aggregation type ".lasttime" which returns the time of the above. Can now differentiate between the max speed seen in the archive records (e.g., $day.windSpeed.max) and the max gust seen ($day.wind.max or $day.windGust.max). Allow other data bindings to be used in images. Made it easier to add new unit types and unit groups. The archive interval can now change within a database without consequences. Total rewrite of how devices are configured. A single utility wee_config_device replaces each of the device-specific configuration utilities. The Customizing Guide was extended with additional examples and option documentation. Removed the no longer needed serviced StdRESTful, obsolete since V2.6 Fixed bug in querying for schemas that prevented older versions of MySQL (V4.X) from working. Improved error handling and retries for ws1, ultimeter, and cc3000 drivers. Fixed missing dew initializations in wmr9x8 driver. Fixed model/_model initialization in wmr9x8 driver. Fixed uninitialized usb interface in wmr200 driver. Fixed wakup/wakeup typo in _getEEPROM_value in vantage driver. Made the ftpupload algorithm a little more robust to corruption of the file that records the last upload time. Added observation type 'snow'. It generally follows the semantics of 'rain'. Fixed possible fatal exception in WS23xx driver. Fixed use of str as variable name in WS23xx driver. Now catches database exceptions raised during commits, converting them to weedb exceptions. Weewx catches these, allowing the program to keep going, even in the face of most database errors. For the fine offset stations, record connection status as rxCheckPercent (either 0 or 100%) and sensor battery status as outTempBatteryStatus (0 indicates ok, 1 indicates low battery). For WS23xx stations, hardware record generation is now enabled and is the default (previously, software record generation was the default). Fixed bug in WS28xx driver the prevented reading of historical records when starting with an empty database. 2.7.0 10/11/14 Added the ability to configure new Vantage sensor types without using the console. This will be useful to Envoy users. Thanks to user Deborah Pickett for this contribution! Allow calibration constants to be set in the Vantage EEPROM. This will particularly be useful to southern hemisphere users who may want to align their ISS to true north (instead of south), then apply a 180 correction. Thanks again to Deborah Pickett! Enabled multiple rsync instances for a single weewx instance. More extensive debug information for rscync users. Added the ability to localize the weewx and server uptime. See the Customizing Guide for details. This will also cause a minor backwards incompatibility. See the Upgrading Guide for details. Added catchup to the WS28xx driver, but still no hardware record generation. Changed lux-to-W/m^2 conversion factor in the fine offset driver. Added rain rate calculation to Ultimeter driver. Changed setTime to retrieve system time directly rather than using a value passed by the engine. This greatly improves the accuracy of StdTimeSync, particularly in network based implementations. Thanks to user Denny Page! Moved clock synchronization options clock_check and max_drift back to section [StdTimeSynch]. Fixed ENDPOINT_IN in the te923 driver. This should provide better compatibility with a wider range of pyusb versions. Now catches MySQL exceptions during commits and rollbacks (as well as queries) and converts them to weedb exceptions. Catch and report configobj errors when reading skin.conf during the generation of reports. Ensure correct location, lat, lon, and altitude modifications in the debian postinst installer script. In the debian installer, default to ttyUSB0 instead of ttyS0 for stations with a serial interface. Added CC3000 to debian installer scripts. Fixed bug that can affect hardware that emits floating point timestamps, where the timestamp is within 1 second of the end of an archive interval. Changed UVBatteryStatus to uvBatteryStatus in the WMR100 driver in order to match the convention used by other drivers. Fixed the shebang for te923, ws23xx, ultimeter, ws1, and cc3000 drivers. 2.6.4 06/16/14 The WMR100 driver now calculates SLP in software. This fixes a problem with the WMRS200 station, which does not allow the user to set altitude. The WMR100 driver was incorrectly tagging rain over the last 24 hours as rain since midnight. This caused a problem with WU and CWOP posts. Fix cosmetic problem in wee_config_fousb pressure calibration. Detect both NP (not present) and OFL (outside factory limits) on ws28xx. Added driver for PeetBros Ultimeter stations. Added driver for ADS WS1 stations. Added driver for RainWise Mark III stations and CC3000 data logger. Added automatic power cycling to the FineOffsetUSB driver. Power cycle the station when a USB lockup is detected. Only works with USB hubs that provide per-port power switching. Fix imagegenerator aggregation to permit data tables with no 'interval' column. Prompt for metric/US units for debian installations. For WS28xx stations, return 0 for battery ok and 1 for battery failure. If a connection to the console has been successfully opened, but then on subsequent connection attempts suffers an I/O error, weewx will now attempt a retry (before it would just exit). 2.6.3 04/10/14 Hardened the WMR100 driver against malformed packets. The plot images can now use UTF-8 characters. Fixed a problem where the Ambient threads could crash if there were no rain database entries. Battery status values txBatteryStatus and consBatteryVoltage now appear in the archive record. The last LOOP value seen is used. CWOP posts are now slightly more robust. Fixed pressure calculation in wee_config_fousb. Prevent failures in imagegenerator when no unicode-capable fonts are installed. Provide explicit pairing feedback using wee_config_ws28xx Count wxengine restarts in logwatch. Cleaned up USB initialization for fousb, ws28xx, and te923 drivers. 2.6.2 02/16/14 Fixed bug that crashes WMR200 driver if outTemp is missing. Fixed bug that can crash RESTful threads if there is missing rain data. Sqlite connections can now explicitly specify a timeout and isolation_level. Server uptime now reported for MacOS Fixed bug that prevented Rapidfire posts from being identified as such. 2.6.1 02/08/14 Fixed bug that crashed main thread if a StdQC value fell out of range. 2.6.0 02/08/14 Changed the RESTful architecture so RESTful services are now first-class weewx services. This should simplify the installation of 3rd party extensions that use these services. Broke up service_list, the very long list of services to be run, into five separate lists. This will allow services to be grouped together, according to when they should be run. Defined a structure for packaging customizations into extensions, and added an installer for those extensions to setup.py. Changed the default time and date labels to use locale dependent formatting. The defaults should now work in most locales, provided you set the environment variable LANG before running weewx. Changed default QC barometric low from 28 to 26. Added inTemp, inHumidity, and rain. Ranges in MinMax QC can now include units. When QC rejects values it now logs the rejection. Introduced a new unit system, METRICWX. Similar to METRIC, it uses mm for rain, mm/hr for rain rate, and m/s for speed. Added an option --string-check and --fix to the utility wee_config_database to fix embedded strings found in the sqlite archive database. Font handles are now cached in order to work around a memory leak in PIL. Now does garbage collection every 3 hours through the main loop. Image margins now scale with image and font sizes. Now works with the pure Python version of Cheetah's NameMapper, albeit very slowly. Fixed bug that prevented weewx from working with Python v2.5. Fixed bug in SummaryByMonth and SummaryByYear that would result in duplicate month/year entries when generating from multiple ByMonth or ByYear templates. Consolidated pressure calculation code in ws23xx, ws28xx, te923, and fousb. Catch USB failures when reading Fine Offset archive interval. Added Vantage types stormRain and windSpeed10 to the list of observation types. Simulator now generates types dewpoint, pressure, radiation, and UV. The forecast extension is once again distributed separately from weewx. Minor cleanup to Standard skin for better out-of-the-box behavior: - default to no radar image instead of pointing every station to Oregon - not every WMR100 is a WMR100N Failure to set an archive interval when using bar plots no longer results in an exception. Change to skin directory before invoking Cheetah on any templates. 2.5.1 12/30/13 Added UV plots to the templates. They will be shown automatically if you have any UV data. Fixed bug when reading cooling_base option. Default to sane behavior if skin does not define Labels. Fixed bug in setting of CheetahGenerator options. Fixed qsf and qpf summary values in forecast module. Fixed handling of empty sky cover fields in WU forecasts. Forecast module now considers the fctcode, condition, and wx fields for precipitation and obstructions to visibility. Added options to forecast module to help diagnose parsing failures and new forecast formats. Added retries when saving forecast to database and when reading from database. Fixes to the Fine Offset driver to eliminate spikes caused by reading from memory before the pointer had been updated (not the same thing as an unstable read). Added driver for LaCrosse 2300 series of weather stations. Added driver for Hideki TE923 series of weather stations. 2.5.0 10/29/13 Introduced a new architecture that makes it easier to define search list extensions. The old architecture should be 100% backwards compatible. Added station registry service. This allows weewx to optionally "phone home" and put your station location on a map. Added a forecast service and reporting options. The forecast service can generate Zambretti weather or XTide tide forecasts, or it can download Weather Underground or US National Weather Service weather forecasts. These data can then be displayed in reports using the Cheetah template engine. The forecast service is disabled by default. Weewx now allows easier localization to non-English speaking locales. In particular, set the environment variable LANG to your locale, and then weewx date and number formatting will follow local conventions. There are also more labeling options in skin.conf. Details in a new section in the Customization Guide. Added aggregate type "minmax" and "maxmin". Thank you user Gary Roderick! New option in [StdArchive] called "loop_hilo". Setting to True will cause both LOOP and archive data to be used for high/low statistics. This is the default. Setting to False causes only archive data to be used. When a template fails, skip only that template, not everything that the generator is processing. Trend calculations no longer need a record at precisely (for example) 3 hours in the past. It can be within a "grace" period. FineOffset driver now uses the 'delay' field instead of the fixed_block 'read_period' for the archive record interval when reading records from console memory. FineOffset driver now support for multiple stations on the same USB. FineOffset driver now reduces logging verbosity when bad magic numbers appear. Log only when the numbers are unrecognized or change. The purpose of the magic numbers is still unknown. WMR100, Vantage, FineOffset, and WS28xx drivers now emit a null wind direction when the wind speed is zero. Same for wind gust. For WMR9x8 stations, wind chill is now retrieved from the console rather than calculated in software. Thank you user Peter Ferencz! For WMR9x8 stations, the first extra temperature sensor (packet code 4) now shows up as extraTemp1 (instead of outTemp). Thanks again to Peter Ferencz. For WMR9x8 stations, packet types 2 and 3 have been separated. Only the latter is used for outside temperature, humidity, dewpoint. The former is used for "extra" sensors. Corrected the calculation for channel numbers >=3. Also, extended the number of battery codes. Thanks to Per Edström for his patience in figuring this out! For WMR200 stations, altitude-corrected pressure is now emitted correctly. ws28xx driver improvements, including: better thread control; better logging for debugging/diagnostics; better timing to reduce dropouts; eliminate writes to disk to reduce wear when used on flash devices. Plus, support for multiple stations on the same USB. Fixed rain units in ws28xx driver. The LOOP value for daily ET on Vantages was too high by a factor of 10. This has been corrected. Fixed a bug that caused values of ET to be miscalculated when using software record generation. Ported to Korora 19 (Fedora 19). Thanks to user zmodemguru! Plots under 16 hours in length, now use 1 hour increments (instead of 3 hours). No longer emits "deprecation" warning when working with some versions of the MySQLdb python driver. Added ability to build platform-specific RPMs, e.g., one for RedHat-based distributions and one for SuSE-based distributions. Fixed the 'stop' and 'restart' options in the SuSE rc script. The weewx logwatch script now recognizes more log entries and errors. 2.4.0 08/03/13 The configuration utility wee_config_vantage now allows you to set DST to 'auto', 'off', or 'on'. It also lets you set either a time zone code, or a time zone offset. The service StdTimeSync now catches startup events and syncs the clock on them. It has now been moved to the beginning of the list "service_list" in weewx.conf. Users may want to do the same with their old configuration file. A new event, END_ARCHIVE_PERIOD has been added, signaling the end of the archive period. The LOOP packets emitted by the driver for the Davis Vantage series now includes the max wind gust and direction seen since the beginning of the current archive period. Changed the null value from zero (which the Davis documentation specifies) to 0x7fff for the VP2 type 'highRadiation'. Archive record packets with date and time equal to zero or 0xff now terminate dumps. The code that picks a filename for "summary by" reports has now been factored out into a separate function (getSummaryByFileName). This allows the logic to be changed by subclassing. Fixed a bug that did not allow plots with aggregations less than 60 minutes across a DST boundary. Fixed bug in the WMR100 driver that prevented UV indexes from being reported. The driver for the LaCrosse WS-28XX weather series continues to evolve and mature. However, you should still consider it experimental. 2.3.3 06/21/13 The option week_start now works. Updated WMR200 driver from Chris Manton. Fixed bug that prevented queries from being run against a MySQL database. 2.3.2 06/16/13 Added support for the temperature-only sensor THWR800. Thanks to user fstuyk! Fixed bug that prevented overriding the FTP directory in section [[FTP]] of the configuration file. Day plots now show 24 hours instead of 27. If you want the old behavior, then change option "time_length" to 97200. Plots shorter than 24 hours are now possible. Thanks to user Andrew Tridgell. If one of the sections SummaryByMonth, SummaryByYear, or ToDate is missing, the report engine no longer crashes. If you live at a high latitude and the sun never sets, the Almanac now does the right thing. Fixed bug that caused the first day in the stats database to be left out of calculations of all-time stats. 2.3.1 04/15/13 Fixed bug that prevented Fine Offset stations from downloading archive records if the archive database had no records in it. rsync should now work with Python 2.5 and 2.6 (not just 2.7) 2.3.0 04/10/13 Davis Vantage stations can now produce station pressures (aka, "absolute pressure"), altimeter pressures, as well as sea-level pressure. These will be put in the archive database. Along the same line, 'altimeter' pressure is now reported to CWOP, rather than the 'barometer' pressure. If altimeter pressure is not available, no pressure is reported. Fixed bug in CWOP upload that put spaces in the upload string if the pressure was under 1000 millibars. A bad record archive type now causes a catch up to be abandoned, rather than program termination. Fixed bug in trends, when showing changes in temperature. NB: this fix will not work with explicit unit conversion. I.e., $trend.outTemp.degree_C will not work. Modified wee_config_vantage and wee_config_fousb so that the configuration file will be guessed if none is specified. Fixed wxformulas.heatindexC to handle arguments of None type. Fixed bug that causes Corrections to be applied twice to archive records if software record generation is used. rsync now allows a port to be specified. Fixed day/night transition bug. Added gradients to the day/night transitions. Numerous fixes to the WMR200 driver. Now has a "watchdog" thread. All of the device drivers have now been put in their own package 'weewx.drivers' to keep them together. Many have also had name changes to make them more consistent: OLD NEW VantagePro.py (Vantage) vantage.py (Vantage) WMR918.py (WMR-918) wmr9x8.py (WMR9x8) wmrx.py (WMR-USB) wmr100.py (WMR100) new (experimental) drivers: wmr200.py (WMR200) ws28xx.py (WS28xx) The interface to the device driver "loader" function has changed slightly. It now takes a second parameter, "engine". Details are in the Upgrading doc. The FineOffsetUSB driver now supports hardware archive record generation. When starting weewx, the FineOffsetUSB driver will now try to 'catch up' - it will read the console memory for any records that are not yet in the database. Added illuminance-to-radiation conversion in FineOffsetUSB driver. Added pressure calibration option to wee_config_fousb and explicit support for pressure calibration in FineOffsetUSB driver. Fixed windchill calculation in FineOffsetUSB driver. Fixed FineOffsetUSB driver to handle cases where the 'delay' is undefined, resulting in a TypeError that caused weewx to stop. The FineOffsetUSB driver now uses 'max_rain_rate' (measured in cm/hr) instead of 'max_sane_rain' (measured in mm) to filter spurious rain sensor readings. This is done in the driver instead of StdQC so that a single parameter can apply to both LOOP and ARCHIVE records. 2.2.1 02/15/13 Added a function call to the Vantage driver that allows the lamp to be turned on and off. Added a corresponding option to wee_config_vantage. Fixed bug where an undefined wind direction caused an exception when using ordinal wind directions. 2.2.0 02/14/13 Weewx can now be installed using Debian (DEB) or Redhat (RPM) packages, as well as with the old 'setup.py' method. Because they install things in different places, you should stick with one method or another. Don't mix and match. Thanks to Matthew Wall for putting this together! Added plot options line_gap_fraction and bar_gap_fraction, which control how gaps in the data are handled by the plots. Also, added more flexible control of plot colors, using a notation such as 0xBBGGRR, #RRGGBB, or the English name, such as 'yellow'. Finally, added day/night bands to the plots. All contributed by Matthew Wall. Thanks again, Matthew! Ordinal wind directions can now be shown, just by adding the tag suffix ".ordinal_compass". For example, $current.windDir.ordinal_compass might show 'SSE' The abbreviations are set in the skin configuration file. Fixed bug that caused rain totals to be misreported to Weather Underground when using a metric database. Generalized the weewx machinery so it can be used for applications other than weather applications. Got rid of option stats_types in weewx.conf and put it in bin/user/schemas.py. See upgrading.html if you have a specialized stats database. The stats database now includes an internal table of participating observation types. This allows it to be easily combined with the archive database, should you choose to do so. The table is automatically created for older stats databases. Added rain rate calculation to FineOffsetUSB driver. Added adaptive polling option to FineOffsetUSB driver. Fixed barometric pressure calculation for FineOffsetUSB driver. Changed the name of the utilities, so they will be easier to find in /usr/bin: weewxd.py -> weewxd runreports.py -> wee_reports config_database.py -> wee_config_database config_vp.py -> wee_config_vantage config_fousb.py -> wee_config_fousb 2.1.1 01/02/13 Fixed bug that shows itself when one of the variables is 'None' when calculating a trend. 2.1.0 01/02/13 Now supports the Oregon Scientific WMR918/968 series, courtesy of user William Page. Thanks, William!! Now supports the Fine Offset series of weather stations, thanks to user Matthew Wall. Thanks, Matthew!! Now includes a Redhat init.d script, contributed by Mark Jenks. Thanks, Mark!! Added rsync report type as an alternative to the existing FTP report. Another thanks to William Page! Fill color for bar charts can now be specified separately from the outline color, resulting in much more attractive charts. Another thanks to Matthew Wall!! Added a tag for trends. The barometer trend can now be returned as $trend.barometer. Similar syntax for other observation types. config_vp.py now returns the console version number if available (older consoles do not offer this). Hardware dewpoint calculations with the WMR100 seem to be unreliable below about 20F, so these are now done in software. Thanks to user Mark Jenks for sleuthing this. 2.0.2 11/23/12 Now allows both the archive and stats data to be held in the same database. Improved chances of weewx.Archive being reused by allowing optional table name to be specified. 2.0.1 11/05/12 Fixed problem with reconfiguring databases to a new unit system. 2.0.0 11/04/12 A big release with lots of changes. The two most important are the support of additional weather hardware, and the support of the MySQL database. All skin configurations are backwardly compatible, but the configuration file, weewx.conf, is not. The install utility setup.py will install a fresh version, which you will then have to edit by hand. If you have written a custom service, see the upgrade guide on how to port your service to the new architecture. Added the ability to generate archive records in software, thus opening the door for supporting weather stations that do not have a logger. Support for the Oregon Scientific WMR100, the cheapest weather station I could find, in order to demonstrate the above! Added a software weather station simulator. Introduced weedb, a database-independent Python wrapper around sqlite3 and MySQLdb, which fixes some of their flaws. Ported everything to use weedb, and thus MySQL (as well as sqlite) Internally, the databases can now use either Metric units, or US Customary. NB: you cannot switch systems in the middle of a database. You have to stick to one or other other. However, the utility config_database.py does have a reconfigure option that allows copying the data to a new database, performing the conversion along the way. See the Customizing Guide. You can now use "mmHg" as a unit of pressure. Added new almanac information, such as first and last quarter moons, and civil twilight. Changed the engine architecture so it is more event driven. It now uses callbacks, making it easier to add new event types. Added utility config_vp.py, for configuring the VantagePro hardware. Added utility config_database.py, for configuring the databases. Made it easier to write custom RESTful protocols. Thanks to user Brad, for the idea and the use case! The stats type 'squarecount' now contains the number of valid wind directions that went into calculating 'xsum' and 'ysum'. It used to be the number of valid wind speeds. Wind direction is now calculated using 'squarecount' (instead of 'count'). Simplified and reduced the memory requirements of the CRC16 calculations. Improved test suites. Lots of little nips and tucks here and there, mostly to reduce the coupling between different modules. In particular, now a service generally gets configured only using its section of weewx.conf. I also worked hard at making sure that cursors, connections, files, and lots of other bits and pieces get properly closed instead of relying on garbage collection. Hopefully, this will reduce the long-term growth of memory usage. 1.14.1 07/06/12 Hardened retry strategy for the WeatherLink IP. If the port fails to open at all, or a socket error occurs, it will thrown an exception (resulting in a retry in 60 seconds). If a socket returns an incomplete result, it will continue to retry until everything has been read. Fixed minor bug that causes the reporting thread to prematurely terminate if an exception is thrown while doing an FTP. 1.14.0 06/18/12 Added smartphone formatted mobile webpage, contributed by user Torbjörn Einarsson. If you are doing a fresh install, then these pages will be generated automatically. If you are doing an upgrade, then see the upgrade guide on how to have these webpages generated. Thanks, Tobbe! Three changes suggested by user Charlie Spirakis: o Changed umask in daemon.py to 0022; o Allow location of process ID file to be specified on the command line of weewx; o Start script allows daemon to be run as a specific user. Thanks, Charlie! Corrected bug in humidity reports to CWOP that shows itself when the humidity is in the single digits. Now includes software in CWOP APRS equipment field. 1.13.2 05/02/12 Now allows CWOP stations with prefix 'EW'. Fixed bug that showed itself in the line color with plots with 3 or more lines. Changed debug message when reaching the end of memory in the VP2 to something slightly less alarming. 1.13.1 03/25/12 Added finer control over the line plots. Can now add optional markers. The marker_type can be 'none' (the default), 'cross', 'box', 'circle', or 'x'. Also, line_type can now either be 'solid' (the default) or 'none' (for scatter plots). Same day I'll add 'dashed', but not now. :-) Conditionally imports sqlite3. If it does not support the "with" statement, then imports pysqlite2 as sqlite3. 1.13.0 03/13/12 The binding to the SQL database to be used now happens much later when running reports. This allows more than one database to be used when running a report. Extra databases can be specified in the option list for a report. I use this to display broadband bandwidth information, which was collected by a separate program. Email me for details on how to do this. Introducing this feature changed the signature of a few functions. See the upgrade guide for details. 1.12.4 02/13/12 User Alf Høgemark found an error in the encoding of solar data for CWOP and sent me a fix. Thanks, Alf! Now always uses "import sqlite3", resulting in using the version of pysqlite that comes with Python. This means the install instructions have been simplified. Now doesn't choke when using the (rare) Python version of NameMapper used by Cheetah. 1.12.3 02/09/12 Added start script for FreeBSD, courtesy of user Fabian Abplanalp. Thanks, Fabian! Added the ability to respond to a "status" query to the Debian startup script. RESTful posts can now recover from more HTTP errors. Station serial port can now recover from a SerialException error (usually caused when there is a process competing for the serial port). Continue to fiddle with the retry logic when reading LOOP data. 1.12.2 01/18/12 Added check for FTP error code '521' to the list of possibilities if a directory already exists. Thanks to user Clyde! More complete information when unable to load a module file. Thanks, Jason! Added a few new unit types to the list of possible target units when using explicit conversion. Thanks, Antonio! Discovered and fixed problem caused by the Davis docs giving the wrong "resend" code (should be decimal 21, not hex 21). Improved robustness of VantagePro configuration utility. Fixed problem where an exception gets thrown when changing VP archive interval. Simplified some of the logic in the VP2 driver. 1.12.1 11/03/11 Now corrects for rain bucket size if it is something other than the standard 0.01 inch bucket. 1.12.0 10/29/11 Added the ability to change bucket type, rain year start, and barometer calibration data in the console using the utility configure.py. Added option "--info", which queries the console and returns information about EEPROM settings. Changed configure.py so it can do hardware-specific configurations, in anticipation of supporting hardware besides the Davis series. Reorganized the documentation. 1.11.0 10/06/11 Added support for the Davis WeatherLinkIP. Thanks, Peter Nock and Travis Pickle! Added support for older Rev A type archive records. Added patch from user Dan Haller that sends UV and radiation data to the WeatherUnderground if available. Thanks, Dan! Added patch from user Marijn Vriens that allows fallback to the version of pysqlite that comes with many versions of Python. Thanks, Marijn! Now does garbage collection after an archive record is obtained and before the main loop is restarted. 1.10.2 04/14/11 Added RA and declination for the Sun and Moon to the Daily Almanac. Equinox and solstice are now displayed in chronological order. Same with new and full moons. Examples alarm.py and lowBattery.py now include more error checks, allow an optional 'subject' line to the sent email, and allow a comma separated list of recipients. 1.10.1 03/30/11 Substitutes US Units if a user does not specify anything (instead of exception KeyError). Almanac uses default temperature and pressure if they are 'None'. Prettied up web page almanac data in the case where pyephem has not been installed. Fixed up malformed CSS script weewx.css. 1.10.0 03/29/11 Added extensive almanac information if the optional package 'pyephem' has been installed Added a weewx "favorite icon" favicon.ico that displays in your browser toolbar. Added a mobile formatted HTML page, courtesy of user Vince Skahan (thanks, Vince!!). Tags can now be ended with a unit type to convert to a new unit. For example, say your pressure group ("group_pressure") has been set to show inHg. The normal tag notation of "$day.barometer.avg" will show something like "30.05 inHg". However, the tag "$day.barometer.avg.mbar" will show "1017.5 mbar". Added special tag "exists" to test whether an observation type exists. Example "$year.foo.exists" will return False if there is no type "foo" in the statistical database. Added special tag "has_data" to test whether an observation type exists and has a non-zero number of data points over the aggregation period. For example, "$year.soilMoist1.has_data" will return "True" if soilMoist1 both exists in the stats database and contains some data (meaning, you have the hardware). Y-axis plot labels (such as "°F") can now be overridden in the plot configuration section of skin.conf by using option "y_label". Added executable module "runreports.py" for running report generation only. Added package "user", which can contain any user extensions. This package will not get overridden in the upgrade process. Added the ability to reconfigure the main database, i.e., add or drop data types. Along the same line, statistical types can also be added or dropped. Email me for details on how to do this. Now makes all of the LOOP and archive data available to services. This includes new keys: LOOP data: 'extraAlarm1' 'extraAlarm2' 'extraAlarm3' 'extraAlarm4' 'extraAlarm5' 'extraAlarm6' 'extraAlarm7' 'extraAlarm8' 'forecastIcon' 'forecastRule' 'insideAlarm' 'outsideAlarm1' 'outsideAlarm2' 'rainAlarm' 'soilLeafAlarm1' 'soilLeafAlarm2' 'soilLeafAlarm3' 'soilLeafAlarm4' 'sunrise' 'sunset' Archive data: 'forecastRule' 'highOutTemp' 'highRadiation' 'highUV' 'lowOutTemp' Started a more formal test suite. There are now tests for the report generators. These are not included in the normal distribution, but can be retrieved from SourceForge via svn. 1.9.3 02/04/11 Now correctly decodes temperatures from LOOP packets as signed shorts (rather than unsigned). Now does a CRC check on LOOP data. Changed VantagePro.accumulateLoop to make it slightly more robust. 1.9.2 11/20/10 Now catches exception of type OverflowError when calculating celsius dewpoint. (Despite the documentation indicating otherwise, math.log() can still throw an OverflowError) Fixed bug that causes crash in VantagePro.accumulateLoop() during fall DST transition in certain situations. VP2 does not store records during the one hour fall DST transition. Improved logic in dealing with this. Changed install so that it backs up the ./bin subdirectory, then overwrites the old one. Also, does not install the ./skins subdirectory at all if one already exists (thus preserving any user customization). 1.9.1 09/09/10 Now catches exceptions of type httplib.BadStatusLine when doing RESTful posts. Added an extra decimal point of precision to dew point reports to the Weather Underground and PWS. 1.9.0 07/04/10 Added a new service, StdQC, that offers a rudimentary data check. Corrected error in rain year total if rain year does not start in January. Moved option max_drift (the max amount of clock drift to tolerate) to section [Station]. Added check for a bad storm start time. Added checks for bad dateTime. Simplified VantagePro module. 1.8.4 06/06/10 Fixed problem that shows itself if weewx starts up at precisely the beginning of an archive interval. Symptom is max recursion depth exceeded. Units for UV in LOOP records corrected. Also, introduced new group for UV, group_uv_index. Thanks to user A. Burriel for this fix! 1.8.3 05/20/10 Problem with configuring archive interval found and fixed by user A. Burriel (thanks, Antonio!) 1.8.2 05/09/10 Added check to skip calibration for a type that doesn't exist in LOOP or archive records. This allows windSpeed and windGust to be calibrated separately. 1.8.1 05/01/10 Ported to Cheetah V2.4.X 1.8.0 04/28/10 Added CWOP support. Storage of LOOP and archive data into the SQL databases is now just another service, StdArchive. Added a calibration service, StdCalibrate, that can correct LOOP and archive data. Average console battery voltage is now calculated from LOOP data, and saved to the archive as 'consBatteryVoltage'. Transmitter battery status is now ORd together from LOOP data, and saved to the archive as 'txBatteryStatus'. Added stack tracebacks for unrecoverable exceptions. Added a wrapper to the serial port in the VantagePro code. When used in a Python "with" statement, it automatically releases the serial port if an exception happens, allowing a more orderly shutdown. Offered some hints in the documentation on how to automount your VP2 when using a USB connection. Corrected error in units. getTargetType() that showed itself with when the console memory was freshly cleared, then tried to graph something immediately. 1.7.0 04/15/10 Big update. Reports now use skins for their "look or feel." Options specific to the presentation layer have been moved out of the weewx configuration file 'weewx.conf' to a skin configuration file, 'skin.conf'. Other options have remained behind. Because the configuration file weewx.conf was split, the installation script setup.py will NOT merge your old configuration file into the new one. You will have to reedit weewx.conf to put in your customizations. FTP is treated as just another report, albeit with an unusual generator. You can have multiple FTP sessions, each to a different server, or uploading to or from a different area. Rewrote the FTP upload package so that it allows more than one FTP session to be active in the same local directory. This version also does fewer hits on the server, so it is significantly faster. The configuration files weewx.conf and skin.conf now expect UTF-8 characters throughout. The encoding for reports generated from templates can be chosen. By default, the day, week, month, and year HTML files are encoded using HTML entities; the NOAA reports encoded using 'strict ascii.' Optionally, reports can be encoded using UTF-8. Revamped the template formatting. No longer use class ModelView. Went to a simpler system built around classes ValueHelper and UnitInfo. Optional formatting was added to all tags in the templates. There are now optional endings: 'string': Use specified string for None value. 'formatted': No label. 'format': Format using specified string format. 'nolabel': Format using specified string format; no label. 'raw': return the underlying data with no string formatting or label. For the index, week, month, and year template files, added conditional to not include ISS extended types (UV, radiation, ET) unless they exist. Added an RSS feed. Added support for PWSweather.com Both WeatherUnderground and PWSweather posts are now retried up to 3 times before giving up. Now offer a section 'Extras' in the skin configuration file for including tags added by the user. As an example, the tag radar_url has been moved into here. Data files used in reports (such as weewx.css) are copied over to the HTML directory on program startup. Included an example of a low-battery alarm. Rearranged distribution directory structure so that it matches the install directory structure. Moved base temperature for heating and cooling degree days into skin.conf. They now also require a unit. Now require unit to be specified for 'altitude'. 1.5.0 03/07/10 Added support for other units besides the U.S. Customary. Plots and HTML reports can be prepared using any arbitrary combination of units. For example, pressure could be in millibars, while everything else is in U.S. Customary. Because the configuration file weewx.conf changed significantly, the installation script setup.py will NOT merge your old configuration file into the new one. You will have to reedit weewx.conf to put in your customizations. Added an exception handler for exception OSError, which is typically thrown when another piece of software attempts to access the same device port. Weewx catches the exception, waits 10 seconds, then starts again from the top. 1.4.0 02/22/10 Changed the architecture of stats.py to one that uses very late binding. The SQL statements are not run until template evaluation. This reduces the amount of memory required (by about 1/2), reduces memory fragmentation, as well as greatly simplifying the code (file stats.py shed over 150 lines of non-test code). Execution time is slightly slower for NOAA file generation, slightly faster for HTML file generation, the same for image generation, although your actual results will depend on your disk speed. Now possible to tell weewx to reread the configuration file without stopping it. Send signal HUP to the process. Added option week_start, for specifying which day a calendar week starts on. Default is 6 (Sunday). Fixed reporting bug when the reporting time falls on a calendar month or year boundary. 1.3.4 02/08/10 Fixed problem when plotting data where all data points are bad (None). 1.3.3 01/10/10 Fixed reporting bug that shows itself if rain year does not start in January. 1.3.2 12/26/09 LOOP data added to stats database. 1.3.1 12/22/09 Added a call to syslog.openlog() that inadvertently got left out when switching to the engine driven architecture. 1.3.0 12/21/09 Moved to a very different architecture to drive weewx. Consists of an engine, that manages a list of 'services.' At key events, each service is given a chance to participate. Services are easy to add, to allow easy customization. An example is offered of an 'alarm' service. Checking the clock of the weather station for drift is now a service, so the option clock_check was moved from the station specific [VantagePro] section to the more general [Station] section. Added an example service 'MyAlarm', which sends out an email should the outside temperature drop below 40 degrees. In a similar manner, all generated files, images, and reports are the product of a report engine, which can run any number of reports. New reports are easily added. Moved the compass rose used in progressive vector plots into the interior of the plot. Install now deletes public_html/#upstream.last, thus forcing all files to be uploaded to the web server at the next opportunity. 1.2.0 11/22/09 Added progressive vector plots for wind data. Improved axis scaling. The automatic axis scaling routine now does a better job for ranges less than 1.0. The user can also hardwire in min and max values, as well as specify a minimum increment, through parameter 'yscale' in section [Images] in the configuration file. Now allows the same SQL type to be used more than once in a plot. This allows, say, instantaneous and average wind speed to be shown in the same plot. Rain year is now parameterized in file templates/year.tmpl (instead of being hardwired in). Now does LOOP caching by default. When doing backfilling to the stats database, configure now creates the stats database if it doesn't already exist. setup.py now more robust to upgrading the FTP and Wunderground sections 1.1.0 11/14/09 Added the ability to cache LOOP data. This can dramatically reduce the number of writes to the stats database, reducing wear on solid-state disk stores. Introduced module weewx.mainloop. Introduced class weewx.mainloop.MainLoop This class offers many opportunities to customize weewx through subclassing, then overriding an appropriate member function. Refactored module weewx.wunderground so it more closely resembles the (better) logic in wunderfixer. setup.py no longer installs a daemon startup script to /etc/init.d. It must now be done by hand. setup.py now uses the 'home' value in setup.cfg to set WEEWX_ROOT in weewx.conf and in the daemon start up scripts Now uses FTP passive mode by default. 1.0.1 11/09/09 Fixed bug that prevented backfilling the stats database after modifying the main archive. 1.0.0 10/26/09 Took the module weewx.factory back out, as it was too complicated and hard to understand. Added support for generating NOAA monthly and yearly reports. Completely rewrote the filegenerator.py module, to allow easy subclassing and specialization. Completely rewrote the stats.py module. All aggregate quantities are now calculated dynamically. Labels for HTML generation are now held separately from labels used for image generation. This allows entities such as '°' to be used for the former. LOOP mode now requests only 200 LOOP records (instead of the old 2000). It then renews the request should it run out. This was to get around an (undocumented) limitation in the VP2 that limits the number of LOOP records that can be requested to something like 220. This was a problem when supporting VP2s that use long archive intervals. Cut down the amount of computing that went on before the processing thread was spawned, thus allowing the main thread to get back into LOOP mode more quickly. Added type 'rainRate' to the types decoded from a Davis archive record. For some reason it was left out. Added retries when doing FTP uploads. It will now attempt the upload several times before giving up. Much more extensive DEBUG analysis. Nipped and tucked here and there, trying to simplify. 0.6.5 10/11/09 Ported to Cheetah V2.2.X. Mostly, this is making sure that all strings that cannot be converted with the 'ascii' codec are converted to Unicode first before feeding to Cheetah. 0.6.4 09/22/09 Fixed an error in the calculation of heat index. 0.6.3 08/25/09 FTP transfers now default to ACTIVE mode, but a configuration file option allows PASSIVE mode. This was necessary to support Microsoft FTP servers. 0.6.2 08/01/09 Exception handling in weewx/ftpdata.py used socket.error but failed to declare it. Added 'import socket' to fix. Added more complete check for unused pages in weewx/VantagePro.py. Now the entire record must be filled with 0xff, not just the time field. This fixes a bug where certain time stamps could look like unused records. 0.6.1 06/22/09 Fixed minor ftp bug. 0.6.0 05/20/09 Changed the file, imaging, ftping functions into objects, so they can be more easily specialized by the user. Introduced a StationData object. Introduced module weewx.factory that produces these things, so the user has a place to inject his/her new types. 0.5.1 05/13/09 1. Weather Underground thread now run as daemon thread, allowing the program to exit even if it is running. 2. WU queue now hold an instance of archive and the time to be published, rather than a record. This allows dailyrain to be published as well. 3. WU date is now given in the format "2009-05-13+12%3A35%3A00" rather than "2009-05-13 12:35:00". Seems to be more reliable. But, maybe I'm imagining things...
Source: README.txt, updated 2014-12-08