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.