I'm going to try to throw together a quick energy consumption logger so I can see where my elec and gas is going. I don't have smart meters, but my meters do have pulse outputs (albeit the gas meter is mechanical). I'm planning to use optical sensors to detect the pulses, then an RPi to count pulses per minute (or whatever) and write to SD card. I won't bother with realtime or timestamping, and I can process all the pulse counts logs in Excel or Matlab to get kWh graphs, etc.
Everything seems to be logging nicely, and I've added a DS18B20 temperature sensor to grab indoor ambient temperature too. The only minor niggle so far is that the logs are not quite 60 seconds apart (perhaps the resonator clock isn't very accurate) but that's easily accounted for.
I've written a bunch of Matlab code to read in the log file and produce pretty plots like this:
Now I just need to wait for the cold weather to arrive so I can switch the heating on!
I found an OPB704 kicking around and added a couple of resistors to bias it up for 5V operation.
390Ohms on the diode side biases it at about 10mA forward current from 5V supply. A 10kOhm on the phototransistor (collector) results in an almost complete rail-to-rail swing when something white is placed in front of the sensor.
Here's a screenshot of the ADC values as the 1/10ths wheel goes round on the meter:
Also just bought a light sensor module (with on-board comparator and threshold adjust) for £2 for the electricity meter sensor - perfect! Won't even need an analogue input pin for that.
...which gives a strong pulse every 10dm3 of gas consumed (and nine weaker ones for the in-between digits).
The method is not too dissimilar for the electric meter (which has a flashing LED for every 1Wh consumed).
I might use an Arduino instead of RPi (if I can get logging to SD card working easily) because it offers analogue inputs so I can easily add e.g. temperature sensors later, and maybe do all the optical sensing in software instead of needing a couple of opamps. This page looks useful: