Monitoring electricity usage at the meter

Updated on .

I’d like to know how much energy I’m using because I want to ensure that the baseline load for my activities is reasonable. It’s difficult to correlate the usage when there’s a significant delay in it showing up on PG&E’s website. I haven’t found a great solution, but I’ll probably end up using the Rainforest Automation EMU-2 connected to a Raspberry Pi to send realtime data to a dashboard system like Grafana.


PG&E’s electricity meters can use Zigbee to stream data for its customers, but there are just a few certified “HAN” products that are compatible:

Rainforest Automation EMU-2

The EMU-2 transmits usage data over a USB serial port at a prescribed rate. The company has an abandoned Emu-Serial-API project on GitHub to parse the XML output with Python 2. Despite the shortcomings of that interface, emu2influx uses it to push metrics to InfluxDB. The most promising 3rd-party interface is Emu-Api (known as emu-power on PyPi), written in Python 3. The RAEdataset project also has a very simple script, if full control isn’t necessary.

PG&E supports this device, despite not being listed as a HAN product.


A MAC address is required to activate the Zigbee radio in the meter, and it probably only communicates with that specific device. It makes sense as a security feature, if MACs cannot be spoofed. The ecosystem around the Smart Energy Protocol in Zigbee seems locked down tight, with “production” certificates required to communicate.


Pulse counting

Some meters emit pulses as energy is used. The Raspberry Pi-based emonPi monitor can sense these pulses to measure energy.


There are a few projects that use OCR to read the visual indicators of meters. The AI-on-the-edge-device (via Hackaday) looks the most promising. There’s also a water meter-focused approach at Integrating my Neptune Water Meter with HomeAssistant (via Hackaday).