Skip to main content
Home
for DLMS smart meters
Open source solutions for DLMS smart metering

Main navigation

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

Breadcrumb

  1. Home
  2. Push Interval Write Issue

Push Interval Write Issue

Forum Rules

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.

By Bhaumik , 5 August, 2022
Forums
DLMSDirector

Hi Mikko,

I am trying to write a 15-minute time interval into the Single Action Schedule Push object from GXDLMSDirector.

The meter is IS15959-2 supported.

The following interval will be set into meter successfully.

*-*-* 00:00:00
*-*-* 12:00:00
*-*-* 18:00:00

But, When we are trying to set the following interval, we are getting device reports a inconsistent class or object.
*-*-* *:15:00
*-*-* *:30:00

Where as 15 min time interval can be set from the Kalki.io tool successfully.

Can you please check why this behaviour happened with GXDLMSDirector ?
Let me know if any configuration needs to be update.

Regards,
Bhaumik

Profile picture for user Kurumi

Kurumi

3 years 10 months ago

Hi Bhaumik,

Hi Bhaumik,

Can you add 15 min hex trace from Kalki and GXDLMSDirector so I can compare them?

BR,
Mikko

Bhaumik

3 years 10 months ago

Hi Mikko,

Hi Mikko,

Please find the data from the Kalki tool.

C1 01 C1 00 16 00 00 0F 00 04 FF 04 00 01 06 02 02 09 04 FF 00 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 0F 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 1E 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 2D 00 00 09 05 FF FF FF FF FF 02 02 09 04 00 00 00 00 09 05 00 00 00 00 00 02 02 09 04 00 00 00 00 09 05 00 00 00 00 00

<SetRequest>
<SetRequestNormal>
# Priority: High, ServiceClass: Confirmed, Invoke ID: 1
<InvokeIdAndPriority Value="C1" />
<AttributeDescriptor>
# ActionSchedule
<ClassId Value="0016" />
# 0.0.15.0.4.255
<InstanceId Value="00000F0004FF" />
# Execution Time
<AttributeId Value="04" />
</AttributeDescriptor>
<Value>
<Array Qty="06" >
<Structure Qty="02" >
# *:00:00
<OctetString Value="FF000000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:15:00
<OctetString Value="FF0F0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:30:00
<OctetString Value="FF1E0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:45:00
<OctetString Value="FF2D0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# 00:00:00
<OctetString Value="00000000" />
# *-*-*
<OctetString Value="0000000000" />
</Structure>
<Structure Qty="02" >
# 00:00:00
<OctetString Value="00000000" />
# *-*-*
<OctetString Value="0000000000" />
</Structure>
</Array>
</Value>
</SetRequestNormal>
</SetRequest>
------------------------------------------------
Following are the data from GXDLMSDirector

<!-- Decrypt data: C1 01 C1 00 16 00 00 0F 00 04 FF 04 00 01 03 02 02 09 04 FF 0F 00 FF 09 05 FF FF FF FF FF 02 02 09 04 FF 1E 00 FF 09 05 FF FF FF FF FF 02 02 09 04 FF 2D 00 FF 09 05 FF FF FF FF FF
<SetRequest>
<SetRequestNormal>
# Priority: High, ServiceClass: Confirmed, Invoke ID: 1
<InvokeIdAndPriority Value="C1" />
<AttributeDescriptor>
# ActionSchedule
<ClassId Value="0016" />
# 0.0.15.0.4.255
<InstanceId Value="00000F0004FF" />
# Execution Time
<AttributeId Value="04" />
</AttributeDescriptor>
<Value>
<Array Qty="03" >
<Structure Qty="02" >
# *:15:00
<OctetString Value="FF0F00FF" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:30:00
<OctetString Value="FF1E00FF" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:45:00
<OctetString Value="FF2D00FF" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
</Array>
</Value>
</SetRequestNormal>
</SetRequest>

Regards
Bhaumik

Profile picture for user Kurumi

Kurumi

3 years 10 months ago

Hi Bhaumik,

Hi Bhaumik,

The only difference is in the content. GXDLMSDirector sets hundreds to 0xFF. That means ignore. Kalki sets them to zero. You told earlier in this topic that you can write: *-*-* 00:00:00, so I don't believe that is the issue here.

Now you write with GXDLMSDirector:
*-*-* *:15:00, *-*-* *:30:00 and *-*-* *:45:00
With Kalki tool you write:
*-*-* *:00:00, *-*-* *:15:00, *-*-* *:30:00, *-*-* *:45:00, *-*-* 0:00:00 and *-*-* 0:00:00.

Try to write the same values.
You can also try to write the *-*-* 00:00:00 as the first value with GXDLMSDirector.

BR,
Mikko

Bhaumik

3 years 9 months ago

Hi Mikko,

Hi Mikko,

I have set values and read the same using Director. Please check ( Last entry in structure) the following parsing from Director.
Can you please provide suggestion?

