Zum Hauptinhalt springen

invaps (inverter value Prometheus service)

Mit invaps werden zuvor gespeicherte Processdata-Werte eines Kostal Plenticore Wechselrichters aus einer MariaDB-Datenbank gelesen und als Metriken zur Abfrage für die Service-Monitoring-Software Prometheus zur Verfügung gestellt.

Dieses Tool steht in keiner Verbindung zum Unternehmen KOSTAL Solar Electric GmbH und ist kein offizielles Produkt der KOSTAL Solar Electric GmbH oder anderer Tochterunternehmen der Kostal Gruppe.

Übersicht

Invaps ist einer von mehreren Bausteinen zur Erzeugung eines Grafana-Dashboards für Kostal Plenticore-Wechselrichter. Dabei liest invafetch zunächst die Processdata-Werte in regelmäßigen Abständen von der Inverter-API und speichert die Ergebnisse im JSON-Format in einer MariaDB-Tabelle. Das Tool invaps nutzt diese Werte, d.h. liest sie aus und stellt sie Prometheus auf Anfrage zur Verfügung. Grafana wiederum nutzt Prometheus als Datenquelle zur Erstellung eines Dashboards für den Kostal Plenticore Wechselrichter. Hierbei wurde ein modulares Konzept umgesetzt, so dass jeweils eine möglichst kleine Anwendung für eine einzige Aufgabe zuständig ist. Die MariaDB-Datenbank dient dabei als Schnittstelle der Tools invafetch und invaps und damit als Pufferspeicher für die Processdata-Werte. Für eine nähere Beschreibung von invafetch siehe im invafetch-GitHub-Repository, ein vollständiges Beispiel inkl. Definition des Grafana-Dashboards und eines Docker-Compose-Files, mit dem alle Komponenten in einer Docker-Umgebung gestartet werden können, findet sich ebenfalls bei GitHub im grkopv-dashboard-Repository.

Installation

Die empfohlene Installationsmethode ist die Nutzung des Docker-Images. Daneben kann invaps aus dem Quellcode wie jedes andere in Go geschriebene Programm installiert werden:

$ git clone https://github.com/geschke/invaps
$ cd invaps/
$ go build
$ go install

Mit diesen Kommandos wird die ausführbare Datei „invaps“ erzeugt und in die entsprechenden Verzeichnisse kopiert, d.h. nach  $HOME/go/bin/invaps (oder unter Windows  %USERPROFILE%\go\bin\invaps.exe).
Daraufhin kann invaps  einfach in der Kommandozeile gestartet werden.

Konfiguration

Zur Konfiguration dient eine Datei .env, die sich entweder im aktuellen Verzeichnis, in einem Verzeichnis ./config oder /config befinden muss. Des Weiteren ist die Nutzung von Umgebungsvariablen möglich. Dabei benötigt invaps Zugriff auf die von invafetch genutzte Datenbank. Wie bei invafetch ist auch bei invaps Lese- und Schreibzugriff notwendig, da die gespeicherten Werte aktuell nach zwei Tagen gelöscht werden, um den Platzbedarf zu verringern. Um das Löschen aus der Datenbank zu verhindern kann der Parameter PURGE_DAYS auf 0 gesetzt werden.

Neben der Datenbank-Verbindung kann noch der Webserver-Port konfiguriert werden, wobei dieser standardmäßig auf 8080 eingestellt ist.

Übersicht der Konfigurationsoptionen:

Environment-Variable Default-Wert Beispiel Hinweis
DBHOST (leer) „MARIADB DATABASE SERVER“ Datenbank-Server
DBUSER (leer) „DATABASE USERNAME“ Datenbank-User
DBNAME (leer) „DATABASE NAME“ Name der Datenbank
DBPASSWORD (leer) „DATABASE PASSWORD“ Passwort des Datenbank-Users
DBPORT „3306“ „3306“ Datenbank-Port (optional)
PORT „8080“ „8080“ Webserver-Port
PURGE_DAYS 2 14 Lösche Daten aus der Datenbank nach n Tagen; 0 deaktiviert Löschen

 

Quick Start

Invaps setzt auf dem Gin HTTP web framework auf. Gin nutzt die Umgebungsvariable GIN_MODE zur Einrichtung des Debug-Modus, der zusätzliche, für den Betrieb nicht notwendige Ausgaben enthält. Falls GIN_MODE nicht gesetzt ist, wird der Debug-Modus aktiviert, für den Betrieb und zur Deaktivierung des Debug-Modus ist GIN_MODE=release zu setzen.

Beim Start von invaps wird die Konfigurationsdatei .env gelesen. Falls diese fehlt oder keine Verbindung hergestellt werden kann, wird invaps beendet.

Wird invaps ohne Parameter oder mit dem Flag --help bzw. -h aufgerufen, erscheint eine Übersicht der verfügbaren Kommandos:

Ein erfolgreicher Start von invaps sieht wie folgt aus:

$ ./invaps
2022/08/11 18:10:56 invaps starting on port 8080...
2022/08/11 18:10:56 in recordCurrentValues again!
2022/08/11 18:10:56 in recordcurrentValues again with last values!
[...]

Invaps stellt die Inverter-Metriken daraufhin unter der URL http://[server][:port]/metrics zur Verfügung.

Lizenz

Invaps ist Open Source Software und steht unter der MIT Lizenz. Die vollständigen Lizenzbedingungen befinden sich in der Datei LICENSE im invaps-Repository.