<div dir="ltr"><div><div><div><div>Hallo,<br><br></div>ich bin neu hier. Nachdem Udo mir schon ein paar Tipps gegeben hat, möchte ich mein aktuelles vzlogger-Problem hier schildern.<br><br>Ich möchte meinen Gaszähler über den eingebauten Magneten und einen Reed-Kontakt auslesen. Ich stehe vor der Herausforderung über 
saubere Zählimpulse zu einer korrekten Zählung zu kommen. Die Auswertung soll über die HTTPd-Schnittstelle in Fhem erfolgen (keine Volkzaehler-Middleware und Frontend). Die optimale 
Lösung habe ich noch nicht gefunden bzw. bin ich auf Ungereimtheiten im 
vzlogger gestossen.<br></div><br></div>Ich hoffe, jemand hast den ein oder anderen Hinweis für mich.<br><br></div>Hier meine Überlegungen:<br><ul><li>Mein
 Gaszähler liefert bei einer Umdrehung (entspricht 0,001 m³) einen Magnetimpuls. Für 
eine Umdrehung werden vermutlich minimal ca. 20 Sekunden bei voller Leistung 
benötigt.</li><li>Der Impuls erfolgt beim Nulldurchgang der 1000er-Nachkommastelle.</li><li>Der Reedkontakt prellt beim Schliessen und prellt beim Öffnen</li><li>Der Reedkontakt bleibt bei kontinuierlicher Abnahme je nach Leistung ca. 0,6 bis mehrere Sekunden geschlossen</li><li>Bleibt
 der Gaszähler im Nulldurchgang stehen, kann der Reedkontakt über 
Stunden und Tage geschlossen bleiben, solange, bis die Heizung wieder 
startet.</li></ul><p>Um auch den letzten Fall im obigen Szenario 
abzudecken, sieht meine Ideallösung so aus, dass jeweils beim Schliessen
 und beim Öffnen ein Impuls registriert wird. Bei der Auswertung teile 
ich später die Impulse durch 2. Mit dieser Regel sollte eine maximale 
Ablesegenauigkeit erreicht werden.</p><p>Soweit zur Theorie. Zur Umsetzung:</p><ul><li>Der Reedkontakt ist direkt mit den S0-Eingängen der YPORT+_Erweiterung von Udo verbunden.</li><li>Die Signalerfassung erfolgt über vzlogger (v0.4.8) mit protocol S0 und identifier Impulse (komplette Config siehe unten).<br></li><li>Das Entprellen soll vzlogger mit dem Parameter debounce_delay erledigen.</li><li>Mit debounce_delay = 500 sollte nach meinem Verständnis das Entprellen unterdrückt werden.</li></ul><p>Das sind meine Testergebnisse mit meinem Testaufbau (aufgeführt sind immer nur die erzeugten Datentupel des HTTPd-Outputs):</p><p>

</p><p style="margin-left:18pt"><span style="font-family:Symbol"><span><span style="font:7pt "Times New Roman""></span></span></span>Entprellen mit debounce_delay = 500:<span><span></span></span></p><ul><li><span><span><span style="font:7pt "Times New Roman""></span></span></span><span style="font-family:"Arial",sans-serif">erster Impuls < 0.5s:<span>      </span>[ 1451463068203, 2 ], [ 1451463069203, 1 ]<span>      </span>> 3 Zähler</span><span><span></span></span></li><li><span><span><span style="font:7pt "Times New Roman""> </span></span></span><span style="font-family:"Arial",sans-serif">zweiter Impuls</span><span style="font-family:"Arial",sans-serif"><span style="font-family:"Arial",sans-serif"> < 0.5s</span>: <span>   </span>[ 1451463068203, 2 ], [ 1451463069203, 1 ]<span>      </span>> 3 Zähler</span><span><span></span></span></li><li><span><span><span style="font:7pt "Times New Roman""> </span></span></span><span style="font-family:"Arial",sans-serif">dritter Impuls</span><span style="font-family:"Arial",sans-serif"><span style="font-family:"Arial",sans-serif"> < 0.5s</span>:<span>      </span>[ 1451463086203, 1 ], [ 1451463091203, 1 ], [ 1451463092203, 1 ]<span>    </span>> 3 Zähler</span><span><span></span></span></li><li><span><span><span style="font:7pt "Times New Roman""> </span></span></span><span style="font-family:"Arial",sans-serif">Impuls
 mit 3s Halten: [ 1451463345203, 1 ], [ 1451463346203, 1 ], [ 
1451463351203, 1 ], [ 1451463352203, 1 ] > erzeug 2 + 2 = 4 Zähler 
(beim Schließen und Öffnen jeweils 2!)</span></li></ul><p>Hier fällt 
auf, dass bei einem Impuls immer zwei Datentupel mit exakt 1 Sekunde 
Abstand geliefert werden. Der erste Tupel liefert den Wert 2, also 2 
Impulse. Meine Erwartungshaltung ist pro Impuls ein Datentupel mit dem 
Wert 1. Erhöhe ich debounce_delay auf 1000, wird immer der Wert 1, ausgegeben.<br></p><p>Weitere Tests ergaben, dass bei kurzen Impulsen und bei 
Werten von debounce_delay von 0 bis 1000 immer zwei bis drei Datentupel  im Abstand 
von einer Sekunde erzeugt werden. Bei debounce_delay 2000 oder 4000 
erfolgen die Ausgaben im Abstand von 2 bzw. 4 Sekunden.</p><p>Ich habe für dieses Verhalten keine plausible Erklärung.</p><p>Hier meine vzlogger.conf:</p><p>{<br>  "retry": 0,<br>  "daemon": true,<br>  "verbosity": 15,<br>  "log": "/var/log/vzlogger.log",<br><br>  "local": {<br>    "enabled": true,<br>    "port": 8080,<br>    "index": true,<br>    "timeout": 0,<br>    "buffer": 120<br>  },<br>  "meters": [<br>    {<br>      "enabled": true,<br>      "allowskip": false,<br>      "interval": -1,<br>      "aggtime": -1,<br>      "aggfixedinterval": false,<br>      "channels": [<br>        {<br>          "uuid": "120",<br>          "identifier": "Impulse",<br>          "api": "null",<br>          "middleware": "",<br>          "secretKey": "",<br>          "type": "device",<br>          "scaler": 0,<br>          "aggmode": "none",<br>          "duplicates": 0<br>        }<br>      ],<br>      "protocol": "s0",<br>      "device": "",<br>      "gpio": 20,<br>      "gpio_dir": -1,<br>      "configureGPIO": true,<br>      "resolution": 1,<br>      "send_zero": false,<br>      "debounce_delay": 500,<br>      "nonblocking_delay": 100000<br>    }<br>  ]<br>}<br></p></div>