DIY EcoManager Nanode code is feature-complete!

Hurray! At long, LONG last the embedded C++ code for my DIY EcoManager is feature-complete! It's hard to believe that it's been a full two months since I started on this mission to build a DIY Current Cost receiver. Back then I thought it'd only take a couple of weeks! The last two months have been spent writing over 3,000 lines of C++, scratching my head lots over the EcoManager protocol and how to use the RFM12b wireless module. Oh, and blowing up my laptop of course. And I've met some really smart folks who are trying to do similar projects; without whom I honestly wouldn't have been able to get this project done. I've also really gotten into using the wiki and issue tracker features on github: the integration between commits, the issue tracker and the wiki is great.

The next step is to write a Python script to log the data coming from the Nanode and keep track of which IAMs are connected to which appliance. And then either build an Open Energy Monitor to measure both real and reactive power for my whole house, or pester Ecotricity to get me on their smart meter trial.

And then, once I've got all my data logging kit quietly collecting data, I'll finally be able to get cracking with my "proper" work of doing smart meter disaggregation!

Comments

Hi Jack,
Your blog is so useful! cool!
I'm doing my final year project which will use Raspberry Pi to communicate with EDF transmitter plug. I notice that you successfully DIY EcoManager. In my project, I need to replace the provided EcoManager Controller display with Raspberry Pi. I've read your blog and got many ideas. I wonder that if your current code for Nanode is also suitable for Raspberry Pi? Meanwhile, can I use the same method to implement on my Raspberry Pi to establish communication with EDF transmitter plug?

Thanks a lot.

I wonder that if your current code for Nanode is also suitable for Raspberry Pi?

No, you wouldn't be able to compile my Nanode rfm_edf_ecomanager code to run on an RPi. My code is specifically for a Nanode (or similar).

I think your easiest path would be to use a Nanode (running rfm_edf_ecomanager) connected via USB to an RPi. You could also use my rfm_ecomanager_logger Python code running on the RPi to communicate with the Nanode.

Alternatively, if you do not want to use a Nanode, then you could try using an RFM12Pi add-on for the RPi. But then you'd have to write your own code to run the RFM12Pi's ATtiny84 and on the RPi.

Good luck!

I went along the route suggested above. I bought a nanode, pushed the binaries to it and got the logger, etc running on the raspberry pi running raspbian wheezy. It was mostly very straightforward. I think i had to manually apt-get the python-serial library.

One thing that lost me an hour of troubleshooting is that if you have 'screen /dev/ttyUSB0 115200' running and following your serial input, it occasionally clashes w/ the logger and the logger crashes. the data all looked so nice coming into screen, I couldn't understand why the logger was dying. B)

I am not seeing much documentation on what i need to get the snd card power meeting up but it does seem to be rolled into the babysitter. i guess that was added later?

I am very interested in your disaggregation work. Will you allow simple training of loads/appliances through running them for a week with a IAM (or similar)? Not as elegant as teasing the data out directly but would seem to be a simple training route and could allow the signature db to grow more accurately if you specified model after training?

Anyways, thanks for your work.

Hi!

It was mostly very straightforward.

Glad it worked ok!

I am not seeing much documentation on what i need to get the snd card power meeting up

Ah, yes, sorry about that. Producing more documentation is definitely on my to-do list. You're right that there isn't a huge amount of documentation about it.

Do you need 15kHz sampling of your voltage and current? If so then I'll try to put some more documentation online ;) I'm also in the process of writing a paper about it.

but it does seem to be rolled into the babysitter. i guess that was added later?

Yeah, babysitter can keep an eye on snd_card_power_meter. You're right that snd_card_power_meter was the last thing to be added to my set of power monitoring software.

Will you allow simple training of loads/appliances through running them for a week with a IAM (or similar)? Not as elegant as teasing the data out directly but would seem to be a simple training route and could allow the signature db to grow more accurately if you specified model after training?

These are all great points. The plan at the moment goes something like this:

  • All my energy disaggregation code will go into the NILMTK project (non-intrusive load monitoring tool kit). NILMTK already has two disaggregation algorithms but more will come.
  • Right now, there are two ways to specify appliance models in NILMTK: either train NILMTK on IAM data; or manually specify models.
  • In the near future, I hope to build a semantic wiki. This will basically be a relational database recording information about objects relating to energy disaggregation (and their relationships). The data will be easy to modify and easy to query programmatically. One of the things I'd like this wiki to store is the learnt parameters for each type of appliance (and for each class of disaggregation algorithm). In this way, it should ultimately be possible to run NILMTK's disaggregation algorithms without having to do any training yourself (because NILMTK will just be able to download the appropriate models from the semantic wiki).

Thanks loads for your interest in my work!

Thanks, Jack

Good news on the training...
RE the snd card power meter... the Raspberry Pi sound card only supports audio out so i probably wouldn't roll it in right now anyway. I'll keep an eye out for it whenever you get around to it, i do like the idea, but my vote is for you to spend the time on the NILMTK... B)

Add new comment