Energy data post processing: nilm or other appliance recognition


So I recently have the Iotawatt and I saw on this forum a post regarding load/appliance recognition. They referred to the nilmtk toolbox and so on. I couldn’t find the thread back so I started a this new one.

My goal is to measure the main power lines (3 phase) so I get a cummulative usage and in post processing of this data to differentiate between different appliances. It doens’t need to say ‘12 LED lights’ or ‘a 1000W microwave’. The discussion on the other thread (which I can’t find anymore) made it clear that this is a hot topic and very difficult. Therefor I would already be happy if it would filter out ‘A load of 40W’ and ‘A load of 1000W’. After a while, since the appliances are limited you can see that , e.g. the category ‘load of 100W’ uses the most energy, and then you can go look into it if it is worthwhile to exchange these loads with a more energy efficient one or something.
I was wondering if anyone had any experience regarding this?

On the second hand: how can I retrieve the raw data from my Iotawatt? I looked a bit around with the file manager, but I couldn’t find anything humanly readable. Also I saw that the data is available at the graphs tab at the iotawatt localhost, in CSV format. But the CSV format only plots the data every 120s. While the graphs look like they have a far more finer resolution. In my impression emoncms gives the same data as the csv from the tables tab in the iotawatt localhost.

Happy holidays

While it is a laudable idea, I believe you will find the technology is not up to the task. My brother has the Sense device, he says (and many reviews confirm) that even with all the processing at its disposal it does a very poor job of distinguishing loads. This is actually a very hard thing to do currently. That is why I like iotawatt. For not a lot of money you can hook it up to 14 circuits and get a pretty good idea of what is going on. I suppose some day the technology will get better, but with the prevelance of cheap power measurements increasing, it might go the other way (every device/outlet measures its own power utilization and then the task is aggregation of the data).

1 Like

Alright, thanks. I looked a bit around on the internet and I’m going to give it a try. As in this paper ( it states:

The most commonly used steady-state NILM method detects operation of individual loads
from the step changes in real and reactive power [5]. This method works well for devices with
two states of operation, but it is not suitable for extracting variable loads and multi-state
appliances. Another problem is the detection of loads that consume similar steady-state power
since their two dimensional signatures overlap in the P-Q plane. It is especially difficult to
distinguish low-power loads with small power consumption (lower than 150 W).

I’ll let you know what my experience with the nilmtk toolbox is.

Anything yet on the raw data?
I looked around in the scripts of the ‘graphs’ on the Iotawatt and I saw this :
url: path+"/feed/list.json",
async: false,
dataType: “json”,
success: function(data_in) {
feeds = data_in;

So I guess this url points to the raw data, but I can’t find it on the Iotawatt. Or is there another way?

IoTaWatt is not architected to do this kind of continuous signal processing. That said, raw data that you need - real and reactive power - is measured at sub-second intervals and saved at five second intervals. You could probably also collect it smaller intervals most of the time. But there is no API to deliver that data in a useful way. The fundamental way that an API works, responding to requests, introduces more overhead that would affect the quality of the high resolution data. I’d recommend that you look at the firmware and write your own service to export what you need via HTTP in batches at regular intervals, using floating point binary data.

Others have written services for IoTaWatt. There is a framework and currently there are about six basic services and as many as three data export services.