[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