YoMoPie: A User-Oriented Energy Monitor based on the Raspberry Pi

Christoph Klemenjak
3 min readFeb 19, 2021

Computational methods for the enhancement of energy efficiency rely on a measurement process with sufficient accuracy and number of measurements. Networked energy meters, energy monitors, serve as a vital link between the energy consumption of households and key insights that reveal strategies to achieve significant energy savings.

With YoMoPie, we propose a user-oriented energy monitor for the Raspberry Pi platform that aims to enable intelligent energy services in households. YoMoPie measures active as well as apparent power, stores data locally, and integrates a user-friendly Python library.

Furthermore, the presented energy monitor allows users to run self-designed services in their home to enhance energy efficiency. Potential services are (but not limited to) residential demand response, immediate user feedback, smart meter data analytics, or energy disaggregation.

All design files and pieces of software are available free of charge. However, in case you use the PCB design, code, or other material for research purposes, we kindly ask you to cite our peer-reviewed research paper:

Klemenjak, C., Jost, S., & Elmenreich, W. (2018, November). Yomopie: A user-oriented energy monitor to enhance energy efficiency in households. In 2018 IEEE Conference on Technologies for Sustainability (SusTech) (pp. 1–7). IEEE.

Key Features of YoMoPie:

  • Communication via WiFi, Ethernet, RF
  • YoMoPie measures active power, apparent power, electric current, and voltage
  • Maximum sampling frequency: 10 Hz
  • The integrated relay allows to switch electric loads
  • Open-Source / Open-Hardware Project
  • Compatible to the Raspberry Pi platform
  • Costs: approx. 50€


The YoMoPie Python package is available on Python Package Index (PyPI), a software repository for the Python programming language and can easily be installed:

pip3 install YoMoPie

Additionally, the entire source code, design files, and a manual can be obtained from our YoMoPie Github repository.

Examples of use

After a successful installation process, the YoMoPie package is available system-wide and can be accessed by a simple import command:

import YoMoPie as yomopie
yp = yomopie.YoMoPie()

During initialisation, the number of line conductors has to be set (single or polyphase metering):


To test the operation, we recommend to call the function do_n_measurements. Based on the number of samples and the sampling period, the function will return first measurement values and saves it into the target file:

yomo.do_n_measurements(number of samples, sampling period, target file)

Active power, apparent power, current, and voltage samples can be read with commands such as:

[t, I] = yp.get_irms()
[t, U] = yp.get_vrms()
[t, P] = yp.get_active_energy()
[t, S] = yp.get_apparent_energy()

In the same vein, users can activate continuous data logging or perform a fixed amount of subsequent measurements:

yp.do_n_measurements(quantity, rate, file)

The operational mode (OPMODE) register defines the general configuration of the integrated measurement chip ADE7754. By writing to this register, A/D converters can be turned on/off, sleep mode can be activated, or a software chip reset can be triggered. For further information, we refer to the datasheet of the measurement chip.


Find further information on our Github Page.

We are done for today, how about a coffee?