===========Set
14:55:20
<HDLC len="78" >
<TargetAddress Value="1" />
<SourceAddress Value="30" />
<FrameType Value="DC" />
<PDU>
<!-- Invocation Counter: 1500084457 -->
<!-- Decrypt data: C1 01 C1 00 16 00 00 0F 00 04 FF 04 00 01 05 02 02 09 04 FF 00 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 0F 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 1E 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 2D 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 32 00 FF 09 05 FF FF FF FF FF
<SetRequest>
<SetRequestNormal>
# Priority: High, ServiceClass: Confirmed, Invoke ID: 1
<InvokeIdAndPriority Value="C1" />
<AttributeDescriptor>
# ActionSchedule
<ClassId Value="0016" />
# 0.0.15.0.4.255
<InstanceId Value="00000F0004FF" />
# Execution Time
<AttributeId Value="04" />
</AttributeDescriptor>
<Value>
<Array Qty="05" >
<Structure Qty="02" >
# *:00:00
<OctetString Value="FF000000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:15:00
<OctetString Value="FF0F0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:30:00
<OctetString Value="FF1E0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:45:00
<OctetString Value="FF2D0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:50:00
<OctetString Value="FF3200FF" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
</Array>
</Value>
</SetRequestNormal>
</SetRequest>
-->
</PDU>
</HDLC>

===============Read
14:55:20
<HDLC len="6F" >
<TargetAddress Value="30" />
<SourceAddress Value="1" />
<FrameType Value="1E" />
<PDU>
<!-- Invocation Counter: 177 -->
<!-- Decrypt data: C4 01 C1 00 01 05 02 02 09 04 FF 00 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 0F 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 1E 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 2D 00 00 09 05 FF FF FF FF FF 02 02 09 04 00 00 00 00 09 05 00 00 00 00 00
<GetResponse>
<GetResponseNormal>
# Priority: High, ServiceClass: Confirmed, Invoke ID: 1
<InvokeIdAndPriority Value="C1" />
<Result>
<Data>
<Array Qty="05" >
<Structure Qty="02" >
# *:00:00
<OctetString Value="FF000000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:15:00
<OctetString Value="FF0F0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:30:00
<OctetString Value="FF1E0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:45:00
<OctetString Value="FF2D0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# 00:00:00
<OctetString Value="00000000" />
# *-*-*
<OctetString Value="0000000000" />
</Structure>
</Array>
</Data>
</Result>
</GetResponseNormal>
</GetResponse>
-->
</PDU>
</HDLC>

Bhaumik

3 years 9 months ago

Hi Mikko,

Hi Mikko,

Is there any way to convert FF into 00?

Regards
Bhaumik

Profile picture for user Kurumi

Kurumi

3 years 9 months ago

Hi Bhaumik,

Hi Bhaumik,

The only difference now is that you write five entries with the Kalki tool you write six entries. Try to add extra *-*-* 0:00:00.
Then the entries are the same.

*-*-* *:00:00, *-*-* *:15:00, *-*-* *:30:00, *-*-* *:45:00, *-*-* 0:00:00 and *-*-* 0:00:00.

You can convert FF to 00 if you replace asterisks with zero.

BR,
Mikko

Bhaumik

3 years 9 months ago

Hi Mikko,

Hi Mikko,

When I am trying to write *-*-* *:15:00, *-*-* *:30:00, *-*-* *:45:00 into meter from GXDLMSDirector,
It is successfully written, but when read the same, got *-*-* 00:00:00 for all 3 entries.

If I write *-*-* 00:00:00, then it is successfully written.

Profile picture for user Kurumi

Kurumi

3 years 9 months ago

Hi,

Hi,

You need to ask if there is a firmware update available for the meter. I hope it will solve your problem.

BR,
Mikko

Bhaumik

3 years 9 months ago

Hi Mikko,

Hi Mikko,

As per your comments, there should be no issue with the FF value.

One meter manufacturer works well with GXDLMSDirector as well as Kalki, whereas another manufacturer
works only with Kalki.

Can you make a change in the library to sets hundreds to either 0xFF or 0x00?
So we can have support for both formats in Gurux Library.

Or is there any way to set that 0x00?

Thanks
Bhaumik

Profile picture for user Kurumi

Kurumi

3 years 9 months ago

Hi Bhaumik,

Hi Bhaumik,

You can do it like this:

GXDateTime dt = new GXDateTime("*-*-* *:15:00");
gXDateTime.Skip &= ~DateTimeSkips.Ms;

Modifying the date-time parser will take a long time. Testing all different localizations will take so much time, that it's easier if you can use the source code above.

BR,
Mikko

  • Create new account
  • Reset your password

Hire Us!

Latest Releases

  • Tue, 06/09/2026 - 11:16
    gurux.dlms.java 4.0.95
  • Tue, 06/09/2026 - 10:03
    Gurux.DLMS.Python 1.0.199
  • Mon, 06/08/2026 - 13:39
    gurux.dlms.cpp 9.0.2606.0801
  • Mon, 06/01/2026 - 10:15
    gurux.dlms.cpp 9.0.2606.0101
  • Thu, 05/28/2026 - 16:06
    gurux.dlms.java 4.0.94

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

Who's new

  • Tuanhgg
  • Adel
  • charnon
  • Paddles
  • Miguel Ángel
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin