Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen.

Moderatoren: Ulrich, TeamO

tuxflo
Beiträge: 38
Registriert: So 17. Mai 2020, 21:48
Hat sich bedankt: 4 Mal
Danksagung erhalten: 6 Mal

Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von tuxflo »

Da hier im Forum schon ab und an die Frage aufkam, wie man Stromzähler mit der solaranzeige verbinden kann, soll hier eine grobe Anleitung gegeben werden.

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
aufrufen
* dann eine neue Datenbank anlegen:

Code: Alles auswählen

create database vzlogger
* per

Code: Alles auswählen

show databases
sicherstellen, dass es geklappt hat
* per von InfluxDB abmelden

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
Nach der Installation der Abhängigkeiten kann das Tool heruntergeladen und kompiliert/installiert werden:

Code: Alles auswählen

wget --no-check-certificate https://raw.github.com/volkszaehler/vzlogger/master/install.sh
und

Code: Alles auswählen

sudo bash install.sh
Gesteuert wird der Dienst mit Hilfe von systemd, nach der Installation kann man also mittels

Code: Alles auswählen

sudo systemctl enable vzlogger.service
der Dienst so eingerichtet werden, dass er nach einem Neustart automatisch gestartet wird und mit Hilfe von

Code: Alles auswählen

sudo systemctl start vzlogger.service
. Den Status des Dienstes kann man mit

Code: Alles auswählen

sudo systemctl status vzlogger.service
abfragen. Eine Ausgabe sollte dann wie folgt aussehen:

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
Konfiguration:
vzlogger wird über eine zentrale Konfigurationsdatei

Code: Alles auswählen

/etc/vzlogger.conf
konfiguriert. Das Format der Datei ist JSON mit dem Zusatz, dass Kommentare (//) erlaubt sind. Um nun vzlogger beizubringen, dass in die InfluxDB geschrieben werden soll, muss die vzlogger.conf also entsprechend angepasst werden. Details dazu gibt es unter anderem in der Readme.md https://github.com/volkszaehler/vzlogge ... nfluxDB.md
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
verwendet werden.

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",
			}
			]
		}
	]
}
Die wichtigsten Werte die hier geändert werden müssen sind identifier und device. Bei identifier handelt es sich um die Werte die der Zähler liefert, also entweder der aktuelle Verbrauch in Watt oder der aktuelle Zählerstand. Welche identifier welche Werte liefern entnimmt man dem Volkszähler wiki. In der Beispielkonfiguration oben wird der aktuelle Verbrauch (Leistung in Watt) und der Verbrauch (kwh) von Stromzählern vom Typ Iskra MT681 ausgelesen. Die entsprechende Wiki Seite ist also diese: https://wiki.volkszaehler.org/hardware/ ... meco_mt681

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
(das -f bewirkt, dass die Ausgaben "live" mitverfolgt werden)

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.
query.png
Es ist natürlich auch möglich sich sowohl den erzeugten Strom, als auch den aktuellen Verbrauch in einem Graph anzeigen zu lassen:
solaranzeige_vzlogger.png

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"
Details dazu gibt es z.B. hier: https://askubuntu.com/questions/49910/h ... l-adapters


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
Kostal Pico Wechselrichter
SMA Tripower Wechselrichter

go-E Wallbox

per IR-Schreib/Lesekopf werden auch Zählerdaten erfasst

Raspi 4 über PoE HAT betrieben

Tipe1965
Beiträge: 64
Registriert: Do 24. Sep 2020, 12:13

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von Tipe1965 »

Wenn Bedarf besteht kann ich auch noch ttl Köpfe anbieten, habe grade noch welche im Zulauf. Wenn genug Interesse besteht würde ich die auch löten und alles.

Kaluschke
Beiträge: 5
Registriert: Fr 1. Jan 2021, 10:11
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von Kaluschke »

HI,
Vielen Dank für die Anleitung.
Ich hänge hier:

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

