Photovoltaik Fronius Gen24 Plus, BYD und ioBroker, what else? ;)
Ich hab mich für Fronius entschieden, weil dieser Hersteller technisch ein offenes System anbietet und zahlreiche öffentliche und gut beschriebene Schnittstellen hat.
Dies kann man nur begrüßen und unterstützen!
Der BYD-Speicher – Doku – bei mir war eher gezwungener Maßen, da dieser als einziger ein „FullBackUp“ also dreiphasigen Notstrom anbietet – das fand ich cool – komplette Autarkie ist möglich, auch wenn das Stromnetz down ist. Dafür braucht man eine 3phasige Netzentkopplung, dies geht bei mir über die Enwitec Netzumschaltbox – Doku – zumindest bisher in der Theorie – der Praxistest steht noch aus – mal schauen.
Der BYD-Speicher war merkwürdig zu konfigurieren und ist nun weder über LAN noch als AccessPoint erreichbar – aha – komisch – aber läuft -okay.
Keine Ahnung wie ich zukünftig Firmeware-updates einspielen soll.
Irgendeine Art von Schnittstelle wäre auch cool gewesen – ich muss mir das noch mal anschauen.
Meine Anlage läuft so richtig erst seit 2-3 Tagen und erst einmal wollte ich die Messwerte in den ioBroker übertragen.
Das scheint aber dann doch nicht sooo einfach wie gedacht.
Über die FroniusApp beim ioBroker findet man die wichtigstens 5-6 Werte, aber keine weiteren Details – immerhin ein Anfang.
Bisher sieht es damit wie folgt aus:
Mir fehlt aber wie voll der Speicher ist und wieviel Leistung von den verschiedenen Photovoltaikflächen/Strings kommt.
Über ModBus finde ich trotz guter Doku nicht die passenden Registersätze für den Gen24Plus – für die Hybrid gibt es da einige. Hmmm..
Okay, ein paar Daten habe ich gefunden, aber das entspricht den oberen, die ich eh schon habe . Doppelt hält besser? Ne…
Vielleicht doch nicht ganz so gut dokumentiert wie zuerst gedacht 😉
Aber wir haben ja auch noch eine JSON-Schnittstelle.
Es folgt eine Auflistung, einiger Schnittstellen und meiner ersten Bewertung:
Eine Übersicht der „möglichen“ Geräte? Wenn man mehrere hat, wahrscheinlich interessant.
http://192.168.178.112/solar_api/v1/GetActiveDeviceInfo.cgi?DeviceClass=Storage
http://192.168.178.112/solar_api/v1/GetActiveDeviceInfo.cgi?DeviceClass=System
http://192.168.178.112/solar_api/v1/GetInverterInfo.cgi
Nicht ganz so spannend, aber ein neues Feld:
„StatusCode“ : „Sleeping“,
Aber mit ein paar Parametern bekommt man hier einiges:
http://192.168.178.112/solar_api/v1/GetMeterRealtimeData.cgi?DeviceClass=Storage&Scope=System
Das muss ich mir auch noch in Ruhe zu gemüht führen.
Hier anscheinend die Ampers je String:
http://192.168.178.112/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DataCollection=3PInverterData
Hier noch bissel mehr:
http://192.168.178.112/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DataCollection=CommonInverterData
Und die Wattzahl und einiges mehr, dass sieht interessant aus:
http://192.168.178.112/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DataCollection=CumulationInverterData
Und dann gibt es noch eine ganze Menge an ehemaligen Apis, welche spannend klingen, aber abgeschafft wurde :(((
http://192.168.178.112/solar_api/v1/GetStringRealtimeData.cgi?DataCollection=NowStringControlData&Scope=System
http://192.168.178.112/solar_api/v1/GetStorageRealtimeData.cgi
Und natürlich zuerst die Schnittstelle, welche die Daten liefert die man auch per modbus und froniusApp unter ioBroker bekommt:
/solar_api/v1/GetPowerFlowRealtimeData.fcgi
ABER bei genauerer Betrachtung sind hier noch 2-3 Daten mehr drin 🙂
Der Batterieladestand, als auch Spannung und Stromstärke der Strings.
Über JS kann man sich ein paar Werte ja einfach mappen.
Anbei einmal ein kleines Skript, was ich dafür nutze und minütlich einmal aufrufe.
Die entsprechenden Variablen müssen vorher manuell angelegt werden.
var request = require('request');
var link = 'http://192.168.178.112/solar_api/v1/GetPowerFlowRealtimeData.fcgi';
var inverterData = 'http://192.168.178.112/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DataCollection=CommonInverterData';
function froniusAuslesen() {
request(link, function(error,response, body) {
if(error) log('Fehler request: ' + error, 'error');
else {
var result = JSON.parse(body);
log(result);
setState('javascript.0.fronius.SOC_Batterie', result.Body.Data.Inverters[1].SOC); //result.Body.Site.P_Grid
setState('javascript.0.fronius.BackUpMode', (( result.Body.Data.Site.BackupMode ) == 'true') );
}
});
request(inverterData, function(error,response, body) {
if(error) log('Fehler request: ' + error, 'error');
else {
var result = JSON.parse(body);
//log(result);
setState('javascript.0.fronius.String1VA'/*String1VA*/, (result.Body.Data.IDC.Value * result.Body.Data.UDC.Value) );
setState('javascript.0.fronius.String2VA'/*String2VA*/, (result.Body.Data.IDC_2.Value * result.Body.Data.UDC_2.Value) );
}
});
}
schedule('* * * * *', froniusAuslesen); // jede Minute