Ich habe mein vorhandenes Victronsystem (3x MPII 5000 + Zeug) um einen Kostal Plenticore G3 erweitert und neben der Verbindung zum CerboGX (wird hier im Forum schon beschrieben: Kostal Plenticore spricht mit Victron System / GitHub - davwil/venus_kostal_plenticore: Victron Venus Os Plugin for Plenticore Plus inverters) möchte ich die Daten auch in meinen Grafana Dashboards sehen. Ich habe dafür Lösungen per Modbus gesehen (glaube direkt vom Kostal Zähler, den ich nicht verbaut habe, der WR hängt "dumm" am AC-Out von den MPII und wird per Frequenz geregelt) und bin dann den Weg über die lokale API des Kostal WR gegangen.
Dabei wurde ich fündig hier: Kostal API auth and call (flow) - Node-RED und habe damit weiter experimentiert und das ausgebaut, nun zur Anleitung:
Du benötigst einen Homeserver mit Node-RED, InfluxDB (oder anderer DB) und Grafana, sowie einen Kostal WR der per API auslesbar ist.
Test ob der Kostal das kann, per http://192.168.YYY.XXX/api/v1/info/version (die eigene IP-Adresse natürlich verwenden des WR), da sollte sowas heraus kommen:
// 20241220110925
// http://192.168.0.154/api/v1/info/version
{
"name": "PUCK RESTful API",
"api_version": "0.2.0",
"sw_version": "3.04.00.16312",
"hostname": "Kostal-Hausdach"
}
Dann auf dem Homeserver crypto.js und crypto-js installieren per "npm install crypto.js" und "npm install crypto-js" und in der .node-red/settings.js einbinden "nano .node-red/settings.js" (runter scrollen bis "functionGlobalContext" und die 2 Zeilen "crypto..." und "nodeCrypto..." einfügen):
functionGlobalContext: {
// os:require('os'),
binary_parser:require('binary-parser').Parser,
cryptojs:require('crypto-js'),
nodeCrypto:require('crypto'),
},
Mit "systemctl restart nodered.service" den Service von Node-RED neustarten und sich auf der Webseite neuanmelden.
In Node-RED müssen folgende Paletten installiert sein (Whoppermenu - Einstallungen - Palette):
- node-red-contrib-influxdb (oder andere DB, dann den Flow ändern)
- openapi-red
Dann am besten einen neuen Tab anlegen in Node-RED und
Kostal Plenticore Flow.json.txt (36,8 KB) herunterladen, öffnen in einem Editor, alles markieren und CTRL+C, dann im eigenen Node-RED per Whoppermenu (rechts oben die 3 Streifen), Import, Zwischenablage, CTRL+V den Code importieren.
Nun in der Node "post_auth_start" unter "Node settings" - "Source" neben "http://192.168.0.154/api/v1/swagger.json" auf den Stift klicken und im folgenden Fenster die IP auf die IP eures Kostal WR ändern, dann dahinter das Refresh/Recycle Icon klicken und aktualisieren + fertig auswählen. Dann in der Node "Prepare Auth Finish Payload" in Zeile 13 euer Password des Kostal einfügen (das Posswort setzt ihr wenn ihr die IP eures WR einmal im Browser aufruft und euch dort einlogt (das ist das Passwort), wenn ihr das noch nie getan habt, dann müsst ihr es dort setzen, das passiert beim ersten Login automatisch, für den ersten Login benötigt ihr den Masterkey, der seitlich auf dem Schildchen eures WR steht). Nun noch die Einstellungen in der InfluxDB Node so ändern das ihr euren DB-Server dort auswählt (hier ist meine IP hinterlegt).
Ihr könnt dann natürlich weitere Einstellungen vornehmen, zur Zeit schreibt der Flow folgende Daten alle 5 Sek in die DB:
- "solar_panels_power" - Summe der 3 MPPTs
- "solar_panel1_voltage", "solar_panel1_current", "solar_panel1_power" - Volt, Ampere und Watt von MPPT/String 1
- "solar_panel2_voltage", "solar_panel2_current", "solar_panel2_power" - Volt, Ampere und Watt von MPPT/String 2
- "solar_panel3_voltage", "solar_panel3_current", "solar_panel3_power" - Volt, Ampere und Watt von MPPT/String 3
- "solar_panel1_yield_day", month, year und total - Wh String 1
- "solar_panel2_yield_day", month, year und total - Wh String 2
- "solar_panel3_yield_day", month, year und total - Wh String 3
- "solar_panels_yield_day", month, year und total - Wh Summe
Die Daten finden sich dann, nach Einrichtung der Datenquelle, in Grafana und lassen sich dort einfach visualisieren.
Viel erfolg damit!
LG
Caspar