Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/savjee/home-energy-monitor

ESP32-based Home Energy Monitor
https://github.com/savjee/home-energy-monitor

arduino aws dynamodb energy esp32 iot lambda serverless

Last synced: 10 days ago
JSON representation

ESP32-based Home Energy Monitor

Awesome Lists containing this project

README

        



Home Energy Monitor

Home Energy Monitor (v2)

[![GitHub Issues](https://img.shields.io/github/issues/Savjee/home-energy-monitor.svg)](https://github.com/Savjee/home-energy-monitor/issues)
[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/Savjee/home-energy-monitor.svg)](https://github.com/Savjee/home-energy-monitor/pulls)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE)

**โš ๏ธ This is a work in progress. By no means is this production ready.**

---

ESP32-based Home Energy Monitor: monitors electricity consumption of your entire house with a single CT sensor.

## Structure

This project consists out of multiple components:

| Folder | Description | Build status |
| ----------------- | ------------------- | ------------ |
| `src-app` | Mobile app (Ionic) | n/a |
| `src-aws` | Serverless AWS backend + GraphQL API | ![AWS Build Status](https://github.com/Savjee/home-energy-monitor/workflows/aws/badge.svg) |
| `src-esp32` | Firmware for the ESP32 (measuring device) | ![Firmware Build Status](https://github.com/Savjee/home-energy-monitor/workflows/firmware/badge.svg) |

(TODO: add instructions on how to deploy all of this. ๐Ÿ˜…)

## Video explanation

[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/ah3ezprtgmc/0.jpg)](https://www.youtube.com/watch?v=ah3ezprtgmc)

*[https://www.youtube.com/watch?v=ah3ezprtgmc](https://www.youtube.com/watch?v=ah3ezprtgmc)*

Read my blog post for more instructions: [https://savjee.be/2019/07/Home-Energy-Monitor-ESP32-CT-Sensor-Emonlib/](https://savjee.be/2019/07/Home-Energy-Monitor-ESP32-CT-Sensor-Emonlib/)

## Cloud Architecture

This is the cloud architecture that powers the energy meter and the app:

![AWS Cloud Architecture](https://savjee.github.io/home-energy-monitor/readme-images/architecture.png)

In a nutshell:
* The ESP32 has a MQTT connection with AWS IoT Core
* Every 30 seconds, 30 measurements are sent to AWS
* These measurements are stored in DynamoDB (IoT Rule)
* Once a day, all readings from the previous day are archived to S3
* A GraphQL API (hosted on Lambda) exposes the data stored in DynamoDB

## Screenshots

Web dashboard, built on top of the GraphQL API:

![Screenshot Web Dashboard](https://savjee.github.io/home-energy-monitor/readme-images/web-dashboard.png)

What is displayed on the ESP32 OLED display:

![Screenshot ESP32 OLED](https://savjee.github.io/home-energy-monitor/readme-images/esp32-oled.jpg)

## DIY Requirements

To build your own Energy Monitor you need the following hardware:

* ESP32
* CT sensor: YHDC SCT-013-030 (30A/1V)
* 10ยตF capacitor
* 2 resistors (between 10k-470kโ„ฆ)

Other requirements:
* AWS Account (Should be able to run in free-tier)
* Install [PlatformIO](https://platformio.org) on your system
* Drivers for your ESP32 board

Read my blog post for more instructions: [https://savjee.be/2019/07/Home-Energy-Monitor-ESP32-CT-Sensor-Emonlib/](https://savjee.be/2019/07/Home-Energy-Monitor-ESP32-CT-Sensor-Emonlib/)

## Contribute

I'm happy to merge in any pull requests. Also feel free to report bugs or feature requests.