<div dir="ltr"><div><div><div><div><div><div><div><div>Hallo,<br><br></div>ich hatte hier in dieser Runde im Januar diesen Jahres mein Ausleseproblem mit meinem smarten Drehstromzähler geschildert. Ich hatte dann das Issue #233 aufgemacht und dann wieder geschlossen, nachdem ich eine vzlogger-Konfiguration gefunden hatte, die mir meine gewünschten Werte lieferte.<br><br></div>Trotz weiterer Erkenntnisse und Optimierungsversuche ist es mir bis heute nicht gelungen das Zählertelegramm ohne Fehlermeldungen zu lesen. Ich bekomme pro Lesezyklus fünf bis acht "binary character"-Fehlereinträge im Log. Das Log wird dann, auch bei verbosity 0, über die Zeit sehr groß.<br><br></div>Da ich inzwischen sehr viele vzlogger-Konfigurationsvarianten getestet habe, komme ich zum Schluss, dass vzlogger meinen Zähler nicht korrekt parsen kann. Ich hoffe mit Eurer Hilfe den Grund dafür zu finden.<br><br></div>Allgemeine Infos zum Zähler:<ul><li>Mein SmartMeter ist ein EMH-ITZ mit der Bezeichnung "ITZ W1E8-00-STK-D3-0000-N50/K"</li><li>Der Zähler sendet über die optische D0-Datenschnittstelle das OBIS-Protokoll</li><li>Laut Netzbetreiber ist der Zähler angeblich fest auf 4800 Bd eingestellt</li><li>Der Zähler ist ein sog. Pull-Zähler, d.h. er sendet nur auf Anforderung ein Datentelegramm</li><li>Die Anforderungssequenz erfordert zwingend die Eigentumsnummer 420818: /?420818!<CR/LF></li><li><span style="font-size:10pt;font-family:"arial",sans-serif">Der
Zähler gibt grundsätzlich eine Eingabe als Antwort sofort wieder zurück (Echo)</span></li></ul></div><div>Meine bisherigen Konfigurationserkenntnisse:<br></div><ul><li>Ich kann den Zähler mit Übertragungsraten von 300 Bd bis 9600 Bd erfolgreich auslesen (über die Parameter "ackseq" und "baudrate_read"). Mit der Übertragungrate 300 Bd werden aber die wenigsten Fehler produziert, d.h damit wächst mein Log am langsamsten. <br></li><li>Ohne „baudrate_change_delay" oder mit „baudrate_change_delay" = 0 werden keine Daten ausgegeben. Die bisher optimale Umschaltzeit „baudrate_change_delay" für die Umstellung auf die Auslesegeschwindigkeit ist 300ms, auch wenn, wie in meiner aktuelle Konfiguration, bei eingestellten 300 Bd nicht umgeschaltet werden muss.</li><li>Die Parameter "interval", "aggtime", "aggmode", "baudrate_read" und "ackseq" sind bei einer Übertragungsrate von 300 Bd nicht notwendig.</li><li>Bei 300 Bd dauert ein kompletter Lesezyklus, das Zählertelegramm besteht aus über hundert Datensätzen, ca. 91 Sekunden.<br></li></ul><p>Nun zu meinem Poblem:<br></p><p>Dass vzlogger nicht ganz sauber den Datenstrom
parst, sehe ich in den binary character-Fehlern bei jedem
Telegrammdurchlauf. Nach in
der Regel drei Pullsequenzen erkennt vzlogger den Zähler, zumindest teilweise, und parst das
vollständige Telegramm. 5 bis 8 Character kann er in der Anfangssequenz nicht
erkennen. Das führt zu binary character Fehlern.<br><br>So sehen meine Zählerrohdaten aus (mit Kommentaren rechts):<br></p><div style="margin-left:40px">/?420818! Antwort Pullsequenz mit Eigentumsnummer<br>/EMH4\@--ITZ-G0038E Zählerbezeichnung<br>F.F(00000000)0.0.0(00420818) <wbr> Eigentumsnummer<br>0.0.1(02256230)<br>0.1.0(65)<br>0.1.2*65(0160101000000) Datum der jeweiligen Monatsspeicherung<br>0.1.2*64(0151201000000)<br>....<br></div><br>Hier der Log-Ausschnitt (verbosity 15) nach einer Pullsequenz:<br><div style="margin-left:40px">[Nov 19 20:07:45][d0] sending pullsequenz send (len:11 is:11).<br><span style="color:rgb(255,0,0)">[Nov 19 20:07:45][d0] ====> binary character '0'<br>[Nov 19 20:07:45][d0] ====> binary character '1a'<br>[Nov 19 20:07:45][d0] ====> binary character '10'<br>[Nov 19 20:07:45][d0] ====> binary character '12'<br>[Nov 19 20:07:45][d0] ====> binary character '0'<br>[Nov 19 20:07:45][d0] ====> binary character '0'<br>[Nov 19 20:07:46][d0] ====> binary character '2'</span><br>[Nov 19 20:07:46][d0] Pull answer (vendor=EMH, baudrate=4, identification=<span style="color:rgb(255,0,0)">\ 0 8E</span>)<br>[Nov 19 20:07:49][d0] DEBUG OBIS_CODE byte ^B hex= 2<br>[Nov 19 20:07:49][d0] DEBUG OBIS_CODE byte F hex= 46<br>[Nov 19 20:07:49][d0] DEBUG OBIS_CODE byte . hex= 2E<br>[Nov 19 20:07:49][d0] DEBUG OBIS_CODE byte F hex= 46<br>[Nov 19 20:07:49][d0] DEBUG OBIS_CODE byte ( hex= 28<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= 0 hex= 30<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= 0 hex= 30<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= 0 hex= 30<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= 0 hex= 30<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= 0 hex= 30<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= 0 hex= 30<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= 0 hex= 30<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= 0 hex= 30<br>[Nov 19 20:07:49][d0] DEBUG VALUE byte= ) hex= 29<br>[Nov 19 20:07:49][d0] Parsed reading (OBIS code=F.F, value=00000000, unit=)<br></div><br>Die binary character-Fehler nach der Pullsequenz stehen auch im vebosity 0-Log. vzlogger liest in der Pull answer den Vendor EMH und die Baudrate 4 korrekt. identification wird regelmäßig nicht erkannt.<br><br>Im Anhang habe ich den zugehörigen D0-Dump "d0-24.txt" gestellt.<br><br>Wie oben beschrieben kann ich die Übertragungsrate zwar auf einen
höheren Wert einstellen, aber dann bekomme ich im vebosity 0-Log
hunderte Fehler "Too much data for obis_code (byte=0x0)", bis irgendwann wieder OBIS-Codes erkannt werden.<br><br></div>Hier meine aktuelle D0-Konfiguration:<br>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"meters": [</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>// D0 meter (Strom)</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>{</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span><span> </span>"enabled": true,</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span></span>"allowskip":
false,</p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"channels": [</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>{</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"uuid":
"180a",</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"identifier":
"1.8.1",<span> </span>// Counter
Tarif 1</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"api":
"null",</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"duplicates":
0</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>},</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>{</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"uuid":
"180b",</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span></span>"identifier":
"1.25",<span> </span>//
Momentanleistung</p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span> </span>"api": "null",</p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span> </span><span lang="EN-US">"duplicates": 0</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>}</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>],</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"protocol":
"d0",</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"device":
"/dev/ttyUSB0",</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"interval": -1,</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"pullseq":
"2F3F343230383138210D0A",</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span><span> </span>"baudrate": 300,</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"parity":
"7e1",</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span>"wait_sync":
"off",</span></p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span lang="EN-US"><span> </span></span>"baudrate_change_delay":
300</p>
<p style="margin:0cm 0cm 0.0001pt 36pt" class="MsoNormal"><span>
</span>},</p>
</div></div><div><div><div><br>Viele Grüße<span class="gmail-HOEnZb"><font color="#888888"><br></font></span><span class="gmail-HOEnZb"><font color="#888888">Winfried<br><div><div><div><div><div><br></div></div></div></div></div></font></span><div><div><div><br><br></div></div></div></div></div></div></div>