Skip to content

BenGeek88/nilmtk

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Coverage Status

Code Health

v0.2 Released!

v0.2 is a complete re-write. Please see the docs for details. The old v0.1 code is still available in the v0.1 branch and the old docs are in v0.1.1.

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 illustration1 of what NILM, in general, can do.

Drawing

NILMTK Documentation

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

Academic paper on NILMTK

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}
}

Please note that the paper was submitted back in Jan 2014 and the code has evolved a lot since then! Please do not use the paper as a guide to the current API. Instead please use the online docs.

Keeping up to date with NILMTK

Please sign up to the NILMTK-Announce mailing list to be kept up to speed on NILMTK. It will be a fairly low-traffic mailing list. We'll just announce new versions, new docs etc.

NILMTK is also on Twitter.

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.

Installing on Ubuntu like Linux variants (debian based)

NB: The following procedure is for Ubuntu like Linux variants (debian based). Please adapt accordingly for your OS. We would welcome installation instructions for other OS as well. We would recommend using Anaconda, which bundles togther most of the required packages. After installing Anaconda, please do the following:

  • Updating anaconda
conda update --yes conda
  • Installing HDF5 libaries and python-dev
sudo apt-get install libhdf5-serial-dev python-dev
  • Installing git client
sudo apt-get install git
  • Installing pip and other dependencies which might be missing from Anaconda
conda install --yes pip numpy scipy six scikit-learn pandas numexpr pytables dateutil matplotlib networkx
git clone https://github.com/nilmtk/nilm_metadata/
cd nilm_metadata
python setup.py develop
cd ..
  • Installing postgresql support (currently needed for WikiEnergy converter)
sudo apt-get build-dep python-psycopg2
  • Misc. pip installs
pip install psycopg2 nose sh coveralls coverage
  • Finally! Install nilmtk
git clone https://github.com/nilmtk/nilmtk.git
cd nilmtk
python setup.py develop
cd..
  • Run tests
cd nilmtk
nosetests
Installing on Windows
  • Install Anaconda, which bundles togther most of the required packages.

  • Install git client

  • Installing pip and other dependencies which might be missing from Anaconda

$ conda install --yes pip numpy scipy six scikit-learn pandas numexpr pytables dateutil matplotlib networkx
$ git clone https://github.com/nilmtk/nilm_metadata/
$ cd nilm_metadata
$ python setup.py develop
$ cd ..
  • Misc. pip installs
$ pip install nose pbs coveralls coverage
  • Finally! Install nilmtk from git bash
$ git clone https://github.com/nilmtk/nilmtk.git
$ cd nilmtk
$ python setup.py develop
$ cd..
  • Run tests
$ cd nilmtk
$ nosetests
Notes
  1. The image is from the following paper and since the main author is contributing to nilmtk, so no permission issues. The reference is: Nipun Batra, Haimonti Dutta, Amarjeet Singh, “INDiC: Improved Non-Intrusive load monitoring using load Division and Calibration”, to appear at the 12th International Conference on Machine Learning and Applications (ICMLA’13) will be held in Miami, Florida, USA, December 4 – December 7, 2013 Preprint. IPython notebook

About

Non-Intrusive Load Monitoring Toolkit (nilmtk)

Resources

License

Stars

Watchers

Forks

Packages

No packages published