About weewx
weewx is software program, written in Python, which interacts with your weather station to produce graphs, reports, and HTML pages. It can optionally publish to the WeatherUnderground, PWSweather.com, or CWOP. It uses modern software concepts, making it simple, robust, and easy to extend. For an example station see Hood River West.
weewx runs under Linux (Ubuntu and SuSE) as well as Mac OS X. It currently supports the Davis VantagePro and VantageVue weather stations, using the serial, USB, or WeatherLinkIP interfaces.
Key features:
- An easy to understand, simple, extensible micro-kernel architecture;
- Uploads to popular weather sites, such as Weather Underground and CWOP;
- Uploads to your website using FTP;
- Support for multiple skins;
- Simple, but extensible templating system;
- Support for multiple unit systems;
- Calibration corrections;
- Ability to extend weewx with new services and reports.
News
- 10/29/11. Version 1.12.0 released. Allows more hardware configuration options to be set in the Davis EEPROM.
- 10/06/11. Version 1.11.0 released. Offers support for the Davis WeatherLinkIP. Posts UV and radiation data to the WeatherUnderground (if available).
- 3/29/11. Version 1.10.0 released. Offers extensive almanac information (such as azimuth, elevation of various planetary bodies). Includes mobile formatted page (thanks, Vince!). Tags can now override unit types. Users can reconfigure the main database, adding and dropping data types. Users can also add custom data types.
- 7/17/10. User Harry Felder has ported weewx to the Mac OS X operating system. No source code changes, but he has provided a ZIP file that includes a persistent daemon that does the start up and shut down of weewx, including after I/O errors. See the Users' Group file section.
- 7/04/10. Version 1.9.0 released. Offers a rudimentary quality control: observation values are checked to make sure they lie within a specified range.
- 4/28/10. Version 1.8.0 released. Now offers correction expressions for applying calibration corrections to your instrument. Added CWOP support. Now saves console battery voltage and transmit battery state to the archive.
- 4/15/10. Version 1.7.0 released. This is a big release with many new features, including support for skins. A skin is a collection of the templates, CSS style sheets, GIFs, and other items necessary to run a report. This makes it possible to run multiple reports against the same skin and put the results in different subdirectories. For example, US and Metric versions of a report could be produced. Many other new features including RSS feeds, support for PWSWeather, support for UTF-8 encoding, many new formatting options, etc. See the change log.
- 3/7/10. Version 1.5.0 released. This new version supports metric units in the presentation layer. It is possible to mix and match which units are used for which variables. For example, US Customary could be used for all variables except pressure, which could use millibars. Other combinations are possible.
- 2/22/10. Version 1.4.0 released. Changed to a late binding architecture for running statistical summaries. Now the SQL statements are not run until template evaluation. This reduced the memory requirements by one half, made execution slightly faster (at least on my server), and simplified the statistics code by 150 lines. Added the feature of being able to reread the configuration file without stopping the process.
- 12/22/09. Version 1.3.0 released. The internal architecture of weewx was changed. It now consists of an engine that loads and manages services. New services can easily be created. This makes weewx much easier to customize and extend for specialized applications. Posting on the Weather Underground is now just another service. Includes a sample new "Alarm" service, where an email is sent if an arbitrary expression evaluates true. New document on customizing weewx.
- 11/27/09 Ported to the SheevaPlug. Mostly, this is just like any other Ubuntu install. Most of the effort was in getting the Plug ready. Here are my install notes.
- 11/20/09 Version 1.2.0 released. Biggest new features are that it offers progressive vector plots for wind data and improved plot scaling.
Restrictions
Because weewx is still young, it has some restrictions. Among them:
- Unix only. I haven't tried porting to Microsoft Windows, but given the portability of Python it is likely to be a large, but not mammoth, project.
- The Davis VantagePro2 weather station only. Adding the Davis VantagePro (the predecessor to the VantagePro2) would be straightforward (it differs only slightly in some formatting details), but I do not have access to one for testing purposes. Davis says that their new Davis Vantage Vue uses the same download protocol as the VP2 so, in theory, it should also work, although you know what they say: "The difference between theory and practice is bigger in practice than in theory."
History
I wrote weewx over the winter of 2008-2009 for two reasons: it was a wet and miserable winter here in Oregon with not much else to do, so there was no good reason not to, and because I wanted a simple, easy-to-understand server to run my Davis VantagePro2 weather station on a Linux box. I had been using wview, which is a high-performance and feature rich system authored by Mark Teel with lots of users. Written in C, it's an efficient system that can run on very underpowered boxes. In exchange, it's huge (nearly 50,000 lines of code), tightly integrated in with its companion library, radlib (another 14,000+ lines), and very complex, making it difficult to understand and reliably customize. I wanted something more modern and much, much simpler.
Having made a career in C++ and Java, I was also interested in some more modern languages, so I thought I'd try either Python or Ruby (although, truth be told, the roots of Python are nearly as old as C++!). I ended up picking Python because its libraries are more mature and there are many more choices for third party libraries.
Weewx weighs in at well under 6,000 lines of code (many of them docstrings). It also has another 3,500 comment lines. Because it is pure Python, it requires no makefiles, no builds, no special installs. It offers very powerful configuration and templating options, as well as an internally extensible engine, making it easy to customize. Its internal modular design and use of modern exception handling make it very robust and difficult to crash. It is also architecturally very simple and easy to understand. However, to be fair, at this point it supports only the Davis VantagePro family of weather station.
See the Users' Manual for more details.
weewx on SourceForge
Weewx is a SourceForge project. A Subversion repository is available, should you wish to try the very latest version. To get a working copy of the current main development trunk:
svn co https://weewx.svn.sourceforge.net/svnroot/weewx/trunk
Rather than clutter the main trunk, work on major releases is usually done in an SVN branch off of:
weewx.svn.sourceforge.net/svnroot/weewx/branches
Users Group
There is Users' Group on Google: http://groups.google.com/group/weewx-user