<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body smarttemplateinserted="true" text="#000000" bgcolor="#FFFFFF">
    <div id="smartTemplate4-template">Hallo,<br>
      <br>
      wer kann die Änderungen aus vorhergehendem post ins vzlogger-git
      übernehmen? <br>
      <br>
      Gruß<br>
      Karlheinz<br>
      <br>
      <br>
      ------- Original Nachricht --------<br>
      Betreff: Re: [vz-dev] vzlogger MeterD0.cpp Master branch parity<br>
      Von: Karlheinz <a class="moz-txt-link-rfc2396E"
        href="mailto:karlheinz.es@gmx.de"><karlheinz.es@gmx.de></a><br>
      An: volkszaehler.org<br>
      Datum: Sonntag, 11. Mai 2014 23:00:43<font size="-1"> </font></div>
    <br>
    <blockquote cite="mid:536FE4FB.2060702@gmx.de" type="cite">
      <meta content="text/html; charset=windows-1252"
        http-equiv="Content-Type">
      <div id="smartTemplate4-template">Hallo,<br>
        <br>
        aufbauend auf Reinhards Version gibt es folgende Änderungen in
        MeterD0.cpp:<br>
        1. Starterkennungssequenz "/" angepasst, da "/" auch im
        value-String vorkommen kann. (Siemens TD-3511)<br>
        2. "case END_LINE:" Neben "1" u. "2" soll auch "C" ausgewertet
        werden um Spannungsfehler ermitteln zu können. (wird von
        Wolfgang genutzt)<br>
        3. Endeerkennungssequenz "!" angepasst, da manche Zähler die
        Pullsequenz noch einmal ausgeben. (L&G ZMD120)<br>
        <br>
        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.<br>
        <br>
        Kann jemand die src/protocols/MeterD0.cpp und
        include/protocols/MeterD0.hpp (s. Anhang) ins git mit neuer
        vzlogger Version übernehmen?<br>
        <br>
        Danke und Gruß<br>
        Karlheinz<br>
        <br>
        <br>
        ------- Original Nachricht --------<br>
        Betreff: *** GMX Spamverdacht *** Re: [vz-dev] vzlogger
        MeterD0.cpp Master branch parity<br>
        Von: Reinhard Wilzeck <a moz-do-not-send="true"
          class="moz-txt-link-rfc2396E"
          href="mailto:reinhard@wilzeck.de"><reinhard@wilzeck.de></a><br>
        An: volkszaehler.org<br>
        Datum: Sonntag, 22. Dezember 2013 16:56:09<font size="-1"> </font></div>
      <br>
      <blockquote cite="mid:52B70B99.2060905@wilzeck.de" type="cite">Hallo,



        <br>
        seit einigen Wochen läuft meine Version mit dem Zähler
        Landis+Gyr E350 EDL21 mit 300baud nun stabil. <br>
        <br>
        Was ich ergänzt habe: <br>
        1) Fehler beim Setzen des parity korrigiert. (RTS/CTS) <br>
        2) Der Landis+Gyr E350 braucht einen Acknowledge. Der kann über
        die vzlogger.conf nun konfiguriert werden. <br>
            "ackseq": "063030300d0a", <br>
        Aufbau: $06 ist ein Startzeichen, die nachfolgenden '000' sind
        300 baud.' 040' wäre 4800baud. 0d0a sind die üblichen CR LF <br>
        3) Schnittstelle so konfiguriert, dass nach 5s ein timeout kommt
        und diesen ausgewertet. (der read kommt dann mit 0 zurück) <br>
               tio.c_cc[VTIME]    = 50;     /* inter-character timer
        50*0.1s*/ <br>
                tio.c_cc[VMIN]     = 0;     /* VTIME is timeout counter
        */ <br>
        <br>
        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. ) <br>
        "baudrate_read":300 setzt die Schnittstelle über <br>
                                    cfsetispeed(&tio,
        baudrate_read); <br>
                                    tcsetattr(_fd, TCSANOW, &tio); <br>
        auf die neue baudrate (nur die Empfangsrichtung) <br>
        <br>
        Die Einträge in der vzlogger.conf für einen Acknowledge ohne
        baudraten umschalten sehen dann so aus: <br>
                "protocol" : "d0",     /* see 'vzlogger -h' for list of
        available protocols */ <br>
                "device" : "/dev/ttyUSB0", <br>
            "enabled": true, <br>
            "parity": "7e1", <br>
            "baudrate":300, <br>
            "baudrate_read":300, <br>
            "pullseq":"2f3f210d0a", <br>
            "ackseq": "063030300d0a", <br>
            "interval": 60, <br>
                "channels": [{ <br>
        ... <br>
                }] <br>
        Fehlen die zusätzlichen Einträge, ist die entsprechende Funktion
        inaktiv. (kompatible Erweiterung) <br>
        <br>
        5) Filter auf die empfangenen OBIS Codes, da sonst Absturz. <br>
        <br>
                        case OBIS_CODE: <br>
                            if ((byte != '\n') && (byte !=
        '\r')&& (byte != 0x02))// STX ausklammern <br>
                        case END_LINE: <br>
                                    ... <br>
                                    if
        ((obis_code[0]=='1')||(obis_code[0]=='2')) { <br>
                                        Obis obis(obis_code); <br>
        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. <br>
        <br>
        Anbei die geänderten sourcen. <br>
        Ich hoffe, sie sind verständlich und es hilft bei der
        Entwicklung der nächsten Version. <br>
        <br>
        Reinhard <br>
        <br>
        <br>
        Am 21.11.2013 00:57, schrieb Thorben Thuermer: <br>
        <blockquote type="cite">On Wed, 20 Nov 2013 23:36:13 +0100 <br>
          Reinhard Wilzeck <a moz-do-not-send="true"
            class="moz-txt-link-rfc2396E"
            href="mailto:reinhard@wilzeck.de"><reinhard@wilzeck.de></a>
          wrote: <br>
          <blockquote type="cite">erfreulicherweise kann man nun für das
            Protokoll D0 parity und baud rate <br>
            über die vzlogger.conf konfigurieren. <br>
            (Nötig z.B. für Landis+Gyr E350 EDL21 .) <br>
                   "protocol" : "d0", <br>
                  "parity": "7e1", <br>
                  "baudrate":300, <br>
            Leider hat sich ein Fehler beim Setzen der einzelnen bits
            eingeschlichen. <br>
            (Ich weiss nicht, ob es schon jemand gesehen hat) <br>
            Dadurch wird unbeabsichtigt u.a. CRTSCTS gesetzt. <br>
            Damit sendet Udos USB IR Schreiblesekopf nicht.  (macht er
            richtig, denn <br>
            ohne den vzlogger arbeitet er einwandfrei.) <br>
            <br>
            falsch ist z.B. <br>
                  case parity_7e1: <br>
                      tio.c_cflag |= ~ PARENB; <br>
            Damit werden alle bits gesetzt (außer PARENB) <br>
            Richtig ist: <br>
                  switch(_parity) { <br>
                  case parity_8n1: <br>
                      tio.c_cflag &= ~ PARENB; <br>
          </blockquote>
          das koennte die probleme erklaeren die andere user schon mit
          porteinstellungen <br>
          bei vzlogger hatten... <br>
          (finde den thread gerade nicht) <br>
          <br>
          <blockquote type="cite">An dem Acknowledge, das der Zähler
            braucht arbeite ich noch. Außerdem <br>
            kann man die Schnittstelle auch mit einem Timeout versehen,
            so das der <br>
            read nicht für immer hängen bleibt. <br>
            /* Set return rules for read to prevent endless waiting*/ <br>
                   tio.c_cc[VTIME]    = 50;     /* inter-character timer
            50*0.1s*/ <br>
                   tio.c_cc[VMIN]     = 0;     /* VTIME is timeout
            counter */ <br>
            <br>
            Der praktische Beweis der Funktion steht aber noch aus. <br>
          </blockquote>
          ich kann das leider mangels zaehlern wenig testen. <br>
          schickst du uns einen patch, sobald du eine version hast die
          laeuft? <br>
          danke! <br>
          <br>
          <blockquote type="cite">Gruß <br>
                  Reinhard <br>
          </blockquote>
          - Thorben <br>
          <br>
        </blockquote>
        <br>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>