Home Energy Monitoring System

The Purpose (Mission)

  • Monitor, archive and analyze energy consumption in the house
  • Visualize historical consumption data
  • Access data remotely from Web
  • Eventually include data from other sensors, like temperature, pressure, humidity, motion, light, security, etc.

Home Energy Monitoring System2. Components

3. Progress Report

3.1. Measurement Box

To begin with, I looked at the electrical fuse box in my apartment and noticed that I have 10 or so circuit breakers leading to separate electrical house circuits. I thought that it would be nice to monitor these 10 output lines individually and independently. This way I could have detailed power data as well as compute total house consumption.

When I removed the plastic cover, I noticed that there is quite a lot of space under it, so I hoped I could nicely fit all required hardware inside and hide it from view.

3.1.1. Hardware

As far as I could see, the original EmonTx approach from OpenEnergyMonitor was to measure current at the input to the breakers. This could be the result of limited measurement speed and/or limited processing power or the Arduino Uno -based hardware. EmonTx has only three current probe inputs with 10-bit resolution. So, instead I decided that I'd need faster processor, more analog inputs and 12-bit ADC resolution. In other words, this Arduino Due board:

The next logical step was to test wireless communication between this sensor controller and whatever the base might be. For this I purchased a couple of RFM12B modules and a JeeLink from JeeLabs shop:

(NOTE: JeeLink was later replaced with JeeNodeUSB

3.1.2. RFM12B library for Arduino Due

As a starting point, I used a great port of RFM12B library to C++ by Felix of LowPowerLab.com

Turned out, this library was not compatible with my ARM-based Due board. So I spent the next few weeks on modifying this code and eventually made it to work on my Due. The files are below. Just unzip this into library folder of the Arduino IDE and don't forget to select Due before compiling 😉


Not all functionality has been implemented yet, like sleep mode, but overall it does work.

Home Energy Monitoring System Schematic3.1.3. Current / Voltage Sensors

Once I had RF communication working properly between Due and JeeLink, I started working on setting up sensors.

As you can see, I used 22 Ohm burden resistors, which gave me more than enough head room to measure currents up to full range of SCT013 (100A). In addition, to measure line voltage using AC-AC adapter, I adjusted resistive divider to 100K – 6.6K, which slightly reduced resultant voltage range at the Arduino to below 3.3V p-p.

I soldered all components onto this Proto Shield for Arduino MEGA, which also fits perfectly to Due.

At the same time, in order to utilize full 12-bit ADC resolution of Arduino Due, I reworked original EmonLib library of OpenEnergyProject. Here's my modified source code:


For more detail: Home Energy Monitoring System

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top