SML Protokoll identifiziren und zerlegen

Das entspricht nicht der Definition.
Die Datei fängt 4Byte ESC-Code gefolgt von 4byte Startsequenz an.
Das Ende ist durch 4Byte ESC-Code und 1Byte Endekennung, gefolgt von 1Byte Angabe der Füllbytes VOR der Endekennung und der 2Byte CRC16 für den Inhalt zwischen Startsequenz und ESC-Kennung am Schluß gekennzeichnet.

Dann hast Du was falsch gemacht :slight_smile:

Im der vom BSI herausgegebenen Spezifikation zur Schnittstelle steht drin, wie jeder Satz aufgebaut ist. Schaust Du IR Schnittstelle von Stromzähler auslesen - #5 by my_xy_projekt

Und ich kann Dir schon jetzt ankündigen, das Du irgendwann nicht das heraus bekommst, was Du willst.
Denn in den Sequenzen sind nicht nur die OBIS-Codes sondern u.a. auch die Transaktions-IDs drin. Die werden fortlaufend hoch gezählt.
Die tatsächliche Länge der ID versteckt sich in der ID selbst.
Bei Dir unter anderem in der ersten Sequenz:

1b 1b 1b 1b 
01 01 01 01 
76 
05 00 a0 d9 b6 // <<TID

Deine TID ist jetzt 5 Bytes lang, incl. dem Byte in dem die Länge steht. (05)
Der Zähler wird mit jeder Message weiter gezählt. Zweite Msg:

76 
05 00 a0 d9 b7  // <<TID

Nach einem

05 FF FF FF FF

folgt
06 00 00 00 00 01

Damit ist das parsen auf die Länge kaputt.

Also vielleicht doch noch mal darüber schaun....