[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