EnergyMe-Home is an open-source energy monitoring system for home use, capable of monitoring up to 17 circuits. It integrates with any platform through REST API, MQTT, Modbus TCP, and InfluxDB.
Built for makers and DIY enthusiasts who want to track their home's energy consumption. The hardware uses ESP32-S3 and ADE7953 energy measurement IC, while the firmware is written in C++ with PlatformIO and Arduino framework. You can build and customize it yourself - all hardware designs and software are open-source.
EnergyMe-Home is compatible with various electrical systems worldwide:
| System Type | Voltage | Configuration | Supported |
|---|---|---|---|
| Single Phase | 230V | L + N | ✅ Europe, Asia, Africa, Oceania |
| Split Phase | 120V/240V | L1 + L2 + N | ✅ North America residential |
| Split Phase | 120V/240V | L1 + L2 (no N) | ✅ Old electrical systems |
| Three Phase | 400V/230V | 3L + N | ❕ Europe commercial/industrial (derived voltages) |
| Three Phase | 208V/120V | 3L + N | ❕ North America commercial (derived voltages) |
Current Transformers Supported:
- 333 mV output CTs (+- 500 mV absolute)
- 3.5 mm jack connectors for easy plug-and-play
Monitoring Capacity:
- Up to 17 circuits simultaneously
- 1× main circuit (typically 50A CT), sampled at high frequency for accurate total energy measurement
- 16× branch circuits (typically 30A CTs), multiplexed for individual monitoring
The hardware (currently at v5) consists of both the PCB design and the components used to build the energy monitoring system.
The key components include:
- ESP32-S3: the brain of the project
- ADE7953: single-phase energy measurement IC
- Multiplexers: used to monitor multiple circuits at once
- 3.5 mm jack connectors: used to easily connect current transformers
PCB schematics and BOMs are available in the documentation/Schematics directory, while datasheets for key components are in the documentation/Components directory. Additional hardware specifications and technical details can be found in the documentation/README.md.
The project is published on EasyEDA for easy access to the PCB design files. You can find the project on EasyEDA OSHWLab.
The firmware is built with C++ using the PlatformIO ecosystem and Arduino 3.x framework, with a task-based architecture using FreeRTOS.
Key Features:
- Energy Monitoring: ADE7953 driver with energy accumulation and CSV logging
- Web Interface: Dashboard for monitoring and system configuration
- Authentication: Token-based security with password protection
- Integration Options: REST API, MQTT, InfluxDB, and Modbus TCP
- Crash Recovery: Automatic recovery and firmware rollback on failures
- WiFi Setup: Captive portal for configuration and mDNS support (
energyme.local) - OTA Updates: Firmware updates with MD5 verification and rollback
- Waveform Analyzer: Capture high-resolution voltage & current waveforms per channel from the web UI
For detailed architecture, implementation details, and API documentation, see source/README.md.
EnergyMe-Home offers multiple integration options:
- REST API: Complete Swagger-documented API for all data and configuration (swagger.yaml)
- MQTT: Publish energy data to any MQTT broker with optional authentication
- Modbus TCP: Industrial protocol for SCADA systems integration
- InfluxDB: Support for both v1.x and v2.x with SSL/TLS and buffering
- Home Assistant: Dedicated custom integration (homeassistant-energyme)
For detailed integration guides and implementation details, see the documentation.
EnergyMe-Home integrates with Home Assistant through a dedicated custom integration.
- Setup: Requires device IP address (automatic discovery via mDNS coming soon)
- Data: All energy measurements and system information as Home Assistant entities
- Access: Monitor all circuits and aggregate data within Home Assistant
Get started at homeassistant-energyme.
- Order the PCB: Download the design files from the Schematics folder and order from your preferred PCB manufacturer
- Populate the board: Solder all components using the BOM in
documentation/Schematics - Flash the firmware: Connect a USB-to-UART adapter to the UART pins and flash using PlatformIO
- Configure WiFi: Power on the device and connect to the captive portal to set up WiFi credentials
- Start monitoring: Access the web interface at
http://energyme.local(default credentials: admin/energyme)
For detailed build instructions and troubleshooting, see the documentation.
Optional anonymous usage statistics sent once per boot: hashed device ID, firmware version, country/city (from public IP). Helps count active installations. No personal data or usage patterns collected. Disable in platformio.ini: set ENABLE_OPEN_SOURCE_TELEMETRY=0.
Contributions are welcome! Please read the contributing guidelines for more information.
This project contains both software and hardware components:
- Software: Licensed under the GNU General Public License v3.0 (GPL-3.0)
- Hardware: Licensed under the CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S-2.0)
See the respective license files for full details.


