Skip to main content
Home
for DLMS smart meters

Main navigation

  • Home
  • Products
  • About us
  • Open Source
  • Community
  • Forum
  • Downloads
User account menu
  • Log in

Breadcrumb

  1. Home
  2. Strange Mix of Data Notificiation Vs Get Response

Strange mix of data notificiation vs get response

By andre538, 29 April, 2026
Forums
DLMSDirector

Hello Mikko,

Here is some strange case description:

- "Start receiving notifications" in Director enabled
- Push messages in meter enabled, so meter is constantly (10 retries) send same push message/data notification to the Director host via tcp/ip
-At the same time user trying to read simple data obis using the same Director instance

Result:

In some cases data notification message seems corrupted (some how mixed with data get response). Seems that it depends whether get response frame and data notification frame are in the same tcp packet or not.

A little bit of hex (this is tcp response frame from wireshark):

7e a1 0b 61 02 23 13 2c 2f e6 e7 00 0f 40 00 00 04 0c 07 ea 04 01 03 14 04 28 ff 80 00 00 02 07 01 07 02 06 12 00 28 09 06 00 00 19 09 00 ff 0f 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 05 86 ff 0f 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 2a 00 00 ff 0f 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 01 00 ff 0f 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 61 62 00 ff 0f 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 61 62 0a ff 0f 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 05 87 ff 0f 02 12 00 00 02 02 16 00 00 01 00 16 01 09 10 52 41 4f 30 31 30 32 30 30 30 30 30 30 36 31 00 09 0c 30 31 30 32 30 30 30 30 30 30 36 31 06 00 00 00 27 06 00 00 20 7f 02 02 09 06 00 00 63 62 09 ff 12 40 30 49 d5 7e
7e a0 16 61 02 23 74 8a f4 e6 e7 00 c4 01 c1 00 05 00 03 92 e9 f7 ba 7e

Get response is ok:
7E A0 16 61 02 23 74 8A F4 E6 E7 00 C4 01 C1 00 05 00 03 92 E9 F7 BA 7E
GetResponse>
<GetResponseNormal>
<!-- Priority: High, ServiceClass: Confirmed, Invoke ID: 1 -->
<InvokeIdAndPriority Value="C1" />
<Result>
<Data>
<Int32 Value="000392E9" />
</Data>
</Result>
</GetResponseNormal>
</GetResponse>

at the same time data notification is broken

7E A0 16 61 02 23 74 8A F4 E6 E7 00 C4 01 C1 00 05 00 03 92 E9 F7 BA 7E (broken till this place) 04 28 FF 80 00 00 02 07 01 07 02 06 12 00 28 09 06 00 00 19 09 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 05 86 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 2A 00 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 01 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 61 62 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 61 62 0A FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 05 87 FF 0F 02 12 00 00 02 02 16 00 00 01 00 16 01 09 10 52 41 4F 30 31 30 32 30 30 30 30 30 30 36 31 00 09 0C 30 31 30 32 30 30 30 30 30 30 36 31 06 00 00 00 27 06 00 00 20 7F 02 02 09 06 00 00 63 62 09 FF 12 40 30 49 D5 7E

Look's like the start of notification message is replaced by getresponse data,
after that ( starting with 04 28 FF 80) notification message data is ok.

Can't reproduce it for sure, but it happens sometimes.

In case of delay between get response frame and data notification frame everything is ok.

Best regards, Andre

andre538

3 weeks ago

One more example and a…

One more example and a little bit info after Director step-by-step debug.

Data notification:

7E A1 0B 61 02 23 13 2C 2F E6 E7 00 0F 40 00 00 22 0C 07 EA 04 1D 03 0F 2B 1C FF 80 00 00 02 07 01 07 02 06 12 00 28 09 06 00 00 19 09 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 05 86 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 2A 00 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 01 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 61 62 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 61 62 0A FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 05 87 FF 0F 02 12 00 00 02 02 16 00 00 01 00 16 01 09 10 52 41 4F 30 31 30 32 30 30 30 30 30 30 35 38 00 09 0C 30 31 30 32 30 30 30 30 30 30 35 38 06 00 00 20 00 06 00 00 3F FF 02 02 09 06 00 00 63 62 03 FF 12 00 03 A8 94 7E

