Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Print raw-format of a telegram #14

Open
mrWheel opened this issue Sep 19, 2018 · 4 comments
Open

Print raw-format of a telegram #14

mrWheel opened this issue Sep 19, 2018 · 4 comments

Comments

@mrWheel
Copy link

mrWheel commented Sep 19, 2018

How do I use this :

    /**
     * Returns the data read so far.
     */
    const String &raw() {
      return buffer;
    }

If it should do what I think...
It would be very nice to be able to print the raw format of the telegram!

@matthijskooijman
Copy link
Owner

IIRC, you should be able to do:

  if (reader.available()) {
    Serial.println("Message:");
    Serial.println(reader.raw());
    MyData data;
    String err;
    if (reader.parse(&data, &err)) {
      // Parse succesful, print result
      data.applyEach(Printer());
    } else {
      // Parser error, print error
      Serial.println(err);
    }
  }

This is taken from the read.ino example, but with the first two printlns added. IOW, raw() returns the data read so far, but once you call parse(), the buffer is cleared again. So if you retrieve the buffer when available() is true, but before calling parse(), you should get the complete message. Note that the buffer does not include the leading / and the trailing checksum.

@matthijskooijman
Copy link
Owner

@mrWheel, could you confirm if my suggestion worked?

@matthijskooijman
Copy link
Owner

@mrWheel thanks for your response. HOwever, AFAICS your code does not print the raw, unparsed message which was the subject of this issue :-)

I would want to close this issue, but ideally by adding the raw printing to the read.ino example. But I only want that after making sure it actually works (and I do not have a DSMR-attached setup currently to test with, so I was hoping you could confirm).

@mrWheel
Copy link
Author

mrWheel commented May 5, 2019

@matthijskooijman
Yes, the code is OK!

if (reader.available()) {
    Debugln("Message:");
    Debugln(reader.raw());
    MyData data;
    String err;
    if (reader.parse(&data, &err)) {
      // Parse succesful, print result
      data.applyEach(Printer());
    } else {
      // Parser error, print error
      Debugln(err);
    }
}

Output:

Message:
identification: XMX5LGBBLB2410065887
p1_version: 50
timestamp: 160611025601S
equipment_id: 4530303336303033373839373339363136
energy_delivered_tariff1: 50370.91kWh
energy_delivered_tariff2: 48518.44kWh
energy_returned_tariff1: 28885.50kWh
energy_returned_tariff2: 38127.31kWh
electricity_tariff: 0002
power_delivered: 168.89kW
power_returned: 71.90kW
voltage_l1: 241.00V
voltage_l2: 235.00V
voltage_l3: 237.00V
current_l1: 0A
current_l2: 1A
current_l3: 0A
power_delivered_l1: 36.30kW
power_delivered_l2: 83.83kW
power_delivered_l3: 48.76kW
power_returned_l1: 40.70kW
power_returned_l2: 25.75kW
power_returned_l3: 5.45kW
gas_device_type: 3
gas_equipment_id: 4730303339303031363532303530323136
gas_delivered: 4870.24m3
Message:
XMX5LGBBLB2410065887

1-3:0.2.8(50)
0-0:1.0.0(160611025701S)
0-0:96.1.1(4530303336303033373839373339363136)
1-0:1.8.1(050370.934*kWh)
1-0:1.8.2(048518.441*kWh)
1-0:2.8.1(028885.498*kWh)
1-0:2.8.2(038127.328*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(121.25*kW)
1-0:2.7.0(077.78*kW)
0-0:96.7.21(00010)
0-0:96.7.9(00000)
1-0:99.97.0(0)(0-0:96.7.19)
1-0:32.32.0(00002)
1-0:52.32.0(00003)
1-0:72.32.0(00003)
1-0:32.36.0(00000)
1-0:52.36.0(00000)
1-0:72.36.0(00000)
0-0:96.13.0()
1-0:32.7.0(241.0*V)
1-0:52.7.0(239.0*V)
1-0:72.7.0(237.0*V)
1-0:31.7.0(002*A)
1-0:51.7.0(003*A)
1-0:71.7.0(000*A)
1-0:21.7.0(59.400*kW)
1-0:41.7.0(35.350*kW)
1-0:61.7.0(26.500*kW)
1-0:22.7.0(69.300*kW)
1-0:42.7.0(04.120*kW)
1-0:62.7.0(04.360*kW)
0-1:24.1.0(003)
0-1:96.1.0(4730303339303031363532303530323136)
0-1:24.2.1(160611025701S)(04870.238*m3)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants