[vz-dev] vzlogger MeterD0.cpp Master branch parity
Andreas Götz
cpuidle at gmail.com
Fri May 16 13:15:32 CEST 2014
Kann ich machen- könntet ihr die als PR zur Verfügung stellen?
Viele Grüße,
Andreas
> Am 16.05.2014 um 09:35 schrieb Karlheinz <karlheinz.es at gmx.de>:
>
> 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/9eb5eda9/attachment.html>
More information about the volkszaehler-dev
mailing list