<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"><div><br></div><div>Oliver Schwaneberg</div></font></div>