This is a fun "geek" project and this page describes how it works. There are several components to it:-
This is the simplest piece. It was an eBay purchase. It contains a temperature sensor and a relative humidity sensor and a 433MHz radio-transmitter. Periodically, it wakes up and transmits its readings to be picked up by the indoor unit.
This is a digital barometric pressure sensor. It is the digital equivalent of the old barometer that you might have had hanging in your hall in years gone by. Its far less stylish, but it is much more accurate and an awful lot smaller (about 3cm2) !
Actually, the particular pressure sensor that I'm using here - a Bosch BMP085 - is now obsolete: it has been superceded by the BMP180. However, I had a BMP085 in my parts-bin so that's what found its way into this project.
This receives the signal from the outdoor unit described above. It was another eBay purchase (cost almost nothing). There is nothing fancy about this radio: all of the "cleverness" is in the Arduino code which decodes the signal from this radio and turns it back into a data stream. I can't claim any credit for this: the heavy lifting was done by Luc Small.
The Arduino Nano does a few jobs:-
It is really acting as a bridge between the server and the sensors. When the server needs to know what the current weather readings are, it sends the command "weather" to the Arduino over a serial connection, and the Arduino responds with four values: the current temperature, relative humidity, atmospheric pressure and indoor temperature (which isn't used). You can see it working here:-
This is a small PC running Linux and the Cacti graphing software. It is really intended for monitoring servers and networks, but it is relatively straightforward to get any kind of numerical data into Cacti using a custom Data Input Method, and that's what I've done here. When Cacti decides it needs to update its database, it runs a Python script which connects to the Arduino, sends the "weather" command mentioned above and harvests the returned data. Incidentally, a Raspberry Pi would be ideal for this. It might even be possible to dispense with the Arduino: the Raspberry Pi can talk I
The Cacti server sits under my desk and isn't accessible to the outside world. To make the data publicly accessible, the Cacti database is periodically copied to a public webserver where a few more Python scripts turn it into pretty graphs.
The public server itself is also kind of interesting: it is provided by a company called Scaleway. There are any number of suppliers of virtual servers out there now (Amazon EC2 is probably the most well-known, but there are many others), but what makes Scaleway different is their C1 server: rather than being a virtualised server, you get a real four-coure ARMv7 processor all to yourself. They do this by making their own boards populated with as many ARM processors as they could squeeze on. Performance appears to be in the same ballpark as the new Raspberry Pi 3 (probably faster).
At the moment, it lives on a breadboard. This is what it looks like:-
The black wire heading off into the top-left corner is the connection to the Linux server and the white wire heading off the top of the picture is the radio antenna (cut to a suitable length for 433MHz radio reception).