[vz-dev] Siemens TD3511 mit Protokoll D0
Sebastian Michel
Sebastian_Michel at gmx.de
Thu Dec 12 17:39:06 CET 2013
Hallo,
ich bin es nochmal. Ich hab ein sleep in der Schleife vergessen. Der
vzlogger funktioniert im Prinzip, aber ohne das sleep hat er 100%
CPU-Auslastung.
Anbei mal eine berichtigte Version.
Gruß
Sebastian
Am 2013-12-12 07:41, schrieb Michael Wulz:
> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vzlogger_d0.diff
Type: text/x-diff
Size: 5200 bytes
Desc: not available
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-dev/attachments/20131212/a3b12675/attachment.diff>
More information about the volkszaehler-dev
mailing list