<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:70.85pt 129.75pt 56.7pt 129.7pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoPlainText><span lang=DE>Hallo Daniel,<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE>Lass' mich vorausschicken, dass ich mit der Entwicklung des Vzloggers absolut nichts zu tun habe... ich bin auch erst vor einem halben Jahr eingestiegen, als es die Erweiterungen schon nicht mehr zu kaufen gab... war auch bei mir erst ein trial and error.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE>Was configureGPIO macht, kann man im Sourcecode (MeterS0.cpp).sehen:<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE>1. der GPIO wird exportiert:<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                if (_configureGPIO) {<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                        fd = ::open("/sys/class/gpio/export", O_WRONLY);<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'> [ ... ]<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                        name.append(std::to_string(_gpiopin));<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE style='font-family:"Courier New"'> [ ... ]<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                        res = write(fd, name.c_str(), name.length() + 1); <o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>2. als Eingang konfiguriert:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                name.append("/sys/class/gpio/gpio");<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                name.append(std::to_string(_gpiopin));<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                name.append("/direction");<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>[ ... ]<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                res = ::write(fd, "in\n", 3);<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE>3. die Flanke auf "rising" gesetzt (hat nichts mit gpio_dir zu tun)<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE style='font-family:"Courier New"'>                </span><span style='font-family:"Courier New"'>name.append("/edge");<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>[ ... ]<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                res = ::write(fd, "rising\n", 7);<o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><span lang=DE>4. Active_low auf 0 gesetzt, d.h. positive Impulse werden gezählt, nicht die Unterbrechungen dazwischen<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE style='font-family:"Courier New"'>                </span><span style='font-family:"Courier New"'>name.append("/active_low");<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>[ ... ]<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                res = ::write(fd, "0\n", 2);<o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><span lang=DE>Letzteres heisst Du müsstest mit einem Pull-Down Widerstand arbeiten. VZlogger hat keine Möglichkeit die internen Pull-Up/Down-Widerstände zu konfigurieren. Wenn Du einen internen Pull-Down verwenden möchtest, geht das z.B. mit dem Kommando "gpio" des Paketes "wiringpi". Letzteres ist standardmäßig nicht installiert, lässt sich per "apt-get install wiringpi" nachinstallieren.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE>Dann z.B. mit dem Eintrag <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>[Service]<o:p></o:p></span></p><p class=MsoPlainText><i><span style='font-family:"Courier New"'>ExecStartPre=/usr/bin/gpio -g mode 21 down<o:p></o:p></span></i></p><p class=MsoPlainText><span lang=DE style='font-family:"Courier New"'>ExecStart=/usr/local/bin/vzlogger -c /etc/vzlogger.conf<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE>im /etc/systemd/system/vzlogger.service automatisch vor dem Start des vzloggers setzen. Ich mache es so. Meines Wissens kannst Du alle GPIOs verwenden, welche es gibt und auch wie sie benannt werden kannst Du übrigens via „gpio readall“ sehen.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE>Sollte ich irgendetwas übersehen haben, man verzeihe mir bitte…<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE>Gruss,<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE>Alex<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE><o:p> </o:p></span></p><p class=MsoPlainText>> -----Original Message-----</p><p class=MsoPlainText>> From: volkszaehler-users [mailto:volkszaehler-user<span lang=DE>s-<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE>> bounces@demo.volkszaehler.org] On Beha</span>lf Of Daniel Schwarz</p><p class=MsoPlainText>> Sent: Thursday, March 26, 2020 1:18 PM</p><p class=MsoPlainText>> To: volkszaehler.org - users</p><p class=MsoPlainText>> Subject: [vz-users] Protokoll-spezifische Schlüssel für S0</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> Hallo zusammen,</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> ich baue derzeit eine Schaltung, mit der ich meinen Wasserzähler an den</p><p class=MsoPlainText>> VZ anschliessen kann. Am Ende sollen dabei S0-Pulse rauskommen. Dazu</p><p class=MsoPlainText>> kann ich ja im VZ-Logger entsprechend konfigurieren.</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> Vorab: Bei mir laufen bereits zwei Stromzähler (SML). Als Hardware</p><p class=MsoPlainText>> verwende ich einen RaspberryPi der ersten Generation, auf dem läuft das</p><p class=MsoPlainText>> Image von volkszaehler.org.</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> Für die Konfiguration eines S0-fähigen Kanales ist mir folgendes aber</p><p class=MsoPlainText>> noch nicht ganz klar (ich beziehe mich auf die Seite</p><p class=MsoPlainText>> https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_</p><p class=MsoPlainText>> parameter):</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> - Parameter "gpio": Kann ich hier wahlfrei einen Pin nehmen, der in der</p><p class=MsoPlainText>> Tabelle angegeben ist?</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> - Parameter "configureGPIO": Was konfiguriert der Vzlogger denn?</p><p class=MsoPlainText>> Ausgewählter Pin als Input, mit Pulldown oder Pullup? Oder kann ich das</p><p class=MsoPlainText>> selbst noch irgendwo bestimmen? Andernfalls müsste ich ggf. auf "false"</p><p class=MsoPlainText>> setzen und beim Boot den Pin entsprechen konfigurieren (mit allen</p><p class=MsoPlainText>> notwendigen Skripten und Bibliotheken usw. Bäh.). Das wäre die</p><p class=MsoPlainText>> wichtigste Frage, denn danach richtet sich die Beschaltung meines Lesers.</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> Parameter "gpio_dir":  Normalerweise wird ja der High-Impuls (oder die</p><p class=MsoPlainText>> Flanke low -> high?) gezählt. Ist mit "Zählrichtung negativ" die Zählung</p><p class=MsoPlainText>> bei high -> low gemeint?</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> Meine Hardware generiert derzeit einen positiven 5V-Impuls mit</p><p class=MsoPlainText>> einstellbarer Dauer (30 ms und höher). Damit kann ich aber nicht direkt</p><p class=MsoPlainText>> an den RaspberryPi, weil der Spannungspegel nicht passt. Ich würde also</p><p class=MsoPlainText>> einen Optokoppler ansteuern und wäre potentialfrei. Am einfachsten wäre</p><p class=MsoPlainText>> es, den GPIO am Pi mit einem Optokoppler nach low ziehen (= Zählimpuls).</p><p class=MsoPlainText>> Ansonsten ist der Ausgang hochohmig und der interne Pullup am Pin zieht</p><p class=MsoPlainText>> auf definiertes Potential.</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> Danke für eure Hilfe und Anregungen.</p><p class=MsoPlainText>> </p><p class=MsoPlainText>> Daniel</p><p class=MsoPlainText><o:p> </o:p></p></div></body></html>