/nilmtk

Non-Intrusive Load Monitoring Toolkit (nilmtk)

Primary LanguagePythonApache License 2.0Apache-2.0

NILMTK: Non-Intrusive Load Monitoring Toolkit

Non-Intrusive Load Monitoring (NILM) is the process of estimating the energy consumed by individual appliances given just a whole-house power meter reading. In other words, it produces an (estimated) itemised energy bill from just a single, whole-house power meter.

NILM is sometimes called:

  • "non-intrusive appliance load monitoring (NALM or NIALM)"
  • "[electriciy | energy | smart meter] disaggregation"

Below is an illustration (produced using nilmtk) of what NILM, in general, can do.

Drawing

History
  • April 2014: v0.1 released
  • June 2014: NILMTK presented at ACM e-Energy
  • July 2014: v0.2 released
  • Nov 2014: NILMTK wins best demo award at ACM BuildSys
Documentation

http://nilmtk.github.io/nilmtk/

Installation guide

http://nilmtk.github.io/nilmtk/master/install.html

Publications
  • Batra, N., Kelly, J., Parson, O., Dutta, H., Knottenbelt, W., Rogers, A., Singh, A., Srivastava, M. (2014). NILMTK: An Open Source Toolkit for Non-intrusive Load Monitoring. In Fifth International Conference on Future Energy Systems (ACM e-Energy). Cambridge, UK. arXiv:1404.3878 DOI:10.1145/2602044.2602051

Bibtex:

@inproceedings{NILMTK,
   title         = {NILMTK: An Open Source Toolkit for
                    Non-intrusive Load Monitoring},
   year          = {2014},
   author        = {Batra, Nipun and Kelly, Jack and Parson, Oliver and
                    Dutta, Haimonti and Knottenbelt, William and
                    Rogers, Alex and Singh, Amarjeet and Srivastava, Mani},
   booktitle     = {Fifth International Conference on Future Energy
                    Systems (ACM e-Energy)},
   address       = {Cambridge, UK},
   archivePrefix = {arXiv},
   arxivId       = {1404.3878},
   doi           = {10.1145/2602044.2602051},
   eprint        = {1404.3878}
}
  • Kelly, J., Batra, N., Parson, O., Dutta, H., Knottenbelt, W., Rogers, A., Singh, A., Srivastava, M. (2014). NILMTK v0.2: A Non-intrusive Load Monitoring Toolkit for Large Scale Data Sets. In The first ACM Workshop On Embedded Systems For Energy-Efficient Buildings at BuildSys 2014. Memphis, USA. DOI:10.1145/2674061.2675024 arXiv:1409.5908

Bibtex:

@Inproceedings{kelly2014NILMTKv02,
  Title      = {NILMTK v0.2: A Non-intrusive Load Monitoring
                Toolkit for Large Scale Data Sets},
  Author     = {Kelly, Jack and Batra, Nipun and Parson, Oliver and
                Dutta, Haimonti and Knottenbelt, William and
                Rogers, Alex and Singh, Amarjeet and Srivastava, Mani},
  Booktitle  = {The first ACM Workshop On Embedded Systems For
                Energy-Efficient Buildings at BuildSys 2014},
  Year       = {2014},
  Doi        = {10.1145/2674061.2675024},
  Eprint     = {1409.5908},
  Eprinttype = {arXiv},
  Address    = {Memphis, USA}
}

N.B. NILMTK has evolved a lot since these papers were published! Please use the online docs as a guide to the current API.

Keeping up to date with NILMTK
Current state of the project

The project is in its early stages.

Please note that NILMTK is currently a research tool. It is not yet ready for use by end-users, although we certainly hope that NILMTK will be capable of doing 'plug and play' disaggregation in the future.

Please see the docs for more info.

Submitting a bug report

Please use our github issue queue to submit bug reports, rather than emailing them, which will allow any of us to respond to your issue. If your bug concerns one of NILMTK's dependencies then please contact the relevant project.

Before opening an issue:

  1. Search the issue queue in case a duplicate already exists
  2. Pull the latest changes from the repository master branch to see if the error goes away

If not, please open a new issue, ensuring:

  1. The title summarises the issue
  2. The issue is described in prose
  3. A snippet of code is included which will allow us to recreate the bug
  4. A copy-paste of the stack produced error
  5. Include a copy-paste of the output from nilmtk.utils.show_versions()
Test coverage

Build Status

Coverage Status

Code Health