Landis+Gyr GridStream Protocol: Difference between revisions

No edit summary
No edit summary
Line 7: Line 7:
==Reverse Engineering and Analysis==
==Reverse Engineering and Analysis==


=== Packet Structure ===
===Packet Structure===


==== Sync Word ====
====Sync Word====
0xAA     0xAA     0xAA     0xAA     0xA0     0x05     0xFF


==== Start and Stop Bits ====
10101010 10101010 10101010 10101010 10100000 00000101 11111111  Sync Word (no start/stop bits)


==== Header ====
PDU align syncword: 0xAAAAAAAAAAA005FF but I use one less 0xAA at the start 0xAA.AA.AA.AA.A0.05.FF


==== Type, Length and Sub Type ====
0xAA     0xAA     0xAA     0xAA     0xAA     0xA        0x00         0xFF     |     0x2A


==== Payload ====
10101010 10101010 10101010 10101010 10101010 1010   0 00000000 1 0 11111111 1 | 0 00101010 1       Sync Word (no start/stop bits)


==== Checksum ====
====Start and Stop Bits====
 
====Header====
 
====Type, Length and Sub Type====
 
====Data====
 
====Checksum====
<br />
<br />
===Captured Meter Data===
===Captured Meter Data===
Line 39: Line 48:
!2
!2
!3
!3
|
!4
!4
!5
!5
Line 52: Line 62:
!15
!15
!16
!16
|
!17
!17
!18
!18
|-
!
! colspan="3" |Not part of CRC calc
|
! colspan="13" |Data
|
! colspan="2" |
|-
|-
!
!
Line 59: Line 77:
!Type
!Type
!Length
!Length
|
!SubType
!SubType
!Unknown
!Unknown<ref>test</ref>
!Unknown
!Unknown
!Unknown
!Unknown
Line 72: Line 91:
!Unknown
!Unknown
!Unknown
!Unknown
|
!CRC
!CRC
!Trailing
!Trailing
Line 79: Line 99:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 92: Line 113:
|<code>'''04384F'''</code>
|<code>'''04384F'''</code>
|<code>7E80</code>
|<code>7E80</code>
! rowspan="10" |
|<code>0896</code>
|<code>0896</code>
|<code>04</code>
|<code>04</code>
Line 99: Line 121:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 119: Line 142:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 139: Line 163:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 159: Line 184:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 179: Line 205:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 199: Line 226:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 219: Line 247:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 239: Line 268:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 259: Line 289:
|<code>55</code>
|<code>55</code>
|<code>0023</code>
|<code>0023</code>
!
|<code>30</code>
|<code>30</code>
|<code>FFFFFFFFFFFF</code>
|<code>FFFFFFFFFFFF</code>
Line 275: Line 306:
|<code>04</code>
|<code>04</code>
|}
|}
<code>1) Header = 0x00FF2A</code>
1) Header = 0x00FF2A


<code>2) Packet Type = 0x55</code>
2) Packet Type = 0x55  


<code>3) Packet Length = 0x0023</code>
3) Packet Length = 0x0023  


<code>4) Unknown Identifier #1 = 0x30</code>
4) SubType = 0x30  


<code>5) Unknown Empty Data Slot = FFFFFFFFFFFF</code>
5) Unknown = FFFFFFFFFFFF (Empty Data Slot?)


<code>6) Unknown Identifier #2 = 0x50</code>
6) Unknown = 0x50  


<code>7) Unknown Identifier #3 = CF8DD9E2 (Appears to either be location identifier or duplicate meter ID in some cases)</code>
7) Unknown = CF8DD9E2 (Appears to either be location identifier or duplicate meter ID in some cases)  


<code>8) Unknown Identifier #4 = C0</code>
8) Unknown = C0


<code>9) Unknown Data #1 = '''02''' (Increments some amount with each transmission and rolls over at 0xFF)</code>
9) Counter = '''02''' (Increments some amount with each transmission and rolls over at 0xFF)  


<code>10) Uptime = 0x'''0001ECA3''' (Value in seconds since meter powered on, easy way to see last time there was an outage!)</code>
10) Uptime = 0x'''0001ECA3''' (Value in seconds since meter powered on, easy way to see last time there was an outage!)  


<code>11) Unknown Identifier #5 = 0xA483</code>
11) Unknown Identifier #5 = 0xA483  


<code>12) Meter ID = 0xF0EE36DB</code>
12) Meter ID = 0xF0EE36DB  


<code>13) Unknown Identifier #6 = 0x0100</code>
13) Unknown = 0x0100  


<code>14) Unknown Data #2 = 0x2132</code>
14) Unknown = 0x2132  


<code>15) Unknown Data #3 = 0x'''042D19'''</code>
15) Unknown = 0x'''042D19'''  


<code>16) Unknown Identifier #7 = 0x7E80</code>
16) Unknown = 0x7E80  


<code>17) Checksum = 0xF154</code>
17) Checksum = 0xF154  


<code>18) Trailing byte = 0x04</code>
18) Trailing byte = 0x04
----
----