Voraussetzungen:
Als Hardware kann jeder beliebige IR Schreib/Lesekopf verwendet werden, der mit der Software "Volkszähler" kompatibel ist. Ich habe meine Köpfe von Stefan Bayha über ebay bezogen (https://www.ebay.de/usr/o_electronics_o ... 7675.l2559).
Ob man sich für die USB oder TTL Variante entscheidet ist im wesentlichen nur Geschmackssache. Theoretisch kann man einen TTL Lesekopf mit offenem Kabelende direkt an die entsprechenden GPIO PINs des Raspis hängen. Das hat bei mir jedoch nicht auf Anhieb geklappt, darum laufen meine beiden Leseköpfe über USB (der Lesekopf mit offenem Kabelende hängt an einem FDTI Adapter).
Vzlogger kann, wenn es entsprechend konfiguriert wird, direkt in eine InfluxDB schreiben. Am einfachsten lässt sich die Integration also bewerkstelligen, wenn man auf der InfluxDB, die von der solaranzeige bereitgestellt wird, eine neue Datenbank anlegt:
* per SSH auf der solaranzeige einloggen
* Befehl
Code: Alles auswählen
influx
* dann eine neue Datenbank anlegen:
Code: Alles auswählen
create database vzlogger
Code: Alles auswählen
show databases
* per
Code: Alles auswählen
exit
Als nächstes können die für das Kompilieren von vzlogger benötigten Abhängigkeiten installiert werden. Diese sind auf der GitHub Seite des Projektes zu finden: https://github.com/volkszaehler/vzlogger
Code: Alles auswählen
sudo apt-get install build-essential git-core cmake pkg-config subversion libcurl3-dev \
libgnutls28-dev libsasl2-dev uuid-dev uuid-runtime libtool dh-autoreconf libunistring-dev libgcrypt20-dev libmosquitto-dev
Code: Alles auswählen
wget --no-check-certificate https://raw.github.com/volkszaehler/vzlogger/master/install.sh
Code: Alles auswählen
sudo bash install.sh
Code: Alles auswählen
sudo systemctl enable vzlogger.service
Code: Alles auswählen
sudo systemctl start vzlogger.service
Code: Alles auswählen
sudo systemctl status vzlogger.service
Code: Alles auswählen
vzlogger.service - vzlogger
Loaded: loaded (/etc/systemd/system/vzlogger.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2020-12-07 17:18:11 CET; 3 weeks 0 days ago
Main PID: 11033 (vzlogger)
Tasks: 8 (limit: 4915)
CGroup: /system.slice/vzlogger.service
└─11033 /usr/local/bin/vzlogger -c /etc/vzlogger.conf
vzlogger wird über eine zentrale Konfigurationsdatei
Code: Alles auswählen
/etc/vzlogger.conf
Für den Gesamtaufbau der Konfiguration verweise ich auf die entsprechenden Wiki Seiten des Volkszähler Projektes:
https://wiki.volkszaehler.org/software/ ... r/vzlogger
und
https://wiki.volkszaehler.org/software/ ... _parameter
UUIDs:
Wenn vzlogger mit der Volkszähler Software verwendet wird, ist es wichtig, dass alle Geräte eine eindeutige Kennung in Form einer UUID erhalten. Beim Schreiben in die InfluxDB ist das nicht so wichtig, so lange die Geräte eindeutig sind. Am besten ihr notiert euch einfach die jeweiligen UUIDs zu den Geräten, damit ihr sie später in Grafana wieder findet. Zum Generieren einer UUID kann der Befehl
Code: Alles auswählen
uuidgen
Konkrete Beispielkonfiguration:
Hier ein konkretes Bespiel meiner vzlogger.conf. Damit werden zwei verschiedene Stromzähler (strom_1 und strom_2) ausgelesen:
Code: Alles auswählen
{
"retry" : 3,
"daemon": true,
"verbosity" : 15,
"log" : "/var/log/vzlogger.log",
"local" : {
"enabled" : false,
"port" : 80,
"index" : true,
"timeout" : 30,
"buffer" : 600
},
"meters" : [
{
"enabled" : true,
"device" : "/dev/strom_1",
"protocol" : "sml",
"parity" : "8N1",
"baudrate" : 9600,
"aggtime" : -1,
"aggfixedinterval" : true,
"channels": [{
"api" : "influxdb",
"uuid" : "86d93a20-28ea-11eb-88b2-a77c66ef7609",
"identifier" : "1-0:1.8.0",
"host" : "127.0.0.1:8086",
"database": "vzlogger", // Optional: make sure this database exists in InfluxDB
"ssl_verifypeer": true, // Optional: Disables the certificate verification for https connections
"aggmode" : "AVG"
},
{
"api" : "influxdb",
"host" : "127.0.0.1:8086",
"database": "vzlogger", // Optional: make sure this database exists in InfluxDB
"ssl_verifypeer": true, // Optional: Disables the certificate verification for https connections
"uuid" : "567e9a10-28e9-11eb-8207-93162e3c8cf0",
"identifier" : "1-0:16.7.0",
}
]
},
{
"enabled" : true,
"device" : "/dev/strom_2",
"protocol" : "sml",
"parity" : "8N1",
"baudrate" : 9600,
"aggtime" : -1,
"aggfixedinterval" : true,
"channels": [{
"api" : "influxdb",
"uuid" : "86d93a20-28ea-11eb-88b2-a77c66ef7666",
"identifier" : "1-0:1.8.0",
"host" : "127.0.0.1:8086",
"database": "vzlogger", // Optional: make sure this database exists in InfluxDB
"ssl_verifypeer": true, // Optional: Disables the certificate verification for https connections
"aggmode" : "AVG"
},
{
"api" : "influxdb",
"host" : "127.0.0.1:8086",
"database": "vzlogger", // Optional: make sure this database exists in InfluxDB
"ssl_verifypeer": true, // Optional: Disables the certificate verification for https connections
"uuid" : "567e9a10-28e9-11eb-8207-93162e3c8555",
"identifier" : "1-0:16.7.0",
},
{
"api" : "influxdb",
"host" : "127.0.0.1:8086",
"database": "vzlogger", // Optional: make sure this database exists in InfluxDB
"ssl_verifypeer": true, // Optional: Disables the certificate verification for https connections
"uuid" : "567e9a10-28e9-11eb-8207-93162e3c8181",
"identifier" : "1-0:1.8.1",
}
]
}
]
}
Schauen ob alles klappt:
Um zu prüfen was der vzlogger so treibt kann es hilfreich sein sich die entsprechenden Logausgaben anzeigen zu lassen. Das geht am einfachsten mit dem Befehl:
Code: Alles auswählen
tail -f /var/log/vzlogger.log
Daten anzeigen:
Falls keine Fehler vorhanden sind, kannn man nun die Werte in Grafana anzeigen. Dazu muss als erstes eine neue Datenquelle eingefügt werden (siehe Grafana Anleitungen hier im Forum). Unter "Database" wird logischerweise der Name der oben angelegten DB angegeben, in meinem Fall also "vzlogger". Danach kann man in einem bestehenden Dashboard oder einem neuen Dashboard die Datenquelle auswählen und sich die Werte als Graph anzeigen lassen. Die jeweiligen UUIDs sollten beim zusammenstellen der Query auch schon aus Vorschlag augelistet werden. Eine Bespielquery hänge ich als Screenshot an. Es ist natürlich auch möglich sich sowohl den erzeugten Strom, als auch den aktuellen Verbrauch in einem Graph anzeigen zu lassen:
Falls sich jemand fragt, woher die Gerätenamen "strom_1" und "strom_2" kommen:
die werden bei mir über sogenannte udev Rules als Symlink erzeugt, damit in den Konfigurationen auch nach einem Neustart die Geräte unter der gleichen Adresse angesprochen werden können. Details dazu gibt es schon in einigen Beiträgen hier im Forum. Hier nur der Vollständigkeit halber noch mein Eintrag in der udev Rule (/etc/udev/rules.d/88-usb.rules)
Code: Alles auswählen
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="kostal_wr"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", SYMLINK+="strom_1"
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="strom_2"
Ich hoffe dem ein oder anderen hat die Anleitung geholfen und wir sehen im Forum demnächst viele hübsche Dashboards für die Stromzähler

Bei Fragen, einfach Fragen