Saturday 27 October 2012

My home energy disaggregation system

This post describes my home energy disaggregation system, using tools from AlertMe and PlotWatt. I've cross-posted it from its own page on my website, and although this post probably won't stay up to date, the page on my website should. If you're interested in setting up a similar system, feel free to leave a comment!

In order to monitor the electricity consumption of my home, I use an AlertMe SmartEnergy kit.  This consists of a battery powered SmartMeter reader and a mains powered SmartHub. The SmartMeter reader is a current clamp, which clips onto the electricity input to my home within my circuit breaker box. This clamp calculates the flow of electricity through the wire by measuring the magnetic field surrounding it, and therefore doesn't need to physically break the circuit. The current clamp sends second-by-second readings of my home's power demand to the SmartHub via a ZigBee wireless network. The hub is attached to my router via an Ethernet cable, which allows it to upload my electricity data to AlertMe's cloud storage.

My AlertMe SmartMeter reader.

My PhD has built up my interest in non-intrusive appliance monitoring; software which calculates appliance-level energy feedback using only home-level energy data. Although AlertMe don't offer such a service, this is where PlotWatt, a cloud-based software company, comes in. To make use of PlotWatt's appliance-level analysis, I needed to transfer my data from AlertMe's data cloud to PlotWatt's data cloud. To do so, I set up my Raspberry Pi to periodically download my data from AlertMe and upload it to PlotWatt. I've since open-sourced the project to allow anyone to use or modify my code. This software and PlotWatt's algorithms have allowed me to find out how much money I spend keeping each appliance running using PlotWatt's online dashboard.

My Raspberry Pi.

A breakdown of my household's monthly energy costs is available at However, even enthusiasts like myself don't check this daily. Therefore, I wanted an energy display from which I could pick up this information as I walked past. To create such a display, I set up an old monitor attached to my Raspberry Pi, which displays the dashboard from

My home energy monitoring system.

Wednesday 24 October 2012

Public NIALM Reference Library

Today I decided to make my NIALM reference library public. Over the past few years I've collected about 150 references which I'd like to share with the wider NIALM community. Since I use Mendeley to manage my references, the easiest way to share it was through a public group:

Oliver Parson's NIALM library

This group will be updated as new papers are published, so feel free to join it to receive updates.

Happy reading!

UPDATE: Please feel free to follow the group, which should give you updates when I add references to the library. However, I'll just ignore any requests to join the group, which would give you write access!

Tuesday 16 October 2012

Tracebase - an appliance training data repository

The tracebase repository contains individual appliance data with the intention of creating a database for training appliance recognition algorithms. The repository contains a total of 1883 days of power readings, taken at 1 second intervals, for 158 appliance instances, of 43 different appliance types. Since the aim is to create an appliance database, no aggregate measurements are collected.

The data is introduced in Reinhardt et al. 2012 and is available from the tracebase repository. The files are password protected, but a password can be requested via the download page.

I've also updated my post of Public Data Sets for NIALM.

Sunday 14 October 2012

alertme2plotwatt - Using PlotWatt to disaggregate AlertMe data

Today I want to opensource a project I've been working called alertme2plotwatt, a python library for uploading AlertMe data to PlotWatt. I use an AlertMe system to collect second-by-second electricity data and upload it to the cloud. However, as yet AlertMe doesn't offer any disaggregation capability. Conversely, PlotWatt offers a hardware-agnostic cloud-based data analysis toolkit to disaggregate your energy data. Unfortunately, PlotWatt doesn't yet support AlertMe data out-of-the-box. Luckily, both AlertMe and PlotWatt offer their own APIs to provide data access. This has allowed me to write a script to download second-by-second household aggregate data collected by my AlertMe system and upload it to PlotWatt to be disaggregated into individual appliances.

To use this, you will need:

  1. An AlertMe account (and subscription)
  2. An AlertMe MeterReader attached to your household electricity input
  3. A PlotWatt account (free)
Full details for using the library can be found on the github project page

So far, I've used the library to copy about a year of second-by-second data from my AlertMe account to my PlotWatt account. However, the project is far from perfect, so please feel free to contribute code to increase the reliability, flexibility or clarity of documentation.