<div dir="ltr">Hallo zusammen,<div><br></div><div>ich habe mit pymeterreader (<a href="https://pypi.org/project/pymeterreader/" target="_blank">https://pypi.org/project/pymeterreader/</a>, <a href="https://github.com/Schwaneberg/pymeterreader" target="_blank">https://github.com/Schwaneberg/pymeterreader</a>) eine Alternative zu vzlogger implementiert.</div><div><br></div><div>Die Ziele von pymeterreader sind:</div><div>1.
 Automatische Zuordnung von Metern zu Schnittstellen. Wenn z.B. mehrere 
(identische) Leseköpfe auf z.B. /dev/ttyUSB0, /dev/ttyUSB1, etc. sind, 
dann kann pymeterreader diese Schnittstellen dynamisch zu Metern (nach 
ID) und somit zu den Kanälen im Volkszahler zuordnen.</div><div>2. Die 
Schnittstellen werden nur während des Lesens gebunden. Abfragen durch 
andere Programme und Verbindungsabbrüche im laufenden Betrieb sollten 
kein Problem sein.</div><div>3. Die Installation und Konfiguration soll 
einfach und komfortabel sein. Ich möchte noch ein Hilfstool/wizard für 
die individuelle Konfiguration erstellen.</div><div><br></div><div>Installation auf dem Pi (erfordert Buster mit Python 3.7):</div><div><br></div><div><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:13.6px;margin-top:0px;margin-bottom:16px;padding:16px;overflow:auto;line-height:1.45;border-radius:6px;color:rgb(36,41,46)"><code style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;padding:0px;margin:0px;background:initial;border-radius:6px;word-break:normal;border:0px none;display:inline;overflow:visible;line-height:inherit">sudo python3 -m pip install pip --upgrade
sudo python3 -m pip install pymeterreader
sudo systemctl enable pymeterreader</code></pre></div><div>Nach der Installation muss /etc/pymeterreader.yaml angepasst werden. Hier das Template:</div><div><pre style="color:rgb(8,8,8);font-family:"JetBrains Mono",monospace"><span style="color:rgb(0,51,179)">devices</span>:<br>  <span style="color:rgb(0,51,179)">electric meter</span>:<br>    <span style="color:rgb(0,51,179)">channels</span>:<br>      <span style="color:rgb(0,51,179)">1.8.0</span>:<br>        <span style="color:rgb(0,51,179)">uuid</span>: c07ef180-e4c6-11e9-95a6-434024b862ef<br>        <span style="color:rgb(0,51,179)">interval</span>: 5m<br>    <span style="color:rgb(0,51,179)">tty</span>: /dev/ttyUSB\d+  <span style="color:rgb(140,140,140);font-style:italic"># optional, regex support<br></span><span style="color:rgb(140,140,140);font-style:italic">    </span><span style="color:rgb(0,51,179)">id</span>: 1 EMH00 12345678<br>    <span style="color:rgb(0,51,179)">protocol</span>: sml<br>    <span style="color:rgb(0,51,179)">baudrate</span>: 9600<br>  <span style="color:rgb(0,51,179)">heat meter</span>:<br>    <span style="color:rgb(0,51,179)">channels</span>:<br>      <span style="color:rgb(0,51,179)">6.8</span>:<br>        <span style="color:rgb(0,51,179)">uuid</span>: 83b52b26-1c1a-444d-bf46-d9c702fee644<br>        <span style="color:rgb(0,51,179)">factor</span>: 1000  <span style="color:rgb(140,140,140);font-style:italic"># convert kWh to Wh<br></span><span style="color:rgb(140,140,140);font-style:italic">        </span><span style="color:rgb(0,51,179)">interval</span>: 12h<br>    <span style="color:rgb(0,51,179)">id</span>: 888777666<br>    <span style="color:rgb(0,51,179)">protocol</span>: plain<br>  <span style="color:rgb(0,51,179)">climate basement</span>:<br>    <span style="color:rgb(0,51,179)">channels</span>:<br>      <span style="color:rgb(0,51,179)">humidity</span>:<br>        <span style="color:rgb(0,51,179)">uuid</span>: ca5a59ee-5de5-4a20-a24a-fdb5f64e5db0<br>        <span style="color:rgb(0,51,179)">interval</span>: 1h<br>      <span style="color:rgb(0,51,179)">temperature</span>:<br>        <span style="color:rgb(0,51,179)">uuid</span>: 397eda02-7909-4af8-b1a6-3d6c8535229a<br>        <span style="color:rgb(0,51,179)">interval</span>: 1h<br>      <span style="color:rgb(0,51,179)">pressure</span>:<br>        <span style="color:rgb(0,51,179)">uuid</span>: 250ca04a-02ee-4a1b-98dd-3423b21008b7<br>        <span style="color:rgb(0,51,179)">interval</span>: 1h<br>    <span style="color:rgb(0,51,179)">id</span>: 0x76  <span style="color:rgb(140,140,140);font-style:italic"># Default I2C address<br></span><span style="color:rgb(140,140,140);font-style:italic">    </span><span style="color:rgb(0,51,179)">protocol</span>: BME280  <span style="color:rgb(140,140,140);font-style:italic"># A sensor, not a real meter<br></span><span style="color:rgb(140,140,140);font-style:italic"><br></span><span style="color:rgb(0,51,179)">middleware</span>:<br>  <span style="color:rgb(0,51,179)">type</span>: volkszaehler<br>  <span style="color:rgb(0,51,179)">middleware_url</span>: <a href="http://localhost/middleware.php" target="_blank">http://localhost/middleware.php</a>  <span style="color:rgb(140,140,140);font-style:italic"># optional, defaults to local host<br></span><span style="color:rgb(140,140,140);font-style:italic">  </span><span style="color:rgb(0,51,179)">interpolate</span>: True  <span style="color:rgb(140,140,140);font-style:italic"># Interpolate hourly values, if interval >=2h<br></span></pre></div><div>Nach der Konfiguration kann pymeterreader als Service mit systemctl gestartet werden:<br></div><div><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:13.6px;margin-top:0px;margin-bottom:16px;padding:16px;overflow:auto;line-height:1.45;border-radius:6px;color:rgb(36,41,46)"><code style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;padding:0px;margin:0px;background:initial;border-radius:6px;word-break:normal;border:0px none;display:inline;overflow:visible;line-height:inherit">sudo systemctl start pymeterreader
journalctl -f  # Dem Log folgen<br></code></pre></div><div>Über Feedback und vielleicht sogar Mitarbeit am Projekt würde ich mich freuen.</div><div>Es wäre auch schön wenn das Projekt auf Volkszahler.org verlinkt werden würde.</div><div><br></div><div>PS:
 Entschuldigung falls diese Mail nun doppelt in der Liste ist. Beim 
ersten Versuch ist die Bestätigungsmail im Spamfilter hängen geblieben.<br></div><div><br></div><div>Viele Grüße</div><font color="#888888"><font color="#888888"><div><br></div><div>Oliver Schwaneberg</div></font></font></div>