Introducing NILMTK: an open source toolkit for non-intrusive load monitoring

Today, Nipun Batra, Jack Kelly and Oliver Parson are really pleased to announce the release of NILMTK: an open source toolkit for non-intrusive load monitoring. The toolkit will allow researchers to easily develop algorithms which disaggregate a household’s total electricity consumption into individual appliances.

Specifically, the toolkit includes:

Wiki and online community for electricity disaggregation researchers

If you're a researcher working on electricity disaggregation (aka NALM / NILM / NIALM) then would you find a wiki and/or online community useful?

Open repository for appliance power signatures: computer science group project proposal

Here's another draft proposal for a computer science group project that I'm thinking of submitting...


As energy costs increase, there is increasing pressure to use energy as efficiently as possible. The first step towards reducing energy consumption is often to measure your existing consumption. There is good evidence that people are best able to manage their energy consumption if they are given an itemised energy bill describing appliance-by-appliance energy consumption information (e.g. "your fridge cost you £50 this month and your TV cost you £20").

Automatically estimating an itemised energy bill by "disaggregating" a whole-house smart meter signal is an active area of research. One approach to this problem requires that the disaggregation system be trained on existing appliance "signatures" (recordings of the power consumption of an individual appliance). A web service which allows for appliance signatures to be programmatically retrieved and submitted would be very useful both to enable automatic disaggregation systems and also to encourage research into disaggregation.

The Challenge

The aim of this project would be to build a web application to allow appliance signatures to be submitted, categorised, analysed and retrieved.

Which software license for disaggregation code?

I have finally started writing my smart meter disaggregation code! I'll keep the code private until we publish a paper on our disaggregation system, and then I'll open up the repository on github.

I spent a while worrying about which software license to use. I've just finished reading "Free as in Freedom: Richard Stallman's Crusade for Free Software" so I was very tempted to use GPL. The GPL forces people who modify your code to release their modifications in the hopes that everyone can benefit from every improvement. This has worked very well for projects like the Linux kernel; but there does seem to be good evidence that some software companies and developers are "allergic" to the GPL because it limits their freedom to modify the code, hence some companies would rather re-write GPL'd code or go with an alternative project.

One of my main motivations for doing a PhD on smart meter disaggregation is the rather idealistic hope that my work might, in some very small way, help people to reduce their energy consumption. As such, the priority must be to allow as many people as possible to use any disaggregation software I write. So I've gone for a very simple and permissive license: the MIT license.

(Of course, I rather suspect that my code won't be used much, so all this worrying about licenses might be somewhat premature ... but it's worth getting it right from the start).

I considered a number of different names for my Python disaggregation code: nilmpy, pynilm, nilmtk, disaggpy. I went with "slicedpy" because it makes me smile ;) (the idea being that smart meter disaggregation is a little like taking a pie (representing your whole-home energy consumption) and slicing it into its component pieces (each representing the energy consumed by an individual appliance); hence the name "SlicedPy". It's spelt "py" not "pie" because the code is mostly written in Python).

Update 1/8/2013

@OpenTRV suggested that I use the Apache v2.0 software license because it has some patent protection. It won't protect against patent trolls but it seems better than no patent protection. I am now using the Apache v2.0 license.

Useful links

UK Patents, Copyright and disaggregation

During my PhD one key aim is to design, implement and validate a software system which can disaggregate a smart meter signal. Disaggregation is definitely something which has commercial potential. Several people who have told me: "make sure you protect your IP".

I am rather sceptical of the worth of patents in general and software patents in particular but I also appreciate that I don't know much about IP. To try to find out more, I just attended a lecture on "Intellectual Property and its Importance to Researchers". In particular, I want to figure out:

  • Is it desirable to protect a disaggregation system?
  • Is it possible to protect a disaggregation system?

Let's take these questions in reverse order:

UK-based disaggregation researchers

Are you based in the UK and working on some aspect of smart meter disaggregation (Non-Intrusive Load Monitoring / NILM / NIALM)? If so, please get in touch (either leave a comment at the bottom of this blog post or contact me directly). I was speaking to Oli Parsons and he came up with the great idea that we should have a UK disaggregation meetup!

Subscribe to RSS - disaggregation