[Jeff Sandberg] has put a fair bit of effort into adding solar and battery storage with associated smarts to his home, but his energy usage statistics were incomplete. His solution was to read data from the utility meter using RTL-SDR to fill in the blanks. The results are good so far, and there’s no reason similar readings for gas and water can’t also be done.
[Jeff] uses the open source home automation software Home Assistant which integrates nicely with his solar and battery backup system, but due to the way his house is wired, it’s only aware of about half of the energy usage in the house. For example, [Jeff]’s heavy appliances get their power directly from the power company and are not part of the solar and battery systems. This means that Home Assistant’s energy statistics are incomplete.
Fortunately, in the USA most smart meters broadcast their data in a manner that an economical software-defined radio like RTL-SDR can access. That provided [Jeff] with the data he needed to get a much more complete picture of his energy usage.
While getting data from utility meters is conceptually straightforward, actually implementing things in a way that integrated with his system took a bit more work. If you’re finding yourself in the same boat, be sure to look at [Jeff]’s documentation to get some ideas.
For those in Europe: https://github.com/wmbusmeters/wmbusmeters
DSMR meters in The Netherlands (and I guess other countries too) have this awesome “P1” port that serially spits the meter data, including gas metering if you have the meters linked, as it’s typical. Moreover, the port has a 5V rail that you can draw 100mW from (afaik, for free!)
Data of “P1” port is bit inverted (handy to know :)
What about privacy? It’s great to know when to rob someone, figuring out daily routines.
It should be encrypted.
My thoughts exactly, energy profiles are a giveaway to determine occupancy and user profiles. I never expected this information to be broadcast around without some form of access control.
>I never expected this information to be broadcast around without some form of access control.
Oh you sweet child
They do have some encryption… It’s just rtl_433 can decode the packets.
That would have been the easy button for this project, use rtl_433 to rx, output the rx to json, then pull your specific meter id info
How much tinfoil you go through in a year?
While you’re figuring that out I just go up and ring the doorbell. Nobody home, great, now I’ll go around back, break a window and steal your stuff.
Unfortunately for you, I don’t answer the door unless I know who it is. You come around and break the window, you’re SOL.
Back door = two dobermans
All my energy is used up between midnight and 7am, topped up by solar during the day, so my energy usage says nothing about whether I’m home or not
Get from the electric company as well.
I thought the meters used ZigBee, which does have some encryption.
I mucked around with this for days before concluding that none of my utility meters were transmitting anything. Just because your meter is smart doesn’t mean those features are enabled.
Fortunately the opower integration now supports my power company so I can get the same data from the cloud. https://www.home-assistant.io/integrations/opower/
If you look at the front of the meter, the “smart” ones that broadcast like this are usually branded ITron somewhere. In addition to this, there will be a barcode that contains the actual ID of the meter, which you can use to correlate any noise.
If they don’t say Itron they might still be smart, just using cellular, zigbee, or some other protocol
rtl_433 does this all in one step–decode the signal, format into JSON, and send to your MQTT broker. And it’s already in your favorite package manager’s default repositories.
At the time I wrote the original blog post, I was having some trouble with rtl_433’s ERT decoders. They would get the messages, but would periodically fail to decode them.
I ultimately went with the rtl_amr solution I mentioned in the post, which has worked just fine several months on.
I have an ESP8266 plugged into my P1 smart meter and a script that fetches the current electricity for the hour and calculates the cost.
2024-07-31T14:59:39+0200 1094
1094 watts @ 0.06 = 0.87 KR/Hour inc.VAT,Delivery and tax.
What about water meters. What is the best device to scan and pickup what frequency my badger water meter is transmitting on.
What about water meters. What is the best device to pick up the frequency my Badger water is transmitting on.