weewx is a free, open source, software program, written in Python, which interacts with your weather station to produce graphs, reports, and HTML pages. It can optionally publish to weather sites or web servers. It uses modern software concepts, making it simple, robust, and easy to extend. It includes extensive documentation.
weewx runs under most versions of Linux, as well as Mac OS X and Solaris. Many users are running on the Raspberry Pi. The images on this page and throughout this web site are from sample stations running weewx.
Thousands of stations throughout the world run weewx, many of whom have opted-in to be shown on our station map.
- Support for many popular weather stations;
- Uploads to popular weather sites including WeatherUnderground, PWSweather.com, CWOP, WOW, and AWEKAS and others;
- Uploads to your website using FTP or rsync;
- Extensive celestial almanac;
- Ability to create or modify skins (the look and feel of your weather site);
- Support for localization;
- Simple, but extensible templating system;
- Native support for US or Metric unit systems;
- Support for sqlite or MySQL databases;
- Calibration corrections;
- Filtering of anomalous values;
- An easy to understand, simple, extensible micro-kernel architecture;
- Ability to extend weewx with new services and reports.
Last, but definitely not least,
- A fun, supportive Users' Group!
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 is an efficient system that can run on underpowered boxes. In exchange, it is huge (45,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 would 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 mores choices for third party libraries.
Weewx is about 8,500 lines of code (plus 2,500 for the experimental driver for the LaCrosse WS28xx series, which was machine translated), with another 6,200 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.
Right now, it is Unix only. I have not tried porting to Microsoft Windows, but given the portability of Python it is likely to be a large, but not mammoth, project.