Right after that set response:

7E A0 11 61 02 23 74 56 C4 E6 E7 00 C5 01 C1 00 50 89 7E

Seems that while parsing data set response in one thread we are working with e.Data in Events_OnReceived in another thread so e.Data is modified (data notification start is overwritten by get response)

So the result in notification tracer window is wrong combination of data notification overwriteten by set response

7E A0 11 61 02 23 74 56 C4 E6 E7 00 C5 01 C1 00 50 89 7E EA 04 1D 03 0F 2B 1C FF 80 00 00 02 07 01 07 02 06 12 00 28 09 06 00 00 19 09 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 05 86 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 2A 00 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 01 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 61 62 00 FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 61 62 0A FF 0F 02 12 00 00 02 02 16 00 00 01 00 02 06 12 00 01 09 06 00 00 60 05 87 FF 0F 02 12 00 00 02 02 16 00 00 01 00 16 01 09 10 52 41 4F 30 31 30 32 30 30 30 30 30 30 35 38 00 09 0C 30 31 30 32 30 30 30 30 30 30 35 38 06 00 00 20 00 06 00 00 3F FF 02 02 09 06 00 00 63 62 03 FF 12 00 03 A8 94 7E

andre538

2 weeks 6 days ago

Temporary workaround:…

Temporary workaround:

mainform.cs
private void Events_OnReceived(object sender, ReceiveEventArgs e)

replace
BeginInvoke(new ReceivedEventHandler(Events_OnReceived), sender, e);
with
Invoke(new ReceivedEventHandler(Events_OnReceived), sender, e);

Profile picture for user Kurumi

Kurumi

2 weeks 2 days ago

Hi Andre, We can't repeat…

Hi Andre,

We can't repeat your problem, but your idea from Invoke might be the reason for this.

BeginInvoke is replaced with Invoke for the next version if it doesn't cause problems with the tests.

BR,
Mikko

andre538

2 weeks 2 days ago

Hello Mikko, One more…

Hello Mikko,

One more workaround where BeginInvoke is not replaced with Invoke.
Here we are making a copy of e.Data, so ReceivedEvent Handler is working with a copy of data.

var copy = new ReceiveEventArgs( e.Data == null ? null : ((byte[])e.Data).Clone(), e.SenderInfo );
BeginInvoke(new ReceivedEventHandler(Events_OnReceived), sender, copy);

Some steps important to keep in mind to reproduce a problem:
- Use a meter with a fast physical interface (ethernet), tcp/ip. hdlc
- Setup push notification for a meter programming event, for example clock change. Push target address must be the same as Director workstation.

After initial push setup we are:
- use current time set from Director to change meter clock
- just after clock change meter should return push info (data notification about clock reprogramming event) (block1) and data response (clock changed ok) (block2)

If the meter itself is fast enough and connection is fast, block1 and block2 combined together one after another in one block, this cause a problem with notification translatation at Director site.

In case when time interval between block1 and block2 is at least 30 ms, they are split in different tcp/ip packets and Director works OK in this case.

Hope this helps.

Best regards, Andre

andre538

2 weeks 2 days ago

"Push target address must be…

"Push target address must be the same as Director workstation."
I mean push sent via HDLC to the Director station which is used to set clock data

  • Create new account
  • Reset your password

Hire Us!

Latest Releases

  • Wed, 05/13/2026 - 10:33
    gurux.dlms.cpp 9.0.2605.1301
  • Mon, 05/11/2026 - 11:07
    Gurux.DLMS.Go 1.0.17
  • Mon, 04/27/2026 - 08:37
    Gurux.DLMS.Go 1.0.16
  • Thu, 04/23/2026 - 13:19
    Gurux.DLMS.Net 9.0.2604.2101
  • Tue, 04/14/2026 - 11:47
    gurux.dlms.java 4.0.93

New forum topics

  • Error reading L&G Meter
  • Pass a TCP Client to GXNet
  • Australian EDMI Mk10D (Essential Energy area)
  • Strange mix of data notificiation vs get response
  • DLMS Connection
More
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin