Home
Softono
EnergyMe-Home

EnergyMe-Home

Open source C++
252
Stars
33
Forks
23
Issues
7
Watchers
1 week
Last Commit

About EnergyMe-Home

Smart energy meter capable of monitoring up to 16 channels. Supports MQTT, REST API, Modbus TCP, InfluxDB, AWS IoT Core. Friendly UI and fully open source (PCB, schematics, components, source code)

Platforms

Web Self-hosted

Languages

C++

EnergyMe-Home

Coverage

🛒 Want it ready to use? Pre-assembled and calibrated units. Just install and monitor!

Available on our website and on Tindie

Release Stars License OSHWA Certified Open Source Hardware IT000025

Homepage

EnergyMe-Home is an open-source energy monitoring system for home use, capable of monitoring up to 16 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. Prefer it ready to go? Grab a pre-assembled unit.

A demo speaks more than 1000 words: try the demo dashboard!

Join the community! Head over to GitHub Discussions - ask questions, share your builds and dashboards, suggest features, and exchange integration tips. It's the home for everyone building, installing, or tinkering with EnergyMe-Home

Supported Electrical Systems

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 16 circuits simultaneously
  • 1× main circuit, sampled at high frequency for accurate total energy measurement
  • 15× branch circuits, multiplexed for individual monitoring

⚠️ Important: Installation requires working with your main electrical panel. Always consult a qualified electrician if you're not experienced with electrical installations. The user is responsible for ensuring compliance with local electrical codes and regulations, and assumes all risks associated with the installation and use of this device.

Hardware

PCB front PCB back

The hardware (currently at v6.1) 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
  • ZMPT107-1: voltage transformer providing full galvanic isolation between the AC mains and the low-voltage measurement circuitry, with no direct connection between mains and the board's ground
  • 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 hardware/pcb directory, while datasheets for key components are in the hardware/components directory. Additional hardware specifications and technical details can be found in the hardware/README.md, with a condensed one-page summary in the PCB & Firmware Datasheet.

The project is published on EasyEDA for easy access to the PCB design files. You can find the project on EasyEDA OSHWLab.

Software

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.

Integration

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 source README.

Home Assistant Integration

EnergyMe-Home integrates with Home Assistant through a dedicated custom integration.

Home Assistant 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.

Getting Started

  1. Order the PCB: Download the design files from the Schematics folder and order from your preferred PCB manufacturer
  2. Populate the board: Solder all components using the BOMs in hardware/pcb/main_board/, hardware/pcb/top_board_1/, and hardware/pcb/top_board_2/
  3. Flash the firmware: Connect a USB-to-UART adapter to the UART pins and flash using PlatformIO
  4. Configure WiFi: Power on the device and connect to the captive portal to set up WiFi credentials
  5. Start monitoring: Access the web interface at http://energyme.local (default credentials: admin/energyme)

For detailed build instructions and troubleshooting, see the manual.

Privacy & Telemetry

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.

Releases

Firmware binaries and per-version release notes are published on GitHub Releases. See CHANGELOG.md for an index of versions and links to the corresponding pull requests.

Contributing

Contributions are welcome! Please read the contributing guidelines for more information.

License

This project contains both software and hardware components:

See the respective license files for full details.