Before commenting read Forum rules
Don't comment the topic if you have a new question.
You can create a new topic selecting correct category from Gurux Forum and then create a new topic selecting "New Topic" from the top left.
Before commenting read Forum rules
Don't comment the topic if you have a new question.
You can create a new topic selecting correct category from Gurux Forum and then create a new topic selecting "New Topic" from the top left.
Hi
We have two L+G E450 meter which push data in different structures. I use Gurux.DLMS.Python in my software to parse this data, however it only works with one of the two meters.
I used the translator tool of Gurux Director to parse and inspect the raw data to further analyze the problem.
First the output of the meter data my Gurux based software is able to parse:
<!-- IDIS system title:
Manufacturer Code: LGZ
Device type: IDIS package2 IP polyphase meter
Function type: Load Management, Multi Utility
Serial number: 53520967
-->
<DataNotification>
# Invoke ID: 3463726
<LongInvokeIdAndPriority Value="3463726" />
# 06.12.2021 01:05:00
<DateTime Value="07E50C0601010500FF800000" />
<NotificationBody>
<DataValue>
<Structure Qty="13" >
<Array Qty="13" >
<Structure Qty="4" >
<UInt16 Value="40" />
# 0.9.25.9.0.255
<OctetString Value="0009190900FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="40" />
# 0.9.25.9.0.255
<OctetString Value="0009190900FF" />
<Int8 Value="1" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="1" />
# 0.0.42.0.0.255
<OctetString Value="00002A0000FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="1" />
# 0.0.96.1.1.255
<OctetString Value="0000600101FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="8" />
# 0.0.1.0.0.255
<OctetString Value="0000010000FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="3" />
# 1.1.1.8.1.255
<OctetString Value="0101010801FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="3" />
# 1.1.1.8.2.255
<OctetString Value="0101010802FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="3" />
# 1.1.2.8.1.255
<OctetString Value="0101020801FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="3" />
# 1.1.2.8.2.255
<OctetString Value="0101020802FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="3" />
# 1.1.5.8.1.255
<OctetString Value="0101050801FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="3" />
# 1.1.5.8.2.255
<OctetString Value="0101050802FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="3" />
# 1.1.8.8.1.255
<OctetString Value="0101080801FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
<Structure Qty="4" >
<UInt16 Value="3" />
# 1.1.8.8.2.255
<OctetString Value="0101080802FF" />
<Int8 Value="2" />
<UInt16 Value="0" />
</Structure>
</Array>
# 0.9.25.9.0.255
<OctetString Value="0009190900FF" />
# LGZ1030653520967
<OctetString Value="4C475A31303330363533353230393637" />
# 1909113
<OctetString Value="31393039313133" />
# 06.12.2021 01:05:00
<OctetString Value="07E50C0601010500FF800001" />
<UInt32 Value="0" />
<UInt32 Value="134284" />
<UInt32 Value="0" />
<UInt32 Value="0" />
<UInt32 Value="0" />
<UInt32 Value="0" />
<UInt32 Value="0" />
<UInt32 Value="99887" />
</Structure>
</DataValue>
</NotificationBody>
</DataNotification>
Following the output of the translator of the data from the meter which does not work with my program:
<!-- IDIS system title:
Manufacturer Code: LGZ
Device type: IDIS package2 IP polyphase meter
Function type: Disconnector, Load Management, Multi Utility
Serial number: 58204112
-->
<DataNotification>
# Invoke ID: 153327
<LongInvokeIdAndPriority Value="153327" />
# 22.01.2022 20:40:10
<DateTime Value="07E601160614280AFF800000" />
<NotificationBody>
<DataValue>
<Structure Qty="33" >
# 22.01.2022 20:40:10
<OctetString Value="07E601160614280AFF800000" />
# 1.0.1.8.0.255
<OctetString Value="0100010800FF" />
<UInt32 Value="4495453" />
# 1.0.1.8.1.255
<OctetString Value="0100010801FF" />
<UInt32 Value="3164981" />
# 1.0.1.8.2.255
<OctetString Value="0100010802FF" />
<UInt32 Value="1330472" />
# 1.0.1.7.0.255
<OctetString Value="0100010700FF" />
<UInt32 Value="1048" />
# 1.0.2.8.0.255
<OctetString Value="0100020800FF" />
<UInt32 Value="0" />
# 1.0.2.8.1.255
<OctetString Value="0100020801FF" />
<UInt32 Value="0" />
# 1.0.2.8.2.255
<OctetString Value="0100020802FF" />
<UInt32 Value="0" />
# 1.0.2.7.0.255
<OctetString Value="0100020700FF" />
<UInt32 Value="0" />
# 1.0.3.8.0.255
<OctetString Value="0100030800FF" />
<UInt32 Value="830134" />
# 1.0.3.8.1.255
<OctetString Value="0100030801FF" />
<UInt32 Value="507549" />
# 1.0.3.8.2.255
<OctetString Value="0100030802FF" />
<UInt32 Value="322585" />
# 1.0.3.7.0.255
<OctetString Value="0100030700FF" />
<UInt32 Value="0" />
# 1.0.4.8.0.255
<OctetString Value="0100040800FF" />
<UInt32 Value="997194" />
# 1.0.4.8.1.255
<OctetString Value="0100040801FF" />
<UInt32 Value="693919" />
# 1.0.4.8.2.255
<OctetString Value="0100040802FF" />
<UInt32 Value="303275" />
# 1.0.4.7.0.255
<OctetString Value="0100040700FF" />
<UInt32 Value="521" />
</Structure>
</DataValue>
</NotificationBody>
</DataNotification>
As you can see the second example uses a "flatter" hierarchy in the structure. Do you know that behavior or the reason for this different structure? Can you give me a hint how to use the Gurux DLMS Python parser software to be able to parse also this second data structure?
See this Github issue for more context information:
https://github.com/scs/smartmeter-datacollector/issues/21
Thank you very much in advance.
Sincerly,
raymar
Hi,
Hi,
Can you add raw hex trace from the push bytes so I can verify this?
BR,
Mikko
Hi Mikko
Hi Mikko
Of course, however the data is encrypted and I cannot write the key here since it is from a meter of someone else. Therefore I'm not sure if the raw data is useful for you in any way.
7E A0 8B CE FF 03 13 EE E1 E6 E7 00 E0 40 00 01 00 00 77 DB 08 4C 47 5A 67 73 78 1F D0 82 01 03 30 00 00 A4 1E AE 60 03 2D 12 96 F2 D2 86 5D 27 94 F3 59 34 7E 91 AE FF E2 BC 1F 37 C0 7B 5C 30 A6 9A 48 89 06 30 97 97 8B EF 0D 55 0B BA 69 85 D6 77 61 D9 C3 72 DF 3C 7B F3 3F A3 CB A6 F8 3D B5 5A 71 BE DF 3A 4D B2 9A 89 BC C3 A1 89 11 E6 FF F2 09 4D BF 1F 7B 33 67 A9 F9 78 F4 90 9A 62 03 4E 3D 6E FD 3B 2E 0D 56 66 44 AC 7E 7E A0 8B CE FF 03 13 EE E1 E0 40 00 02 00 00 7A B6 DB 45 4B A6 78 15 1F 0C 46 1D B9 7E 7C 7B 1C D6 A0 B9 0F 0D 03 5C F8 F2 D1 7B B7 9B D4 2A 45 DC F6 51 09 A2 FD 8B E6 6C 19 F1 89 90 C8 60 29 CE 62 27 20 BB B4 A4 F1 90 C6 47 C9 3A EB 44 65 B0 AE C3 20 E3 10 6E 28 E3 9C 57 E7 61 D6 70 01 53 DC 93 4D A0 C5 6C 74 80 32 2B 44 49 60 9C 22 2F A2 AC 60 C2 A5 1E 95 23 C2 DA 61 6C 60 14 8C 65 FE 97 F2 42 DE 95 3D 27 0D DE 69 7E 7E A0 30 CE FF 03 13 86 F8 E0 C0 00 03 00 00 1F 96 33 41 C0 6B 44 02 3C C0 2E 21 4F 56 B8 D8 7B 6C 73 17 20 37 62 4E 27 DE 9B 55 E4 49 35 37 FC D7 7E
Best regards,
raymar
Hi,
Hi,
You are right. Because data is encrypted it doesn't help me.
Can you encrypt it with GXDLMSDirector? Select DLMS translator and set correct settings for the Ciphering tab. Then select "Messages" tab and add this data and translate it. Add decrypted output here so I can verify it.
BR,
Mikko
Hi
Hi
--------------
1: 7E A0 8B CE FF 03 13 EE E1 E6 E7 00 E0 40 00 01 00 00 77 DB 08 4C 47 5A 67 73 78 1F D0 82 01 03 30 00 00 A4 1E AE 60 03 2D 12 96 F2 D2 86 5D 27 94 F3 59 34 7E 91 AE FF E2 BC 1F 37 C0 7B 5C 30 A6 9A 48 89 06 30 97 97 8B EF 0D 55 0B BA 69 85 D6 77 61 D9 C3 72 DF 3C 7B F3 3F A3 CB A6 F8 3D B5 5A 71 BE DF 3A 4D B2 9A 89 BC C3 A1 89 11 E6 FF F2 09 4D BF 1F 7B 33 67 A9 F9 78 F4 90 9A 62 03 4E 3D 6E FD 3B 2E 0D 56 66 44 AC 7E
<HDLC len="8A" >
<!-- Logical address:103, Physical address:127 -->
<TargetAddress Value="33FF" />
<SourceAddress Value="1" />
<!-- Notification frame. -->
<FrameType Value="13" />
<PDU>
<GeneralBlockTransfer>
<!-- Last block: False -->
<!-- Streaming: True -->
<!-- Window size: 0 -->
<BlockControl Value="40" />
<BlockNumber Value="0001" />
<BlockNumberAck Value="0000" />
<BlockData Value="DB 08 4C 47 5A 67 73 78 1F D0 82 01 03 30 00 00 A4 1E AE 60 03 2D 12 96 F2 D2 86 5D 27 94 F3 59 34 7E 91 AE FF E2 BC 1F 37 C0 7B 5C 30 A6 9A 48 89 06 30 97 97 8B EF 0D 55 0B BA 69 85 D6 77 61 D9 C3 72 DF 3C 7B F3 3F A3 CB A6 F8 3D B5 5A 71 BE DF 3A 4D B2 9A 89 BC C3 A1 89 11 E6 FF F2 09 4D BF 1F 7B 33 67 A9 F9 78 F4 90 9A 62 03 4E 3D 6E FD 3B 2E 0D 56 66" />
</GeneralBlockTransfer>
</PDU>
</HDLC>
2: 7E A0 8B CE FF 03 13 EE E1 E0 40 00 02 00 00 7A B6 DB 45 4B A6 78 15 1F 0C 46 1D B9 7E 7C 7B 1C D6 A0 B9 0F 0D 03 5C F8 F2 D1 7B B7 9B D4 2A 45 DC F6 51 09 A2 FD 8B E6 6C 19 F1 89 90 C8 60 29 CE 62 27 20 BB B4 A4 F1 90 C6 47 C9 3A EB 44 65 B0 AE C3 20 E3 10 6E 28 E3 9C 57 E7 61 D6 70 01 53 DC 93 4D A0 C5 6C 74 80 32 2B 44 49 60 9C 22 2F A2 AC 60 C2 A5 1E 95 23 C2 DA 61 6C 60 14 8C 65 FE 97 F2 42 DE 95 3D 27 0D DE 69 7E
<HDLC len="8A" >
<!-- Logical address:103, Physical address:127 -->
<TargetAddress Value="33FF" />
<SourceAddress Value="1" />
<!-- Notification frame. -->
<FrameType Value="13" />
<PDU>
<GeneralBlockTransfer>
<!-- Last block: False -->
<!-- Streaming: True -->
<!-- Window size: 0 -->
<BlockControl Value="40" />
<BlockNumber Value="0002" />
<BlockNumberAck Value="0000" />
<BlockData Value="B6 DB 45 4B A6 78 15 1F 0C 46 1D B9 7E 7C 7B 1C D6 A0 B9 0F 0D 03 5C F8 F2 D1 7B B7 9B D4 2A 45 DC F6 51 09 A2 FD 8B E6 6C 19 F1 89 90 C8 60 29 CE 62 27 20 BB B4 A4 F1 90 C6 47 C9 3A EB 44 65 B0 AE C3 20 E3 10 6E 28 E3 9C 57 E7 61 D6 70 01 53 DC 93 4D A0 C5 6C 74 80 32 2B 44 49 60 9C 22 2F A2 AC 60 C2 A5 1E 95 23 C2 DA 61 6C 60 14 8C 65 FE 97 F2 42 DE 95 3D 27 0D" />
</GeneralBlockTransfer>
</PDU>
</HDLC>
3: 7E A0 30 CE FF 03 13 86 F8 E0 C0 00 03 00 00 1F 96 33 41 C0 6B 44 02 3C C0 2E 21 4F 56 B8 D8 7B 6C 73 17 20 37 62 4E 27 DE 9B 55 E4 49 35 37 FC D7 7E
<HDLC len="2F" >
<!-- Logical address:103, Physical address:127 -->
<TargetAddress Value="33FF" />
<SourceAddress Value="1" />
<!-- Notification frame. -->
<FrameType Value="13" />
<PDU>
<GeneralBlockTransfer>
<!-- Last block: True -->
<!-- Streaming: True -->
<!-- Window size: 0 -->
<BlockControl Value="C0" />
<BlockNumber Value="0003" />
<BlockNumberAck Value="0000" />
<BlockData Value="96 33 41 C0 6B 44 02 3C C0 2E 21 4F 56 B8 D8 7B 6C 73 17 20 37 62 4E 27 DE 9B 55 E4 49 35 37" />
</GeneralBlockTransfer>
</PDU>
</HDLC>
-------------------
Please note, it is not the same sample as in the first message from me. However, the data structure is similar.
I could copy and past the three block data values into the Pdu section of the translator and get the structure like in my first request.
Thanks and best regards,
raymar
Hi Mikko
Hi Mikko
I just wanted to kindly ask whether you came to a conclusion about this different data structure I received from this smart meter. I sent you the keys by E-Mail. Is there a way I could use the Gurux.DLMS.Python software to parse also this structure?
Best regards,
raymar
Hi,
Hi,
Can you also send the client and server system title to me by email?
I can't decrypt the data without that information.
BR,
Mikko