Open main menu

Changes

no edit summary
===Open flowgraph for your SDR===
In GNU Radio open a flowgraph and navigate to the gr-smart_meters/flowgraph folder. If you have installed everything above you should be able to run it and see smart meter data!
==Determining your power providers CRC==
CRC check is set to false in the sample flowgraphs so you will see data but can't be sure there aren't any errors. Every power provider is assigned a unique CRC so neighboring smart meter systems do not interfere with each other. To determine this you need to capture at least 4 good packets and use reveng to reverse the CRC.
===Install reveng===
It's on sourceforge: https://reveng.sourceforge.io/
Documentation is at: https://reveng.sourceforge.io/readme.htm
Download the .zip in the latest releases folder: https://sourceforge.net/projects/reveng/files/2.1.1/
Follow instructions to make
===Provide reveng four good packets===
I find the easiest way to do this is to limit the '''Packet Type''' to 0x55 and '''Packet Length''' to 0x23. Edit the GridStream block and make those changes then run the flowgraph making sure '''CRC Enable''' is set to False. You will get data that looks like this below.
<code> 00FF2A55002330FFFFFFFFFFFF50CF5DD9E2C0B80065F5D1A483F0FBBC6F01001E6C043B517E90B286 </code>
You need to remove the first 6 bytes and provide the rest as inputs to reveng, CRC isn't calculated on those bytes.
<code> 00FF2A550023 <-- Discard | 30FFFFFFFFFFFF50CF5DD9E2C0B80065F5D1A483F0FBBC6F01001E6C043B517E90B286 </code>
Now provide four samples to reveng
<code> ./reveng -w 16 -s 30FFFFFFFFFFFF50CF5DD9E2C0B80065F5D1A483F0FBBC6F01001E6C043B517E90B286 30FFFFFFFFFFFF50CF2DD9E560560065F5D5A483F0C000650100176C033FF77E901766 30FFFFFFFFFFFF50CF95D9E5E01A0065F5D9A483F0515A0201001E6C042A177E90BDA4 30FFFFFFFFFFFF50CF8DD9E6A0F00065F5EBA483F0EBFD4A0100206C0433A97E90B04C </code>
You should get the following output below if you used this data to test
<code>width=16 poly=0x1021 init=0x5fd6 refin=false refout=false xorout=0x0000 check=0x139e residue=0x0000 name=(none)</code>
The init value is what you enter into the GridStream block, you can now enable the CRC and know you have correct data!