It's good if you can access your meter. Please, let me know if you have any questions or problems.
Reading ACE6000 historical data is not implement in standard way and that might (will) cause some problems.
You will find more info from Forum.
BR,
All meters do not use same OBIS codes. This should be the idea, but they are not always used with older meters.
Can you check OBIS code from the manufacturer?
Buf if you want to read Ch. 1 Sum Li Active power+ (QI+QIV) Time integral 1 Rate 1 (0 is total),
you should use OBIS code : 1.1.3.8.1.255
Usually you can use readByRange -method. This is not working on ACE6000 because
it's using non standard way.
Can you read all data and then filter non needed rows?
ACE6000 returns non-standard data for Profile Generic objects. There is a document available that describes those columns. LogicalDevice_5.35_OBIS_SL761_Dec8-09.pdf
You should ask this doc from the vendor.
Attribute 3: capture_objects
Here below, the details of each index in the array:
Index 1 (EOBStatus): Obis_code = 1;0;98;134;1;255, Class_id = 4, Attribute_index = 0, Data_index = 0
Index 2 (AllTotalEnergies): Obis_code = 0;0;98;133;2;255, Class_id = 7, Attribute_index = 2, Data_index = 0
There are several structures on the data buffer. Each structure is shown as own object array.
You can access right data something like this.
object[] arr = data as object[];
(arr[0] as object[])[0].
If I remember right, you can find date time from that column. It's shown on byte array, so you must convert it to the date time using GXDLMSClient.ChangeType -method.
GXDLMSProfileGeneric it = new GXDLMSProfileGeneric("0.1.98.1.0.255");
Object data = comm.Read(it, 3);
data = comm.Read(it, 2);
object[] arr = data as object[];
Console.WriteLine((arr[0] as object[])[0]);
Have another question for you when sending a SNRM Request 7E A0 08 02 23 03 93 3E 74 7E
Meter Reply with 7E A0 23 03 00 02 00 23 73 C0 48 81 80 14 05 02 00 80 06 02 00 80 07 04 00 00 00 01 08 04 00 00 00 01 CE 6A 7E etc........
Is there any kind of documentation that explain what this mean.
Read ACE6000 Meters
Hi,
You can try access your meter with those settings:
GXDLMSClient client_0 = new GXDLMSClient();
client_0.UseLogicalNameReferencing = true;
client_0.InterfaceType = InterfaceType.HDLC;
client_0.ClientAddress = 1;
client_0.ServerAddress = GXDLMSClient.GetServerAddress(1, 0x7F);
client_0.Authentication = Authentication.Low;
client_0.Password = "ABCDEFGH";
BR,
Mikko
Hi Mikko
Hi Mikko
Thanks for the reply.
The ACE6000 has Sparklet Modem and on certain APN.
I can connect to the APN and have the IP address of the meter.
So where do i specify this IP address of the meter and the Port.
If there is documentation please direct me to it.
Regards
Keenan
Read ACE6000 Meters
Hi,
Download GXDLMSDirector and try to read your meter with it first.
You can get initial settings from here:
http://www.gurux.fi/GXDLMSDirectorExample
BR,
Mikko
Hi Mikko
Hi Mikko
I can connect to the meter and read the meter however i am not sure where it stores the readings.
See below logs
02:16:10 PM Received data
7E A0 19 03 00 02 00 23 7E 38 AC E6 E7 00 C4 01 81 00 02 02 0F 00 16 06 59 2D 7E
02:16:10 PM Read object type Register index: 2
7E A0 1A 02 23 03 16 53 05 E6 E6 00 C0 01 81 00 03 01 01 09 25 00 FF 02 00 5F 07 7E
02:16:11 PM Received data
7E A0 18 03 00 02 00 23 90 9D 3D E6 E7 00 C4 01 81 00 06 00 00 00 00 7B DF 7E
02:16:11 PM Read object type Register index: 3
7E A0 1A 02 23 03 38 2F CD E6 E6 00 C0 01 81 00 03 01 01 09 26 00 FF 03 00 4B 03 7E
02:16:12 PM Received data
7E A0 19 03 00 02 00 23 B2 58 A0 E6 E7 00 C4 01 81 00 02 02 0F 02 16 1C 3A 27 7E
02:16:12 PM Read object type Register index: 2
7E A0 1A 02 23 03 5A 3B 8D E6 E6 00 C0 01 81 00 03 01 01 09 26 00 FF 02 00 93 1A 7E
02:16:13 PM Received data
7E A0 18 03 00 02 00 23 D4 BD 39 E6 E7 00 C4 01 81 00 06 00 00 00 00 7B DF 7E
02:16:53 PM Send Keep Alive
However i would like to im build a small tool just to read the load profile data and billing data.
Regards
Read ACE6000 Meters
Hi,
Easiest way to start is you download Gurux.DLMS.Client.Example.Net client example from Github and start with that.
https://github.com/gurux/Gurux.DLMS.net
You can give ip address etc. as parameters something like this.
/m=ace /h=address /p=IP port
BR,
Mikko
Hi Mikko
Hi Mikko
I am still not sure where to add the parameters
/m=ace /h=address /p=IP port
PLease assist.
Regards
Hi Mikko
Hi Mikko
I got it right i see it accept it as arguments from the cmd.
Regards
Read ACE6000 Meters
Hi,
It's good if you can access your meter. Please, let me know if you have any questions or problems.
Reading ACE6000 historical data is not implement in standard way and that might (will) cause some problems.
You will find more info from Forum.
BR,
Mikko
Read ACE6000 Meters
Hi,
You also must set authentication to Low and set password.
Otherwise you do not see all the data.
BR,
Mikko
Hi Mikko
Hi Mikko
Thanks for the above.
Another question i have downloaded the OBIS code file name OBIS list v2.3_GK051026
if i for instance look at Active power + (QI + QIV)
This is what i get from the file.
com 1 b 1 255 255 255 S Li Active power+ (QI+QIV)
This is what i get from the XML file that example code generate.
<LogicalName>1.1.3.8.1.255</LogicalName>
<Description>Ch. 1 Sum Li Active power+ (QI+QIV) Time integral 1 Rate 1 (0 is total)</Description>
How do you obtain the one from another.
Regards
OBIS codes
Hi,
All meters do not use same OBIS codes. This should be the idea, but they are not always used with older meters.
Can you check OBIS code from the manufacturer?
Buf if you want to read Ch. 1 Sum Li Active power+ (QI+QIV) Time integral 1 Rate 1 (0 is total),
you should use OBIS code : 1.1.3.8.1.255
BR,
Mikko
Thanks Mikko
Thanks Mikko
I have noticed that yes.
Do you perhaps have an example of how to read load profile by range i know the obis code.
Regards
Read ACE6000 Meters
Hi,
Usually you can use readByRange -method. This is not working on ACE6000 because
it's using non standard way.
Can you read all data and then filter non needed rows?
BR,
Mikko
Hi Mikko
Hi Mikko
Thanks do you have an example to read the entire register.
if i try and read the specific obis code i get a Read-Write denied error
Code
GXDLMSSecureClient dlms = new GXDLMSSecureClient();
dlms.CustomObisCodes = man.ObisCodes;
comm = new GXCommunicatation(dlms, media, iec, auth, pw);
comm.Trace = trace;
comm.InitializeConnection(man);
GXDLMSObjectCollection objects = null;
GXDLMSRegister it = new GXDLMSRegister("1.1.1.29.0.255");
Object val_ = comm.Read(it, 3);
Console.WriteLine("This is value 1: " + val_);
// Value
val_ = comm.Read(it, 2);
Console.WriteLine("This is value 2: " + val_);
// Obis Code
val_ = comm.Read(it, 1);
Console.WriteLine("This is value 3: " + val_);
Hi Mikko
Hi Mikko
I got the above working.
However i would like to understand the profile generic register.
When reading a specific profile generic register obis code 1.0.98.134.1.255 it returns an buffer of data how do i parse out the data from the buffer.
Regards
Read ACE6000 Meters
Hi,
ACE6000 returns non-standard data for Profile Generic objects. There is a document available that describes those columns. LogicalDevice_5.35_OBIS_SL761_Dec8-09.pdf
You should ask this doc from the vendor.
BR,
Mikko
Hi Mikko
Hi Mikko
I have the document however i am still confused getting the data out.
Example Reading Obis code 0;1;98;1;0;255
Contain buffer
Attribute 2: buffer
Access rights (clients)
Attribute description
SEQUENCE OF // 1 elements
{
SEQUENCE // 66 elements
{
EOBStatus (Att. Id: 0, Abs. Number: 2)
AllTotalEnergies (Att. Id: 2, Abs. Number: 3)
AllEnergyRates (Att. Id: 2, Abs. Number: 7)
}
Attribute 3: capture_objects
Here below, the details of each index in the array:
Index 1 (EOBStatus): Obis_code = 1;0;98;134;1;255, Class_id = 4, Attribute_index = 0, Data_index = 0
Index 2 (AllTotalEnergies): Obis_code = 0;0;98;133;2;255, Class_id = 7, Attribute_index = 2, Data_index = 0
How do i get the All total energies.
Thanks for your assistance.
Regards
Read ACE6000 Meters
Hi,
There are several structures on the data buffer. Each structure is shown as own object array.
You can access right data something like this.
object[] arr = data as object[];
(arr[0] as object[])[0].
If I remember right, you can find date time from that column. It's shown on byte array, so you must convert it to the date time using GXDLMSClient.ChangeType -method.
BR,
Mikko
Hi Mikko
Hi Mikko
Do you perhaps have an example.
I have tried the following now.
GXDLMSProfileGeneric it = new GXDLMSProfileGeneric("0.1.98.1.0.255");
Object val__ = comm.Read(it, 2);
object[] arr = val__ as object[];
Console.WriteLine(arr[0]);
It give the following.
Read capture ojects first.
Regards
Read ACE6000 Meters
Hi,
This error means that you should read attribute index (captured columns first).
Read columns and then you can read buffer.
Like this.
Read(it, 3);
Read(it, 2);
BR,
Mikko
Hi Mikko
Hi Mikko
Apologies for all the questions.
I have done as you mentioned above code:
GXDLMSProfileGeneric it = new GXDLMSProfileGeneric("0.1.98.1.0.255");
Object data = comm.Read(it, 3);
data = comm.Read(it, 2);
object[] arr = data as object[];
Console.WriteLine((arr[0] as object[])[0]);
However this is giving me this.
Gives me System.Object[].
Regards
Hi Mikko
Hi Mikko
Do you perhaps have some documentation that can assist me with this or point me in the right direction please.
Regards
Keenan George
Hi Mikko
Hi Mikko
Did you perhaps had a change to look at my request above.
Regards
Read ACE6000 Meters
Hi Keenan George,
Sorry for slow reply. It's summer holiday season on Finland. :-)
You should ask this doc from Itron.
Inside of that object array is received data. I have answer for this question here:
http://www.gurux.fi/node/4970
You will get data from inside of that Object array.
BR,
Mikko
Hi Mikko
Hi Mikko
No Worries Hope you enjoying the Holiday.
Have another question for you when sending a SNRM Request 7E A0 08 02 23 03 93 3E 74 7E
Meter Reply with 7E A0 23 03 00 02 00 23 73 C0 48 81 80 14 05 02 00 80 06 02 00 80 07 04 00 00 00 01 08 04 00 00 00 01 CE 6A 7E etc........
Is there any kind of documentation that explain what this mean.
Regards
SNRM
Hi,
This is described on standard IEC 62056-46 Data link layer using HDLC protocol.
There is RX and TX size and TX and RX Windows count.
BR,
Mikko