[vz-dev] Siemens TD3511 mit Protokoll D0

Michael Wulz michael.wulz at gmail.com
Thu Dec 12 07:41:57 CET 2013


Guten Morgen,

besten Dank für das Diff.
Werde es gleich bei mir probieren - hatte auch immer die gleichen 
Probleme. Damit wird mein Logger auch stabiler rennen ;-)

merci


Am 12.12.13 07:35, schrieb Sebastian Michel:
> Hallo Zusammen,
>
> ich habe bei mir einen opt. USB-Lesekopf von Udo in Verbindung mit 
> einem Siemens TD-3511 am Laufen. Das ganze hängt an einem raspberry pi 
> mit image von volkszähler.
>
> Leider lief es nicht so problemlos wie erhofft. Der vzlogger hat zwar 
> die pullseq geschickt, aber dann keine Daten empfangen. Ich hab mir 
> dann die Quellen vom vzlogger angeschaut und folgende Änderungen in 
> MeterD0.cpp gemacht, dass es läuft:
>
> 1) Das Device wird im blocking mode geöffnet. Das führte bei mir dazu, 
> dass die read() Funktion mit 0 zurückkehrt. Das heißt normalerweise 
> ein eof oder derartiges. Sowas sollte bei einem seriellen Device 
> niemals passieren. Ich weiß auch nicht warum das der Fall ist.
>
> -> Ich hab den Code dahingehend geändert, dass das Device im 
> non-blocking mode geöffnet wird. Damit funktioniert's nun.
>
> 2) Die Statemachine sollte niemals unendlich warten und irgendwo 
> hängen bleiben.
>
> -> Ich hab ein Timeout von 10s eingebaut. Also wenn innerhalb 10s 
> keine Daten empfangen werden bzw. beim Start kein Sync-byte kommt, 
> wird dieser Lesevorgang abgebrochen.
>
> 3) Die Statemaching wird immer beim Empfang eines '/' zurückgesetzt. 
> Da mein Zähler ein '/' im Identification String sendet, hängt sich die 
> Statemachine auf.
>
> -> Das habe ich rausgenommen.
>
> 4) Mein Zähler sendet ca. 330 obis-codes. Da ist dann sowas dabei wie 
> 2.8.1*16, 2.8.1*15 usw. Ich interessiere mich eigentlich nur für die 
> Einträge von 2.8.0. Das ist insofern ein Problem, dass der D0-Meter 
> nur maximal 32 Einträge zulässt. Das heißt bis die interessanten codes 
> ankommen, sind die 32 Einträge schon längst belegt.
>
> -> Das ist vielleicht nicht ganz sauber, aber ich nehme nur obis-codes 
> an die eine Länge von genau 5 bytes haben. Damit kommen bei meinem 
> Zähler genau 32 zusammen.
>
> 5) Der Zähler sendet ungültige Obis-Codes. Zumindest ist der string 
> für die Klasse Obis.cpp nicht auswertbar. Das führt dazu, dass 
> vzlogger abstürzt. Vermutlich sind es die obis-codes die unter anderem 
> Buchstaben statt Zahlen haben.
>
> -> Ich hab die Stellen mit einem try-except Block abgefangen und 
> überspringe die betroffenen obis-codes.
>
> Alles in allem freue ich mich, dass es nun funktioniert. Die 
> Änderungen habe ich als Diff mal angehangen.
>
> Viele Grüße
> Sebastian



More information about the volkszaehler-dev mailing list