[vz-dev] vzlogger MeterD0.cpp Master branch parity

Karlheinz karlheinz.es at gmx.de
Fri May 16 09:35:55 CEST 2014


Hallo,

wer kann die Änderungen aus vorhergehendem post ins vzlogger-git 
übernehmen?

Gruß
Karlheinz


------- Original Nachricht --------
Betreff: Re: [vz-dev] vzlogger MeterD0.cpp Master branch parity
Von: Karlheinz <karlheinz.es at gmx.de>
An: volkszaehler.org
Datum: Sonntag, 11. Mai 2014 23:00:43

> Hallo,
>
> aufbauend auf Reinhards Version gibt es folgende Änderungen in 
> MeterD0.cpp:
> 1. Starterkennungssequenz "/" angepasst, da "/" auch im value-String 
> vorkommen kann. (Siemens TD-3511)
> 2. "case END_LINE:" Neben "1" u. "2" soll auch "C" ausgewertet werden 
> um Spannungsfehler ermitteln zu können. (wird von Wolfgang genutzt)
> 3. Endeerkennungssequenz "!" angepasst, da manche Zähler die 
> Pullsequenz noch einmal ausgeben. (L&G ZMD120)
>
> Ich hoffe, dass damit auch andere D0-Zähler, die laut Wiki mit eigenen 
> Skripts arbeiten, wieder mit dem vzlogger funktionieren. Danke an 
> Wolfgang für die Unterstützung und Tests.
>
> Kann jemand die src/protocols/MeterD0.cpp und 
> include/protocols/MeterD0.hpp (s. Anhang) ins git mit neuer vzlogger 
> Version übernehmen?
>
> Danke und Gruß
> Karlheinz
>
>
> ------- Original Nachricht --------
> Betreff: *** GMX Spamverdacht *** Re: [vz-dev] vzlogger MeterD0.cpp 
> Master branch parity
> Von: Reinhard Wilzeck <reinhard at wilzeck.de>
> An: volkszaehler.org
> Datum: Sonntag, 22. Dezember 2013 16:56:09
>
>> Hallo,
>> seit einigen Wochen läuft meine Version mit dem Zähler Landis+Gyr 
>> E350 EDL21 mit 300baud nun stabil.
>>
>> Was ich ergänzt habe:
>> 1) Fehler beim Setzen des parity korrigiert. (RTS/CTS)
>> 2) Der Landis+Gyr E350 braucht einen Acknowledge. Der kann über die 
>> vzlogger.conf nun konfiguriert werden.
>>     "ackseq": "063030300d0a",
>> Aufbau: $06 ist ein Startzeichen, die nachfolgenden '000' sind 300 
>> baud.' 040' wäre 4800baud. 0d0a sind die üblichen CR LF
>> 3) Schnittstelle so konfiguriert, dass nach 5s ein timeout kommt und 
>> diesen ausgewertet. (der read kommt dann mit 0 zurück)
>>        tio.c_cc[VTIME]    = 50;     /* inter-character timer 50*0.1s*/
>>         tio.c_cc[VMIN]     = 0;     /* VTIME is timeout counter */
>>
>> 4) Baudrate umschalten. Kann nun konfiguriert werden. (Im Prinzip 
>> müßte es gehen, praktisch bekomme ich von meinem Zähler dann keine 
>> Antwort. Vielleicht kann es mal jemand testen oder mir sagen warum es 
>> nicht geht. )
>> "baudrate_read":300 setzt die Schnittstelle über
>>                             cfsetispeed(&tio, baudrate_read);
>>                             tcsetattr(_fd, TCSANOW, &tio);
>> auf die neue baudrate (nur die Empfangsrichtung)
>>
>> Die Einträge in der vzlogger.conf für einen Acknowledge ohne 
>> baudraten umschalten sehen dann so aus:
>>         "protocol" : "d0",     /* see 'vzlogger -h' for list of 
>> available protocols */
>>         "device" : "/dev/ttyUSB0",
>>     "enabled": true,
>>     "parity": "7e1",
>>     "baudrate":300,
>>     "baudrate_read":300,
>>     "pullseq":"2f3f210d0a",
>>     "ackseq": "063030300d0a",
>>     "interval": 60,
>>         "channels": [{
>> ...
>>         }]
>> Fehlen die zusätzlichen Einträge, ist die entsprechende Funktion 
>> inaktiv. (kompatible Erweiterung)
>>
>> 5) Filter auf die empfangenen OBIS Codes, da sonst Absturz.
>>
>>                 case OBIS_CODE:
>>                     if ((byte != '\n') && (byte != '\r')&& (byte != 
>> 0x02))// STX ausklammern
>>                 case END_LINE:
>>                             ...
>>                             if 
>> ((obis_code[0]=='1')||(obis_code[0]=='2')) {
>>                                 Obis obis(obis_code);
>> Letzteres ist eigentlich eine Notlösung, da ich obis.cpp nicht 
>> wirklich durchschaut habe, aber feststellen musste, das es sehr 
>> empfindlich auf nicht Obis codes reagiert.
>>
>> Anbei die geänderten sourcen.
>> Ich hoffe, sie sind verständlich und es hilft bei der Entwicklung der 
>> nächsten Version.
>>
>> Reinhard
>>
>>
>> Am 21.11.2013 00:57, schrieb Thorben Thuermer:
>>> On Wed, 20 Nov 2013 23:36:13 +0100
>>> Reinhard Wilzeck <reinhard at wilzeck.de> wrote:
>>>> erfreulicherweise kann man nun für das Protokoll D0 parity und baud 
>>>> rate
>>>> über die vzlogger.conf konfigurieren.
>>>> (Nötig z.B. für Landis+Gyr E350 EDL21 .)
>>>>        "protocol" : "d0",
>>>>       "parity": "7e1",
>>>>       "baudrate":300,
>>>> Leider hat sich ein Fehler beim Setzen der einzelnen bits 
>>>> eingeschlichen.
>>>> (Ich weiss nicht, ob es schon jemand gesehen hat)
>>>> Dadurch wird unbeabsichtigt u.a. CRTSCTS gesetzt.
>>>> Damit sendet Udos USB IR Schreiblesekopf nicht.  (macht er richtig, 
>>>> denn
>>>> ohne den vzlogger arbeitet er einwandfrei.)
>>>>
>>>> falsch ist z.B.
>>>>       case parity_7e1:
>>>>           tio.c_cflag |= ~ PARENB;
>>>> Damit werden alle bits gesetzt (außer PARENB)
>>>> Richtig ist:
>>>>       switch(_parity) {
>>>>       case parity_8n1:
>>>>           tio.c_cflag &= ~ PARENB;
>>> das koennte die probleme erklaeren die andere user schon mit 
>>> porteinstellungen
>>> bei vzlogger hatten...
>>> (finde den thread gerade nicht)
>>>
>>>> An dem Acknowledge, das der Zähler braucht arbeite ich noch. Außerdem
>>>> kann man die Schnittstelle auch mit einem Timeout versehen, so das der
>>>> read nicht für immer hängen bleibt.
>>>> /* Set return rules for read to prevent endless waiting*/
>>>>        tio.c_cc[VTIME]    = 50;     /* inter-character timer 50*0.1s*/
>>>>        tio.c_cc[VMIN]     = 0;     /* VTIME is timeout counter */
>>>>
>>>> Der praktische Beweis der Funktion steht aber noch aus.
>>> ich kann das leider mangels zaehlern wenig testen.
>>> schickst du uns einen patch, sobald du eine version hast die laeuft?
>>> danke!
>>>
>>>> Gruß
>>>>       Reinhard
>>> - Thorben
>>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-dev/attachments/20140516/7180e587/attachment-0001.html>


More information about the volkszaehler-dev mailing list