Neural Network & Machine Learning: Nonintrusive Load Monitoring & Energy Disaggregation

I wanted to share a proof of concept energy disaggregation appliance classifier we built using the EmonPi. It uses a simple neural network to classify what appliance is in use. While it’s got a ton of potential, due to time constraints we didn’t develop overlapping/concurrent appliance operation. It is equipped for a power strip installation for proof of concept. We documented everything so hopefully someone will take it further!


Thankyou for sharing @buchananwp this looks fantastic! I will take some time to read through you github repository.

Thanks @TrystanLea for developing and open-sourcing the emonPi!

1 Like

Did anyone notice this from ST Micro

STM32 Solutions for Artificial Neural Networks

Not sure Trystan what progress has been made on the STM32 design but this could be interesting.


Per-breaker monitoring, with load recognition per channel might be a powerful combo. There’d be a few portable loads like vacuum cleaners that might get dragged from breaker to breaker, but most loads never change circuits.

My per-breaker monitor tells me that 42% of my long term power usage (90% at the time of capture) happens through one of the General Purpose Outlets (aka power points) breakers, which isn’t particularly useful for determining where the big consumers are:

(excuse the missing % symbols… I think some font change meant that no longer shows up and I’ve not gone in to fix it yet).

Thank you @buchananwp for sharing your project. Yesterday, I bought the EmonPi for trying out something similarly. Similarly to you, I thought I was the first to get this idea and got quite disappointed after seeing the product Sense.

I have just downloaded the REDD training data for NILM. It contains voltages and currents sampled at 15 kHz for a number of households. It was pretty easy to identify devices using a simple kNN algorithm.

I would like to ask you a couple of questions before I start modifying the EmonPI

  1. Did you consider trying to sample the current and voltages at say 1-2 kHz instead of computing derivatives and returning data sampled at 10 Hz.

  2. Do you think it would be better to use say 100 samples around the transient of devices turning on/off? What are your thoughts?


Hi Trystan.

I am considering to extend the device with a feature of requesting data for two seconds sampled at 5 kHz on my EmonPi (2 CTs and the voltage). The data should be stored on request from emoncms.

For introducing such a feature, what would you recommend for communication?

Would it be possible to connect the SPI of the atmega328p with the SPI of the RPi (ignoring the RF transmitter). It seems like the SPI of the atmega328p is connected to the RFM1269CW.

1 Like

Interesting question, I havent got any personal experience of doing this but @danbates and I where discussing this approach for the STM32 development to allow higher data rates and this kind of snapshot sampling. @danbates is going to look into it.

1 Like