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. Forums
  3. Correct Reading Generic Profile

Correct reading Generic Profile

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 Lotusv , 29 October, 2021
Forums
General discussion

Counter Itron SL7000
When I implement reading the GenericProfile, there are always problems.
Now with a connection, then already when reading the GenericProfile itself. Moreover, the reader.read (obj, 3) function works.
There are errors with the connection, there are already when reading the GenericProfile. In this case, the reader.read (obj, 3) function works.

Especially the problem when reading the second GenericProfile in a row (the first is often read normally).

I made delays between commands, but it didn’t work.
At the same time, GXDLMSDirector and program ACE Pilot reads everything normally and without errors.
I can’t understand what’s the matter.

Can you add a working example of reading GenericProfile in a Python project? So that it would work to read multiple GenericProfiles and no errors. Note that you may need to use the KeepAlive feature.

Profile picture for user Kurumi

Kurumi

4 years 7 months ago

Hi,

Hi,

Have you tried to read the meter using readRowsByRange method?
Read capture objects (attribute index #3) in the normal way and then use readRowsByRange to read values from the buffer.

You can use client example to read profile generic from the meter.
https://github.com/Gurux/Gurux.DLMS.Python/tree/master/Gurux.DLMS.Clien…

Note! Try to read only one day at a time with readRowsByRange. It usually helps meter if the amount of rows is small.

BR,
Mikko

Lotusv

4 years 7 months ago

This is exactly what I do!

This is exactly what I do!
obj = GXDLMSProfileGeneric (k)
#Read capture objects first.
reader.read (obj, 3)
val = reader.readRowsByRange (obj, fromDate, toDate)
The first GenericProfile is read normally, and the next register after it - the counter does not respond to readRowsByRange. At the same time, reader.read (obj, 3) runs fine.

Profile picture for user Kurumi

Kurumi

4 years 7 months ago

Hi,

Hi,

Can you read any data using readRowsByRange from your meter?

BR,
Mikko

Lotusv

4 years 7 months ago

Yes. I read one day profile

Yes. I read one day profile generic 0.0.99.1.0.255 with the readRowsByRange method - everything is fine.
Immediately I repeat the same actions for profile generic 0.0.99.2.0.255 - readRowsByRange does not return any results.

Lotusv

4 years 7 months ago

But sometimes it’s okay. And

But sometimes it’s okay. And everything works out. But this is every 3-4 readings.

Profile picture for user Kurumi

Kurumi

4 years 7 months ago

Hi,

Hi,

Do you try to read it rightaway or is there any delay? Is it possible that you need to send keep-alive to keep the connection up?

What if you try to read 0.0.99.1.0.255 multiple times in a row. Is that working?

BR,
Mikko

Lotusv

4 years 7 months ago

Пытался и сразу и с задержкой

I tried both immediately and with a delay of 1-5 seconds. Sometimes it doesn't work the same way.
Several times in a row - I will try now! Great idea!

Lotusv

4 years 7 months ago

When sequentially reading the

When sequentially reading the same 0.0.99.1.0.255 multiple times in a row, the error is the same. Occurs first on the second reading, then on the third.
I tried to read the associations every time without them.
It seems to me that the problem is not in the code and I am doing everything right. Something is wrong elsewhere.
Very often even the connection fails.
But other programs work!
I don't understand yet.

Lotusv

4 years 7 months ago

I sort of solved this problem

Maybe, I solved this problem.
After each request, we receive a response. And no answer comes.
But if I put a pause of 1 second before the reception, then I "hear" (accept) the response!
And so on each piece of data (if there is a lot of data).
After some experimentation and study of the code, I put a pause of 0.5 seconds on the first line in
GXDLMSReader.initializeConnection
and
GXDLMSReader.readDLMSPacket2

Reading 99% is excellent! In any amount of data!
What is the reason, I still do not understand.
Further I found
GXDLMSReader.waitTime=5000

What is this property and where is it used? What does 5000 mean?
I tried increasing it to 50,000 and removed all other pauses. Did not work.
Explain, please, this property in GXDLMSReader.

Also I found a pause in GXDLMSReader.initializeOpticalHead.
You practice this too ))))

Profile picture for user Kurumi

Kurumi

4 years 6 months ago

Hi,

Hi,

5000 is a wait time. That tells how AMI waits a reply from the meter. You can increase if the connection is slow and receiving a reply takes a long time.

Some meters might need a small delay after initializeConnection is called. The reason usually is that the meter's CPU is not very powerful and it's not capable answer requests so fast.

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