Home Monitoring

Over the past few months I’ve been slowly stocking up on all the equipment needed to properly get back into electronics. As I was gathering things together I discovered Arudinos. These are an easy entry into microcontrollers, much simpler in my opinion to PICs, and cheaper than most other developers kits. The fact that they’re open source and open hardware just seals the case. The standard Arudinos are rather nice to work with, but since messing with them on a few mini projects to teach myself about them, I came across a guy who was selling his own custom design, utilising the arduino bootloader and interface, but in a much smaller form factor and inbuilt wireless communications.

These JeeNodes are about the size of a pendrive, and have an inbuilt RF12B wireless module. Along with the nice hardware design, there are also some easy to use libraries, and a great website to accompany them, with lots of nice tutorials, information, and general geekiness.

Home Automation

So, where does home monitoring come into this? One of the addon boards that Jeelabs sell are little room monitoring nodes that detect temperature, humidity, and light level. Add a PIR and you’ve got a motion sensor too. The guy behind the JeeNodes, Jean-Claude Wippler, has done some great work on power consumption meaning that these room nodes can run off a single AA battery for nearly a year. There are about a dozen or so of these nodes now spread across my house, logging into a database, and I’ve done some basic graphs to display the data.

Home Automation

Now I’d also noticed another project using arduinos to monitor electric consumption that was also based on JeeNodes, and reporting back to a central server to log into a database. This got me thinking, could I combine these, and maybe more. The beauty of open source is the fact you can tweak and edit to your hearts content. The fact that both these projects used JeeNodes, and more importantly, the RF12B library from JeeLabs, means that I only need one receiving station and a few small edits to the nodes.

To the transmissions I added a node type to the beginning of the data. This defined whether the node was a room node, power node, or any other future node types I may define. Most of the rest of the code was left untouched, except to assign a node number to each node. That was the easy bit.

Next I needed a receiving station, and some way to get the data it received into a database. For this I once again turned to the JeeNode. Handily, JeeLabs also sell a nice case for the JeeNode, along with a Ethernet add on. This gives me a very small self contained module that simply needs power, and an ethernet connection. Both the energy monitor project, and the room node project had their own code for a base station, and for getting the data into the database. In the best traditions of open source, I have stolen from both these projects and combined my favourite ideas out of both.

The houseNode sits and listens for any broadcasts from any nodes. It knows about the different types of nodes, and the data structure to be expected for those nodes. When a data packet is received then the node type is stripped out, and the rest of the data put into a structure definition depending on the type. Then a JSON structure is constructed, and sent via HTTP POST to a web server. No acknowledgements of data being received are currently sent, but with future expansions that I have in mind, this will be a requirement.

Home Automation Home Automation

The web server will receive the POST command, and basically dump this information into a database. From this database, a front end can draw graphs and report on anything you want. The front end is very much still in construction, but can be viewed at http://home.22balmoralroad.net/

Future developments I am considering are a thermostat node, to control our central heating, and RFID entry/exit nodes to log in and out of the house. The RF12B modules have a limit of 32 addresses, two of which are reserved. However, 30 nodes should be enough for most of my ideas! It does have the other benefits of very low power, very simple, and the JeeLabs library even has encryption built in. Below are the Arduino sketches for each of the nodes.



Blog writing

OK, I admit it, I’m useless at writing on here. So, now I’ve admitted it, I’m going to try and do something about it. Baby steps at first, but I’m going to attempt to do at least one post or page a week. I’ve plenty of projects going on, and always have an opinion on things, so finding subjects shouldn’t be hard.

Just a few of the things I’ve got on the go at the moment are:

Quad copter – I’m building my first quad copter, and hopefully my next post will be about the first successful flight, and maybe even a video, probably of me crashing it! Just waiting for some replacement parts from eBay. After the first one is built, I’ll be looking at building a bigger and better one, hopefully with a camera on it.

House monitoring – this will be another post, or collection of posts, in my never ending task of proving just how much of a geek I am. I’m aiming to be able to not only monitor the house (and thus make it more efficient),  but also control it remotely. The initial stages can be found at home.22balmoralroad.net. Very much a work in progress.

Electronics – Going pretty much hand in hand with the above two, is my renewed interest in electronics. At the moment I’m very much in the stage of getting the tools together that I need, and learning the cad type software for PCB design. I should have some info to write up on my work area soon.

3d printer – last, but by no means least, I’m awaiting the delivery of my Huxley reprap printer. Have you realised I’m a geek yet?

As well as all this, I’ll no doubt have a rant about various things, including a bit of a write up about my new Nexus Galaxy, when it finally arrives.

Oh, and I’m writing this using the WordPress app on Xoom, which seems quite a nice simple app, and lets me write things whilst I’m in bed without my laptop, because lets face it, everyone thinks best when they’re trying to sleep!

That’s all for now, lets see if I keep my promise!