Frage: Was soll ich von GIThub installieren --> der Link führt zum gleichen Befehl wie hier.. bzw im Wiki noch zu den Libaries, aber anscheinend nicht alle dabei..
Der untige Befehl hat nach dem " / " ein CR --> also wird er beim Kopieren gesplittet --> wie lautet er richtig? bzw wieviele Leerzeichen dazwischen?
--> Befehl von Github hat das nicht und wird ausgeführt..

TeamO
Beiträge: 102
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 2 Mal
Danksagung erhalten: 6 Mal

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von TeamO »

Versuch es mal damit

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

Kaluschke
Beiträge: 5
Registriert: Fr 1. Jan 2021, 10:11
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von Kaluschke »

da kommt dann der Fehler:
E: Für Paket »libgnutls-dev« existiert kein Installationskandidat.


NAch einigen Befehlfolgen started der Kompiler, aber leider mit Fehlern..
-- Configuring incomplete, errors occurred!

CheckSymbolExists.c:(.text+0x148): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_d33e1.dir/build.make:87: cmTC_d33e1] Fehler 1
make[1]: Verzeichnis „/home/pi/vzlogger/build/CMakeFiles/CMakeTmp“ wird verlassen
make: *** [Makefile:121: cmTC_d33e1/fast] Fehler 2


Jetzt konnte ich es kompilieren.. jetzt noch die Conf-Datei verstehen und einrichten..

