Home power consumption monitoring using ESP32
Its always fun to collect data around you and understand your needs better. When it comes to power consumption, end of the month bill gives us a pretty good view, but I wanted to make it slightly interesting. I wanted to collect power consumption every second in my house and see how the data looks like.
Components used:
- ESP WROOM 32 MCU Module - (Robu.in)
- SCT-013-030 Non-invasive AC Current Sensor Clamp Sensor - (Robu.in)
- 100k Ohm resistors - 2 pieces
- 10uF capacitor - 1 piece
- 3.5mm jack female connector - 1 piece
Wiring diagram:
The wiring diagram were taken mostly from this article and OpenEnergyMonitor project. The wiring diagram is same as the standard ones mentioned in these websites. I just didn't want to copy or redo the same as the other articles are already explaining these things at the best.
As you can clearly see, my soldering skills are not that great. :-)
Software:
With not much changes in the hardware, I did a lot of research on making the software better. Especially with ESP32 having issues in accuracy with its ADC controller, I spent a lot of time making it better.
I used the open source Emon library and added a look up table for my ESP32 ADC which gives a very good results in accurately measuring the analog input. As it is well known each ESP32 needs to be calibrated for ADC. While the recently manufactured ESP32 are calibrated at factory, I still didn't find it quite accurate in my case. So I calibrated and generated a look up table for my chip. The calibration code is available here.
The entire code is available here: ESP32 Home energy monitoring
The ESP32 sketch works as a prometheus exporter making it easy to log the data easily in timeseries. Prometheus also has been my personal favourite in terms of resource usage.
Finally the data is available in Grafana. As I already have a Raspberry Pi running in my house for various other things, I added Prometheus and Grafana for monitoring the energy consumption as well.