I upgraded to an OS WMR100: about as close to a proper weather station as it gets. As well as measuring temperature and humidity like the RMS300, it also has wireless wind and rain gauges, the option for a UV sensor and sufficiently improved range that putting the sensors outdoors is feasible.
Finding a suitable place to put the outdoor parts ((the temperature sensor and wind gauge are designed to be mounted on a (included) pole; the rain gauge is meant to sit close to ground level with screws to make sure it’s level; both should be in open space)) was awkward but generally it all works.
There are a few issues: the signal from the wind gauge can be quite flaky ((the console is well inside range though there are walls which will affect that)) and the cover on the temperature sensor is plastic so quite poor at stopping the sun getting through.
Ideally, the two would be in separate places so that one could be in clear space and the other shaded.
Like before, I use the WMR100 USB client to get data from the console and dump it in a text file then parse it but store data in PostgreSQL and use matplotlib to draw graphs rather than rrdtool for both.
The combination has some advantages ((rrdtool doesn’t really work for rain data; mpl is a lot more customizable although the documentation sucks)). It’s a huge dataset to deal with ((a month’s worth of wind speed/direction data is 192k data points if every measurement is received, there are roughly 4 million lines in data.log right now and it grows at a rate of 19 thousand lines a day)) so a lot of work had to be done to get processing fast enough to be usable.
Lots of time was spent with the Python profiler and PG query analyzer, adding table indexes and looking for slow code.
Data also goes to Weather Underground – they do a load of analysis and graph drawing that I haven’t get around to.