VZlogger startet aber im Status:
vzlogger.service - vzlogger
Loaded: loaded (/etc/systemd/system/vzlogger.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2021-01-05 17:39:04 CET; 16s ago
Process: 1682 ExecStart=/usr/local/bin/vzlogger -c /etc/vzlogger.conf (code=exited, status=1/FAILURE)
Main PID: 1682 (code=exited, status=1/FAILURE)

versucht die Config-File abzuändern, VI-Editor ist echt doof.. gibt es einen besseren Weg?

Kaluschke
Beiträge: 5
Registriert: Fr 1. Jan 2021, 10:11
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von Kaluschke »

letzter Eintrag für heute:
beim Installieren/Kompilieren:

could not find global config file /etc/vzlogger.conf
make sure to configure vzlogger before running (see etc/vzlogger.conf)

die Datei ist aber da, wurde ja auch schon von mir editiert.
aber ihm fehlt im Pfad das "vzlogger" Verzeichnis.

Vzlogger läuft sozuagen:
[Jan 05 20:20:07][main] vzlogger v0.8.0 based on heads/master-0-g6ab1bb7d9c-dirty from Sun, 3 Jan 2021 10:55:01 +0100 started.
[Jan 05 20:20:07] Cannot open configfile /etc/vzlogger.conf: No such file or directory
[Jan 05 20:20:07] Failed to parse configuration due to: Cannot open configfile.

--> Fehler gefunden die vzlogger.conf datei muß im /etc/vzlogger.conf liegen, wurde aber in der Installationsroutine nicht automatisch gemacht.
Also Befehl:
Home-Verzeichnis
cp vzlogger/etc/vzlogger.conf /etc/vzlogger.conf

dadurch ist die Datei Schreibgeschützt.
editierbar mittels:
sudo vi /etc/vzlogger.conf

Jetzt nur noch schauen ob was ankommt..

tuxflo
Beiträge: 38
Registriert: So 17. Mai 2020, 21:48
Hat sich bedankt: 4 Mal
Danksagung erhalten: 6 Mal

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von tuxflo »

Also zunächst mal ist vi bzw. vim, welches auf der solaranzeige auch verfügbar sein sollte, alles andere als doof :P
Du kannst auch

Code: Alles auswählen

sudo nano /etc/vzlogger.conf
oder

Code: Alles auswählen

sudo mcedit /etc/vzlogger.conf
verwenden.
Vielleicht hatte bei dir das Speichern der Datei nicht geklappt? Versuche dir mal die Datei per

Code: Alles auswählen

cat /etc/vzlogger.conf
auf dem Terminal ausgeben zu lassen. Wenn da nichts kommt, dann gab es ein Problem beim Speichern der Datei und du musst sie nochmal neu anlegen.

Hier nochmal der Befehl der Abhängigkeiten (ohne \):

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
Bei mir auf der aktuellen Version der solaranzeige lässt sich das genau so aufrufen und auch installieren.
Kostal Pico Wechselrichter
SMA Tripower Wechselrichter

go-E Wallbox

per IR-Schreib/Lesekopf werden auch Zählerdaten erfasst

Raspi 4 über PoE HAT betrieben

Kaluschke
Beiträge: 5
Registriert: Fr 1. Jan 2021, 10:11
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von Kaluschke »

Erstmal nochmal seeeehr großen Dank für deine Hilfe.

nun läuft es..bestimmt noch viel zu viele Module installiert aus Verzweiflung, aber zum erstmal spielen ok..
Mein Hauptproblem war, das der Installer/Kompiler keine vzlogger.conf in das richtig Verzeichnis gelegt hat.
das habe ich dann via CP erledigt --> dann Konfiguriert.

nun muß ich noch die Anzeige richtig hinbekommen.
erstmal nur Basic.
Screenshot_2021-01-06 Stromzaehler - Grafana(1).png

TeamO
Beiträge: 102
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 2 Mal
Danksagung erhalten: 6 Mal

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von TeamO »

Ich habe noch ein paar kleine Anpassung für die vzlogger.conf.
Damit man in Grafana nicht mit der komplizierten UUID arbeiten muss, einfach in der vzlogger.conf bei den "channels" bei jeden Wert den Ihr auslesen wollt noch zum Beispiel folgendes eintragen:

Code: Alles auswählen

"tags": "meter=EZ,data=receive",		// Optional: Hier kann für den Wert ein oder mehrere entsprechende Tags vergeben werden
Die Datenbankeinträge sehen nach einem Neustart von vzlogger so aus:

Code: Alles auswählen

time                data    meter uuid                                 value
----                ----    ----- ----                                 -----
1610181300000000000 receive EZ    62252074-2ede-48f1-a0c4-92ce32c1e018 67701.9
Bei den "tags" könnt Ihr natürlich die für Euch sinnvollen Bezeichnungen verwenden.
So könnt Ihr in Grafana bei mehreren Zählern und Werten einfacher mit den Bezeichungen arbeiten, anstatt mit der langen UUID.

Weiterhin habe ich folgende Anpassungen bei den "agg*"-Werten vorgenommen:

Code: Alles auswählen

"aggtime" : 60,
-> „aggtime“ bestimmt dabei die Zeit in Sekunden über die der vzlogger sammelt um daraus den Wert zu bestimmen. Sie gilt für alle channel des meter für die eine aggmode definiert wurde.

Code: Alles auswählen

"aggmode" : "max"
-> „avg“ Durchschnitt zu verwenden bei Aktualwerten wie Strom, Spannung oder Temperatur
„max“ Maximalwert zu verwenden bei Zählerständen
„sum“ Summe zu verwenden bei Impulsen (S0)
„none“ keine Aggreagtion vornehmen, alle Daten des channel gehen an die Middleware

Und noch eine ganz wichtige "Anpassung":
Ändert, wenn alles läuft, den Wert

Code: Alles auswählen

"verbosity" : 15,
-> depth of loging. 0=log_alert, 1=log_error, 3=log-warning, 5=log_info, 10=log-debug, 15=log_finest

auf 0 oder 1, da euch sonst ganz schnell die SD voll läuft ;)

tuxflo
Beiträge: 38
Registriert: So 17. Mai 2020, 21:48
Hat sich bedankt: 4 Mal
Danksagung erhalten: 6 Mal

Re: Anleitung:Einbindung von vzlogger zum Auslesen von Stromzählern

Beitrag von tuxflo »

Super, vielen Dank für die Anmerkungen, werde ich bei mir selbst auch einpflegen.
Kostal Pico Wechselrichter
SMA Tripower Wechselrichter

go-E Wallbox

per IR-Schreib/Lesekopf werden auch Zählerdaten erfasst

Raspi 4 über PoE HAT betrieben

Antworten