NB: This project required the installation of an energy meter in my switchboard. Working in a switchboard exposes you to risks of electrical shock and burns that might result in serious injury or death. Only qualified and licensed persons should attempt to install electrical equipment such as the meter used in this project.
I wanted to monitor my energy usage profile to better understand the implications and benefits of installing solar and energy storage. A simple energy meter can count kWh and kVARh, but I wanted to analyse my consumption in the time domain so I could see my peak loads, load profile through each day (in summer and winter). This information is vital to properly understanding my energy usage.
There are many "off the shelf" systems that do similar logging, but I could not find one that suited all of my requirements:
- Real power and reactive power monitoring (many systems use CTs to measure current to give an approximate power reading).
- Database that could be queried for offsite backup and subsequent analysis of data.
- Logging of power, reactive power, apparent power, power factor, voltage, current, frequency.
- Configurable logging frequency.
- Ability to extend system to incorporate other monitors (for example logging solar yield).
- "High End" data exploration.
What I used
For these reasons, I decided to piece together a few hardware and software components to create my own energy monitor. I used InfluxDB and a python script running on an UDOO Neo to fetch the data and write it to the database. I tested polling the meter at up to 3Hz, but I am currently logging at 1Hz so I don't fill up the memory too quickly.
The USB-RS485 converter was plug and play and did not require installation of any drivers. Installing InfluxDB on the Neo was straightforward.
I attempted to install Grafana on my UDOO Neo, but I couldn't find a build for ARM, so I just installed it on my laptop. The only disadvantage of this is that I might want to look at the Grafana charts on a different machine when my laptop is turned off. This didn't worry me, as my wife does not share my passion for monitoring my energy. In fact, she said something unpublishable when I showed her that I could now see when she turned the air-conditioner on when I was at work.
In any case, here is the result of my work:
After improving the exception handling of my Python script, the system is logging data reliably. I have been pleasantly surprised by how well the DB on the UDOO Neo responds to queries from Grafana. It only takes a few seconds to respond with a week's worth of data for 5 measurements.