WiFi Enabled Whole House Power Meter

Davide Gomba — January 10th, 2011

The Open Hardware web community has made plenty of examples about power monitoring and consumption knowledge: from ladyada’s tweet-a-watt to Jarv’s Home power Monitoring. [Greg] shares code & circuits on his own power monitoring system based on Wifi Communication.

First things first – this project is a blatant and obvious rip-off of John Jarvis’ power monitoring project! A few minor details have changed but I have to give him credit for a great project idea. I was intrigued by John’s power meter and it gave me an excuse to buy and try an Arduino – a handy and fun little embedded project platform! John’s power meter uses the ethernet shield and some CGI scripts, etc., to talk with his server – I went with AsyncLabs WiShield to put my power meter onto the network – my backend to get the data to the server is also a bit different (but of course).

The basic idea of the project is that an Arduino Duemilanove is continuously reading the analog pins that a couple TED Current Tranducers are connected to (one per phase). The Arduino does a little smoothing/averaging of the data and waits for an IP connection to send that data out on. Another machine has a Win32 service running on it and every minute it queries the power meter for its current data; the data that is received is stuffed into a MySQL data base. When a web request comes in to view the data a few pre-canned charts are generated real time and returned to the web user’s browser.

Great stuff. As one of apparently many amateurs working on this, I did a not too dissimilar implementation, with the following differences:
1) I used the ethernet shield instead of WiFi
2) I used the recent time utility library to have the Arduino connect to an NTP server to set it’s clock correctly and keep itself in synch
3) I collect data once per second, and then do a rolling archive of the last x seconds, the last y minutes and the last y hours of data in the Arduino RAM in case something happens to the client pulling the data, and implement a function to dump both historical and real time data to the client
4) I implemented delta pulse code modulation to compress the storage requirement in RAM on the Arduino

Like others that have done similar projects, I have a client program that polls the Arduino and logs the data in a database as well as doing graphing. Since I had a goal of learning Cocoa, as well, I wrote that client for the Mac, using an SQLLite Data Store under a CoreData framework, and implemented historical and realtime graphs as well.

And since I have a big Photovoltaic array on my roof, I capture data on both power generated and consumed on separate channels

If there’s any interest out there, I’ll try to get things in a state where they can be shared.

You can get that kind of information from jarv’s site.
It’s not out-of-the-box, but Asynclab provides several example sketches, so once you set up everything locally it wouldn’t be difficoult to make it wireless.