[vz-dev] vzlogger d0 auf Fritzbox. [Patch]

bernd.leibing at uni-ulm.de bernd.leibing at uni-ulm.de
Fri Jul 20 20:12:21 CEST 2012


Hi,

ich versuche vzlogger auf einer Fritz!Box mit Freetz Modifikation zum  
Laufen zu bringen.
Angeschlossen an die Box sind 2 IR-Leseköpfe mit USB Erweiterung.
Zwei Easymeter Q3D sollen per d0 Protokoll ausgelesen werden.


Das Kompilieren hat soweit geklappt. Allerding wirft vzlogger die
"Something unexpected happened: meter_read_d0:279!"
Fehler, die schon öfters auf der Liste beklagt wurden.

Eine Terminalemulation mite 9600 7e zeigt aber perfekte Ausgabe:

/ESY5Q3DA1024 V3.03

1-0:0.0.0*255(111940207)
1-0:1.8.0*255(00000000.7801269*kWh)
1-0:2.8.0*255(00007041.2292533*kWh)
1-0:21.7.255*255(-000073.69*W)
1-0:41.7.255*255(000000.00*W)
1-0:61.7.255*255(-000068.61*W)
1-0:1.7.255*255(-000142.30*W)
1-0:96.5.5*255(A2)
0-0:96.1.255*255(1ESY1127000167)
!
/ESY5Q3DA1024 V3.03

1-0:0.0.0*255(111940207)
1-0:1.8.0*255(00000000.7801269*kWh)
1-0:2.8.0*255(00007041.2293318*kWh)
1-0:21.7.255*255(-000072.74*W)
1-0:41.7.255*255(000000.00*W)
1-0:61.7.255*255(-000068.59*W)
1-0:1.7.255*255(-000141.33*W)
1-0:96.5.5*255(A2)
0-0:96.1.255*255(1ESY1127000167)
!


Ich hab ein paar Debugging Ausgaben in die src/protocols/d0.c Datei  
gemacht und bemerkt,
dass beim Einlesen der Zeichen in Zeile 178

read(handle->fd, &byte, 1)

nur Hieroglyphen ankommen. Ich hab mir den Terminalcode in  
meter_d0_open_device angeschaut
und mit denjenigen obiger  Terminalemulation (picocom) verglichen.

Folgender Patch ist dabei herausgekommen. Damit kommen bei mir jetzt  
vernünftige Zeichen an.


diff --git a/src/protocols/d0.c b/src/protocols/d0.c
index 52bb2bd..0de1827 100644
--- a/src/protocols/d0.c
+++ b/src/protocols/d0.c
@@ -322,11 +322,13 @@ int meter_d0_open_device(const char *device,  
struct termios *old_tio, speed_t ba
  	/* backup old configuration to restore it when closing the meter  
connection */
  	memcpy(old_tio, &tio, sizeof(struct termios));

-	/*  set 7-N-1 */
+	/* set 7-E-1 */
  	tio.c_iflag &= ~(BRKINT | INLCR | IMAXBEL);
  	tio.c_oflag &= ~(OPOST | ONLCR);
  	tio.c_lflag &= ~(ISIG | ICANON | IEXTEN | ECHO);
-	tio.c_cflag |= (CS7 | PARENB);
+	tio.c_cflag &= ~PARODD;
+	tio.c_cflag |= PARENB;
+	tio.c_cflag = (tio.c_cflag & ~CSIZE) | CS7;

  	/* set baudrate */
  	cfsetispeed(&tio, baudrate);



Viele Grüße,
Bing

-- 
Bernd 'Bing' Leibing




More information about the volkszaehler-dev mailing list