[vz-dev] [vz-users] vzlogger MeterD0 mit L&G
Karlheinz
karlheinz.es at gmx.de
Fri Apr 25 12:15:47 CEST 2014
Hallo Reinhard,
Danke für den Hinweis.
Bei mir bricht vzlogger schon früher ab. Ich habe eine print-Anweisung
nach "case OBIS_CODE:" drin, die nach dem CRLF nicht mehr durchlaufen wird.
case OBIS_CODE:
print(log_debug, "DEBUG OBIS_CODE byte hex= %X ",name().c_str(), byte);
=-O ssl ratlos! Hast du einen Tipp für Anfänger wie ich das debuggen kann?
Dein Problem mit '*' war schon im MeterD0 drin.
Gruß
Karlheinz
------- Original Nachricht --------
Betreff: Re: [vz-dev] [vz-users] vzlogger MeterD0 mit L&G
Von: Reinhard Wilzeck <reinhard at wilzeck.de>
An: volkszaehler.org <volkszaehler-dev at demo.volkszaehler.org>
Datum: Donnerstag, 24. April 2014 22:28:45
> Hallo,
> ich hatte damals das gleiche Problem und habe es auf die brutale Art
> gelöst.
> "Illegale" Zeichen werden unterdrückt, bevor der OBIS Parser dadurch
> abstürzen kann.
> Wir müssen den STX (0x02) ausblenden. (ordentlicher wäre auf den STX
> zu warten, aber davon haben wir nix. Und wenn der STX richtig
> ausgewertet wird, dann müßten wir konsequenterweise das Telgramm bis
> zum Ende auswerten, damit wir Fehler erkennen)
> Ich hatte auch ein Problem mit "*" vor der Einheit. Da die Einheit
> auch nicht wirklich verwendet wird kann man auch bei dem "*" schon
> Schluss machen)
>
> Nachstehende Modifikation sollte die Probleme auch für Deinen Fall lösen.
> case OBIS_CODE:
> * if ((byte != '\n') && (byte != '\r')&& (byte != 0x02)***&& (byte !=
> 0x1F)*)// STX und US ausklammern *
> {
> if (byte == '(') {
> obis_code[byte_iterator] = '\0';
> byte_iterator = 0;
>
> context = VALUE;
> }
> else obis_code[byte_iterator++] = byte;
> }
> break;
>
> case VALUE:
> ***if (byte == '*' **|| byte == ')') {*
> value[byte_iterator] = '\0';
> byte_iterator = 0;
>
> if (byte == ')') {
> unit[0] = '\0';
> context = END_LINE;
> }
> else {
> context = UNIT;
> }
> }
> else value[byte_iterator++] = byte;
> break;
>
> Gruß
> Reinhard
>
> Am 23.04.2014 23:48, schrieb Karlheinz:
>> Hallo Stefan,
>>
>> es gibt einige Beiträge mit diesem D0-Problem. Shell-Scripts gibts es
>> auch schon im Wiki. Besser wäre es wenn vzlogger das von Haus aus
>> unterstützt.
>> Aber ohne Debug-Unterstützung komme ich leider nicht weiter.
>> Wie erzeuge ich eine debug-fähige vzlogger version, die ich mit ddd
>> debuggen kann?
>> Vielleicht verirrt sich mal ein Programmierer in den Chat
>> <http://webchat.freenode.net/?channels=volkszaehler.org>und leistet
>> etwas Entwicklungshilfe :-)
>>
>> Gruß
>> Karlheinz
>>
>> ------- Original Nachricht --------
>> Betreff: Re: [vz-users] vzlogger MeterD0 mit L&G
>> Von: Stefan Klammer <klammerstefan85 at gmail.com>
>> An: volkszaehler.org - users <volkszaehler-users at demo.volkszaehler.org>
>> Datum: Mittwoch, 23. April 2014 08:26:47
>>
>>> Hallo Karlheinz,
>>>
>>> ich habe ein ähnliches Problem mit meinem (Landis & Gyr ZMD120AR),
>>> dieser sendet am Schluss der Übertragung ein Zeichen das dem
>>> vzlogger bzw. d0 Parser nicht passt und der logger somit aussteigt.
>>> Ich wollte denn D0 Parser auch schon anpassen das er wirklich nur
>>> die geforderten OBIS Codes ausliest (z.B.: 1.8.1) und alles andere
>>> was er nicht kennt einfach ignoriert. Leider bin ich bis jetzt nicht
>>> dazugekommen. Vielleicht kannst du das mal ausprobieren wäre super
>>> wenn da endlich mal was Zustande kommt.
>>>
>>> Vielleicht schaust du dir das hier mal an:
>>> http://www.mail-archive.com/volkszaehler-dev%40lists.volkszaehler.org/msg02150.html
>>> Hört sich nach einem ähnlichen Problem an.
>>>
>>> Oder hier:
>>> http://www.mail-archive.com/volkszaehler-dev%40lists.volkszaehler.org/msg01732.html
>>> Da kannst du meine Ausgaben vom Zähler sehen.
>>>
>>> Hoffe du kriegst noch was raus. Wäre schön zu hören wenns klappt.
>>>
>>> Gruß Stefan
>>>
>>> Am 18. April 2014 17:17 schrieb Karlheinz <karlheinz.es at gmx.de
>>> <mailto:karlheinz.es at gmx.de>>:
>>>
>>> Hallo Leute,
>>>
>>> seit Tagen versuche ich den vzlogger (MeterD0.cpp) auch für
>>> meinen Stromzähler (Landys & Gir ZMD120 ...) anzupassen. Über
>>> die ersten Stolpersteine bin ich mittlerweile drüber, aber nun
>>> steigt das Programm bei der while Schleife "while (::read(_fd,
>>> &byte, 1)) { " beim Zeichen 0x1F immer aus. Wenn ich das
>>> richtig sehe wird das Zeichen 0x1F und dann 0x02 gesendet, bevor
>>> es bei F.F usw. weiter geht.
>>>
>>> /LGZ52ZMD120APt.G03
>>> ..F.F(00000000)
>>> 0.0.0( 26700)
>>> 1.8.1(012334.7*kWh)
>>> ...
>>>
>>> Hat jemand eine Idee?
>>>
>>> Gruß
>>> Karlheinz
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-dev/attachments/20140425/18e0f483/attachment.html>
More information about the volkszaehler-dev
mailing list