By jonasfoyth, 12 February, 2020 Forums Gurux.DLMS Hello, I create a test to read a Profile generic of a meter (Python), but the result of read is a row of zeroes. The script : def readProfile(reader, count=24): rows = [] try: loadProfile = reader.client.settings.objects.findByLN(ObjectType.PROFILE_GENERIC, '1.0.99.1.0.255') captureObjects = reader.read(loadProfile, 3) capturePeriod = reader.read(loadProfile, 4) sortMethod = reader.read(loadProfile, 5) sortObject = reader.read(loadProfile, 6) entriesInUse = reader.read(loadProfile, 7) entries = reader.read(loadProfile, 8) BeginOfreadedEntries = entriesInUse - count - 1 rows = reader.readRowsByEntry(loadProfile, BeginOfreadedEntries, count) except Exception as e: print(e) return rows Any alternative way to read a Profile Generic by entry? Hi, Hi, All meters don't implement readRowsByEntry. You can also try with readRowsByRange. Try to read one row. Use values 1 and 1 reader.readRowsByEntry(loadProfile, 1, 1) The start index is usually one-based. There are some meters that are using zero for first row and for this reason zero must accept for start index. BR, Mikko I have tried use Read by I have tried use Read by range, read all Profile buffer (reader.read(loadProfile, 2)) and the result is the same. For compare, i use GXDLMSDirector and read the same thing and works, using the same security configuration: self.media = GXNet(NetworkType.UDP, METER_IP, PORT) self.client = GXDLMSClient(True) self.client.interfaceType = InterfaceType.WRAPPER self.client.serverAddress = int(1) self.client.authentication = Authentication['LOW'] self.client.password = 'xxxxx' self.client.useLogicalNameReferencing = True Reading first 'one row' the result is the same too. The colums of row are: [date, eventid, event_description, OBIS1, OBIS2, OBIS3, OBIS4] for all types of read, the result are: row: [01/01 (date wrong) hour ok, event_id ok, event_description a number, 0 (not change), 0 (not change) , 0 (not change),0 (not change)] The request made by the The request made by the readbyentry function is correct, the meter responds the information contained in meter. The image attached shows the analysis made via wireshark (left) and the result of program (right). It's possible be a bug? Image Hi, Hi, There was an issue with register scaler. I added issue from this. http://gurux.fi/node/14848 This is now fixed and a new version is released. BR, Mikko Log in or register to post comments
Hi, Hi, All meters don't implement readRowsByEntry. You can also try with readRowsByRange. Try to read one row. Use values 1 and 1 reader.readRowsByEntry(loadProfile, 1, 1) The start index is usually one-based. There are some meters that are using zero for first row and for this reason zero must accept for start index. BR, Mikko
I have tried use Read by I have tried use Read by range, read all Profile buffer (reader.read(loadProfile, 2)) and the result is the same. For compare, i use GXDLMSDirector and read the same thing and works, using the same security configuration: self.media = GXNet(NetworkType.UDP, METER_IP, PORT) self.client = GXDLMSClient(True) self.client.interfaceType = InterfaceType.WRAPPER self.client.serverAddress = int(1) self.client.authentication = Authentication['LOW'] self.client.password = 'xxxxx' self.client.useLogicalNameReferencing = True Reading first 'one row' the result is the same too. The colums of row are: [date, eventid, event_description, OBIS1, OBIS2, OBIS3, OBIS4] for all types of read, the result are: row: [01/01 (date wrong) hour ok, event_id ok, event_description a number, 0 (not change), 0 (not change) , 0 (not change),0 (not change)]
The request made by the The request made by the readbyentry function is correct, the meter responds the information contained in meter. The image attached shows the analysis made via wireshark (left) and the result of program (right). It's possible be a bug? Image
Hi, Hi, There was an issue with register scaler. I added issue from this. http://gurux.fi/node/14848 This is now fixed and a new version is released. BR, Mikko
Hi,
Hi,
All meters don't implement readRowsByEntry. You can also try with readRowsByRange.
Try to read one row. Use values 1 and 1
reader.readRowsByEntry(loadProfile, 1, 1)
The start index is usually one-based. There are some meters that are using zero for first row and for this reason zero must accept for start index.
BR,
Mikko
I have tried use Read by
I have tried use Read by range, read all Profile buffer (reader.read(loadProfile, 2)) and the result is the same.
For compare, i use GXDLMSDirector and read the same thing and works, using the same security configuration:
self.media = GXNet(NetworkType.UDP, METER_IP, PORT)
self.client = GXDLMSClient(True)
self.client.interfaceType = InterfaceType.WRAPPER
self.client.serverAddress = int(1)
self.client.authentication = Authentication['LOW']
self.client.password = 'xxxxx'
self.client.useLogicalNameReferencing = True
Reading first 'one row' the result is the same too.
The colums of row are: [date, eventid, event_description, OBIS1, OBIS2, OBIS3, OBIS4]
for all types of read, the result are:
row: [01/01 (date wrong) hour ok, event_id ok, event_description a number, 0 (not change), 0 (not change) , 0 (not change),0 (not change)]
The request made by the
The request made by the readbyentry function is correct, the meter responds the information contained in meter. The image attached shows the analysis made via wireshark (left) and the result of program (right). It's possible be a bug?
Hi,
Hi,
There was an issue with register scaler. I added issue from this.
http://gurux.fi/node/14848
This is now fixed and a new version is released.
BR,
Mikko