[vz-dev] Inbetriebnahme ZMD120AR Landis & Gyr mit IR Lesekopf über RS232

Thorben Thuermer r00t at constancy.org
Tue May 28 11:49:35 CEST 2013


On Tue, 28 May 2013 09:37:13 +0200
Stefan Klammer <klammerstefan85 at gmail.com> wrote:
> ich versuche auch gerade einen Landis&Gyr E230 zum laufen zu bringen und
> habe nun noch folgendes Problem. Ich sende die Anforderungssequenz per
> Cronjob das funktioniert auch sehr gut. Vom Zähler bekomme ich dann
> folgendes:
> 
> /?!<\r><\n>
> /LGZ5ZMR120AR.K511<\r><\n>
[...]
> Der Zähler schickt aber den letzten Datensatz nicht komplett und zwar zeigt
> mir HTerm am Schluss der Übertragung folgendes an:
> 
> 0.2.0(K51-1-4□
> 
> Ich glaube der vzlogger kommt dann mit diesen Daten nicht ganz klar und
> kann die Zählerstände dann nicht auslesen. Oder kommt der vzlogger mit dem
> Code F.F.0 nicht klar??

das problem ist einfach:
der d0-parser in vzlogger ist extrem primitiv,
und wenn die daten nicht genau aussehen wie erwartet, kommt nichts
sinnvolles heraus.
da ist noch einiges an arbeit noetig.

leider ist das auch nicht so einfach zu testen, da niemand alle zaehler vor
ort verfuegbar hat.

siehe zB auch:
http://volkszaehler.org/pipermail/volkszaehler-dev/2013-January/002321.html

in einem anderen thread den ich gerade nicht finde wurde glaube ich irgendwo
eine vorhandene library zum parsen des formats erwaehnt, die sollte man mal
evaluieren.

> Leider habe ich im Moment den log vom strace nicht da aber ich bekomme den
> Fehler:
> Something unexpected happend: read:281!

wie gehabt, die meldung ist leider nicht sehr hilfreich...

> Vielleicht kann mir jemand helfen,
> Mfg Stefan

- Thorben

> Am 20. Mai 2013 10:38 schrieb Peter Kreutzer <kreutzer.peter at gmail.com>:
> > habe nun vzlogger von peter evertz über git installiert
> > meine vzlogger.conf hab eich wie folgt angepasst:
> >
> > /* vzlogger configuration
> >  *
> >  * use proper encoded JSON with javascript comments
> >  *
> >  * take a look at the wiki for detailed information:
> >  * http://wiki.volkszaehler.org/software/controller/vzlogger#configuration
> >  */
> >
> > {
> > "retry" : 30,                   /* how long to sleep between failed
> > requests, in seconds */
> > //"daemon": false,              /* run periodically */
> > "foreground" : true,            /* run in background */
> > "verbosity" : 20,               /* between 0 and 15 */
> > "log" : "/var/log/vzlogger.log",/* path to logfile, optional */
> >
> > "local" : {
> >         "enabled" : false,      /* should we start the local HTTPd for
> > serving live readings? */
> >         "port" : 80,            /* the TCP port for the local HTTPd */
> >         "index" : true,         /* should we provide a index listing of
> > available channels? */
> >         "timeout" : 30,         /* timeout for long polling comet
> > requests, 0 disables comet, in seconds */
> >         "buffer" : 600          /* how long to buffer readings for the
> > local interface, in seconds */
> > },
> >
> > "meters" : [{
> >         "enabled" : true,
> >         "device" : "/dev/ttyS0",
> >         "protocol" : "d0",
> >         "baudrate" : 300,
> >         "parity" : "7N1",
> >         "pullseq" : " /?!<0D><0A>", // HEX Darstellung der Pullsequenz
> >         "interval" : 61, // Wartezeit bis zum nächsten Pull
> >     }]
> > }
> >
> > Beim start sudo vzlogger --config /etc/vzlogger.conf -v 20
> > bekomme ich eine Fehlermeldung:
> >
> > [May 20 10:24:35]       Start parsing configuration from /etc/vzlogger.conf
> > [May 20 10:24:35][mtr0] Creating new meter with protocol d0.
> > [May 20 10:24:35][d0]   Invalid baudrate: 300
> > [May 20 10:24:35][d0]   Failed to parse the baudrate
> > [May 20 10:24:35][]     parse configuration failed due to:
> > [May 20 10:24:35]       Failed to parse configuration due to: Invalid
> > baudrate
> >
> > ich habe dann einfach mal meine 300 im Meter vzlogger / src / protocols /
> > MeterD0.cpp
> > ergänzt
> >
> >
> > 		switch (baudrate) {
> >                                 case 300: _baudrate = B300; break;
> > 				case 1200: _baudrate = B1200; break;
> > 				case 1800: _baudrate = B1800; break;
> > 				case 2400: _baudrate = B2400; break;
> > 				case 4800: _baudrate = B4800; break;
> > 				case 9600: _baudrate = B9600; break;
> > 				case 19200: _baudrate = B19200; break;
> > 				case 38400: _baudrate = B38400; break;
> > 				case 57600: _baudrate = B57600; break;
> > 				case 115200: _baudrate = B115200; break;
> > 				case 230400: _baudrate = B230400; break;
> > 				default:
> > 					print(log_error, "Invalid baudrate: %i", name().c_str(), baudrate);
> > 					throw vz::VZException("Invalid baudrate");
> > 		}
> > scheint aber  immer noch nicht zu funktionieren.
> >
> > [May 20 10:32:47][d0]   Something unexpected happened: read:306!
> > [May 20 10:32:47][mtr0] Got 0 new readings from meter:
> > [May 20 10:32:47][mtr0] Next reading in 56 seconds
> > [May 20 10:33:48][d0]   Something unexpected happened: read:306!
> > [May 20 10:33:48][mtr0] Got 0 new readings from meter:
> > [May 20 10:33:48][mtr0] Next reading in 56 seconds
> >
> >  sudo strace -f -s 9999 vzlogger --config /etc/vzlogger.conf -v 20 > vzlogger.trace
> >
> >  write(3, "[May 20 10:35:23][mtr0] Config.local: 0\n", 40) = 40
> > [pid 10271] read(4, "", 1)              = 0
> > [pid 10271] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
> > [pid 10271] getppid()                   = 10269
> > [pid 10271] write(2, "[May 20 10:35:27][d0]   ", 24[May 20 10:35:27][d0]   ) = 24
> > [pid 10271] write(2, "Something unexpected happened: read:306!", 40Something unexpected happened: read:306!) = 40
> > [pid 10271] write(2, "\n", 1
> > )           = 1
> >
> > die lesekopf scheint also was leeres zu schicken.
> > Muss ich den Eintrag noch in HEX umrechnen?
> > "pullseq" : " /?!<0D><0A>", // HEX Darstellung der Pullsequenz
> >
> > Grüsse
> >
> >
> >
> > Am 19. Mai 2013 21:26 schrieb Justin Otherguy <justin at justinotherguy.org>:
> >
> > Hi Peter,
> >>
> >> Am 19.05.2013 um 21:20 schrieb Peter Kreutzer:
> >>
> >> > Als nächstes werde ich mit dann den vzlogger von peter evertz mal
> >> anschauen.
> >> > Da er nicht im als ubuntu package vorhanden ist werde ich ihn selber
> >> compiliere...
> >> >
> >> > Geben euch noch eine Rückmeldung wenn es gelaufen ist.
> >> prima; derzeit sieht's so aus, als könnten wir mit Peters Fork den
> >> aktuellen Master (https://github.com/volkszaehler/vzlogger) ersetzen.
> >> Bei mir läuft er seit Tagen problemlos und auch von anderen kam bislang
> >> nur positive Rückmeldung. Das bezieht sich erst mal auf die
> >> "Grundfunktionalität", also das, was derzeit bereits im Master enthalten
> >> ist. Wenn wir das Triggern der Zähler sowie die Aggregierung als Funktionen
> >> mit dazu nehmen können, wäre das sehr schick.
> >>
> >> Daher: ich freue mich über Rückmeldung.
> >>
> >>
> >> Gruss, J.
> >>
> >>
> >


More information about the volkszaehler-dev mailing list