[vz-users] vzlogger Fehlermeldung: meter_read_d0:267!

Thorben Thuermer r00t at constancy.org
Thu Jul 19 23:18:45 CEST 2012


On Thu, 19 Jul 2012 20:59:45 +0200 Joerg Krohn <joerch at f-m.fm> wrote:
> weiß jemand etwas mit der folgenden Fehlermeldung im vzlogger anzufangen?
> 
> [Jul 19 20:42:18][mtr1] Something unexpected happened: meter_read_d0:267!
> [Jul 19 20:42:18][mtr0] Something unexpected happened: meter_read_d0:267!

vzlogger/src/protocols/d0.c
137 size_t meter_read_d0(meter_t *mtr, reading_t rds[], size_t max_readings) {
...
178     while (read(handle->fd, &byte, 1)) {
179         if (byte == '/') context = START;   /* reset to START if "/" reoccurs */
182             case START:         /* strip the initial "/" */
184                 context = VENDOR;   /* set new context: START -> VENDOR */
187             case VENDOR:            /* VENDOR has 3 Bytes */
188                 if (!isalpha(byte)) goto error; /* Vendor ID needs to be alpha */
...
278 error:
279     print(log_error, "Something unexpected happened: %s:%i!", mtr, __FUNCTION__, __LINE__);

der d0-parser wartet auf einen '/' und liest dann den herstellernamen,
und wenn er da ein nicht-alphanumerisches zeichen liest,
geht er von einem fehler aus und gibt diese meldung aus. 
idr. passiert das, wenn er daten vorgesetzt bekommt,
die keine gueltigen d0-daten sind.

> Eigentlich funktioniert alles, aber die Meldung kommt quasi sekündlich.

deshalb ist es etwas komisch, dass du sagst es funktioniert trotzdem.
ggfs ist auch das format des datenstroms anders als der parser es erwartet.

um das weiter zu debuggen, koenntest du vzlogger mal unter strace laufen
lassen und das log posten (nicht unbedingt an die liste wenn's gross ist),
darin kann man dann nachvollziehen, was genau vzlogger list, und welche
eingabe zu der meldung fuehrt.

> Viele Grüße
> Jörg

- Thorben


More information about the volkszaehler-users mailing list