HELP: Reading P1 port DSRM 3.0 (7 bits) with Wemos D1

Hello,

I am struggling a few weeks now to get my P1 smart energy meter readings into variables so I can play/calculate with them with a Wemos D1 (ESP8266)

I found a lot of scripts which only work for DSRM 4.0 meters (8 bits). The only script I got working makes use of a CHAR (not a char array !?). The data is read correct however I cannot find a way to extract the values out of this message.

#include <SoftwareSerial.h>

// Vars to store meter readings
long mEVLT = 0; //Consumption Electrical Energy - Low
long mEVHT = 0; //Consumption Electrical Energy - High
long mETLT = 0; //Feedback Electrical Energy - Low
long mETHT = 0; //Feedback Electrical Energy - High
long mEAV = 0;  //Actual Consumption Electrical Energy
long mEAT = 0;  //Actual Feedback Electrical Energy
float mG = 0;   //Gas

#define SERIAL_RX     D8  // pin for SoftwareSerial RX
#define BUFSIZE 75 // longest normal line is 47 char (+3 for \r\n\0) (can be 64)

SoftwareSerial mySerial(SERIAL_RX ,-1, false, BUFSIZE);  // (RX, TX, inverted, buffer)
 
char message; // inkomende seriele data (byte)

void setup() 
{
  Serial.begin(115200);           // Open serial communications and wait for port to open
  while (!Serial);                // wait for serial port to connect. Needed for native USB port only
  mySerial.begin(9600);           // set the data rate for the SoftwareSerial port
}

void loop() 
{
  if (mySerial.available()) {
    message = mySerial.read();    // Read serial string in message
    message &= ~(1 << 7);         // forces 7th bit of c to be 0.  all other bits left alone.
    char inChar = (char)message;  // makes a new byte from c
    Serial.print(message);
  }
}

The serial monitor result seems to be fine:

/KMP5 KA6U001550832611

0-0:96.1.1(204B413655303031353530383332363131)
1-0:1.8.1(11821.976kWh)
1-0:1.8.2(12712.276
kWh)
1-0:2.8.1(00006.794kWh)
1-0:2.8.2(00014.942
kWh)
0-0:96.14.0(0001)
1-0:1.7.0(0000.56kW)
1-0:2.7.0(0000.00
kW)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303039303031313037353039383131)
0-1:24.3.0(170524210000)(08)(60)(1)(0-1:24.2.1)(m3)
(10499.897)
!

However if a add an additional instruction after Serial.print(message); the message is presented in single characters.

Question 1: How can I fill variables as declared with the values from my serial message??
Question 2: What is the difference between a Char and a Char array and can this help me??

PS the Wemos D1 does not support sscanf-function.

MANY MANY MANY thanks for your help!!