Open JBSullivan opened 3 years ago
Ich hätte eine Anlage und habe auch das Verlangen, Informationen über meinen BYD-Akku zu bekommen. Eigentlich wollte ich dazu gerade einen Request für einen BYD-Adapter erstellen, aber vielleicht bekommt man die Informationen ja auc schon über das neue AI vom Wechselrichter. Allerdings kann ich die Dokumente auf der verlinkten Seite nicht herunterladen. Hat da jemand mehr Glück?
Die Abfrage des BYD-Speichers mache ich schon über den parser auf das Webinterface, wenn dir diese Info kurzfristig weiterhilft:
der aktuelle Fronius Adapter liefert doch brav seine Werte vom Akkupack. Ebenso ist der Adapter auch mit der aktualisierten SolarAPI zu 100% kompatibel.
der aktuelle Fronius Adapter liefert doch brav seine Werte vom Akkupack. Ebenso ist der Adapter auch mit der aktualisierten SolarAPI zu 100% kompatibel.
Wenn der aktuelle Adapter neuer als eine Woche ist, muss ich ihn mal testen. Ansonsten stimmt wohl mit der Kommunikation zwischen WR und Batterie etwas nicht, denn bei mir sind die Felder alle leer.
Wenn ich "http://1.2.3.4/solar_api/v1//GetStorageRealtimeData.cgi?Scope=Device&DeviceId=0" aufrufe, bekomme ich Status Code 255 mit Reason "battery type 'BYD' is not supported". Hat der WR eventuell eine alte Firmware? Muss ich wohl mal nachschauen.
Es wäre toll, wenn man alle Daten gebündelt über den fronius-Adapter erhalten könnte. Fronius bietet ja eine offene Schnittstelle, die Daten müssten "ja dort nur abgeholt" werden. Ich weiß, dass das wahrscheinlich mit viel Arbeit verbunden ist, würde mich aber unheimlich freuen, wenn ich die Daten meines neuen GEN24 genauso in iobroker integrieren könnte, wie ich das momentan mit dem Fronius Symo tue.
@matthiasisrael D.h. der aktuelle Fronius Adapter funktioniert nicht mit den neuen GEN24 Wechselrichtern?
@JBSullivan : Die meisten Datenpunkten sind bislang leider leer. (Ich glaube nicht, dass das daran liegt, dass der PV - Installateur die Anlage noch nicht im Webportal eingetragen hat. Falls sich etwas ändert sage ich Bescheid)
Ich meine irgendwo mal gelesen zu haben, das Fronius für das GEN24 Modell eine neue API 2.0 eingeführt hat, die aber noch nicht veröffentlicht wurde. Eine Zeit lang gab es auf der Fronius Seite mal einen Download Link zur API ab GEN24. Der Link führte aber ins Nirvana - mittlerweile findet man zum Thema API > 1.0 bei Fronius nichts mehr.
Hier die Doku zu API 1.x
https://www.fronius.com/~/downloads/Solar%20Energy/Operating%20Instructions/42%2C0410%2C2012.pdf
In dem Dokument oben tauch ein Hinweis auf die Gen24 Geräte auf - leider wenig zufrieden stellend:
1.1 Fronius Generation 24 ☞ Products from Fronius Generation 24 are described here but be aware that this interface is a temporary solution and will be removed.
Hier noch ein paar weiterführende Infos:
https://github.com/iobroker-community-adapters/ioBroker.fronius/issues/49
bei einer Anfrage hat er mir 1.5 als API version zurück gegeben....
Es haben sich leider die meisten Variablen vom WR geändert. selbst die API Variablen vom SmartMeter wurden (warum auch immer) umbenannt!!!!!
Hier zwei Beispiele: "Voltage_AC_Phase_1" ==> "SMARTMETER_VOLTAGE_01_F64" "PowerReal_P_Phase_1" ==> "ACBRIDGE_CURRENT_ACTIVE_MEAN_01_F32"
Meine Anfrage läuft beim Support läuft seit 1.10.2020.......
Ein einfaches Javascript um mit dem Fronius Gen 24 zu kommunizieren:
console.log("Fronius Interface Version 1.2 started");
const csFroniusAcess = "http://192.168.178.112/solar_api/v1/"; const csFroniusEnergieFlow = csFroniusAcess + "GetPowerFlowRealtimeData.fcgi"; const csFroniusPVData = csFroniusAcess + "GetInverterRealtimeData.cgi?Scope=Device&DeviceId=0&DataCollection=CommonInverterData";
const csFroniusObjectPath = "javascript.0.Fronius."; const csObjPowerGrid = csFroniusObjectPath + "PGrid"; const csObjPowerPV = csFroniusObjectPath + "PPV"; const csObjPowerPV1 = csFroniusObjectPath + "PPV1"; const csObjPowerPV2 = csFroniusObjectPath + "PPV2"; const csObjPowerBattery = csFroniusObjectPath + "PBattery"; const csObjPowerConsumption = csFroniusObjectPath + "PConsumption"; const csObjBattery = csFroniusObjectPath + "BatteryLoad"; const csObjDeviceStatus = csFroniusObjectPath + "InverterStatus"; const csObjStatus = csFroniusObjectPath + "ConnectionState"; const csObjVisWidget = csFroniusObjectPath + "VisWidget";
const bForceObjectUpdate = false;
// Objekte für FRonius anlegen createState( csObjPowerGrid, 0, bForceObjectUpdate, {name: 'Power Netzversorger', unit: 'W'}); createState( csObjPowerPV, 0, bForceObjectUpdate, {name: 'Power Photovoltaik Summe', unit: 'W'}); createState( csObjPowerPV1, 0, bForceObjectUpdate, {name: 'Power Photovoltaik 1', unit: 'W'}); createState( csObjPowerPV2, 0, bForceObjectUpdate, {name: 'Power Photovoltaik 2', unit: 'W'}); createState( csObjPowerBattery, 0, bForceObjectUpdate, {name: 'Power Battery', unit: 'W'}); createState( csObjPowerConsumption, 0, bForceObjectUpdate, {name: 'Power consumption', unit: 'W'}); createState( csObjBattery, 0, bForceObjectUpdate, {name: 'Battery load', unit: '%'}); createState( csObjDeviceStatus, "", bForceObjectUpdate, {name: 'Inverter Status', type: 'string', unit: 'Info'}); createState( csObjStatus, 0, bForceObjectUpdate, {name: 'Fronius Communication Status', type: 'string', unit: 'Info'}); setState( csObjStatus, "not initialised", false ); // Ack=false, um nach dem ersten Zugriff die Verfügbarkeit zu bestätigen.
var request = require( "request" );
function ReadFroniusData() { var sErrMsg = "";
// PowerFlow aller Komponenten auslesen
request( csFroniusEnergieFlow, function (error, response, body) {
if( error != null )
{
setState( csObjStatus, "Error Fronius request: " + error, true );
}
else
{
// Nur beim ersten Zugriff den "fehlerfreien" Zustand übernehmen. Ansonsten den letzten Fehler beim Zugriff im Object halten.
if( getState( csObjStatus ).ack == false ) {
setState( csObjStatus, "Available", true );
}
var json = JSON.parse(body);
// console.log ( "JSON: " + JSON.stringify(json) );
var iVal = Math.round( -json.Body.Data.Site.P_Load * 10 ) / 10; // -Verbrauch, daher invertieren
setState( csObjPowerConsumption, iVal, true );
iVal = Math.round( json.Body.Data.Site.P_Akku * 10 ) / 10; // + Entladen, -Laden
setState( csObjPowerBattery, iVal, true );
iVal = Math.round( json.Body.Data.Site.P_PV * 10 ) / 10; // + PV Generatorleistung
setState( csObjPowerPV, iVal, true );
iVal = Math.round( json.Body.Data.Site.P_Grid * 10 ) / 10; // + Netzbezug, -Einspeisung
setState( csObjPowerGrid, iVal, true );
iVal = Math.round( json.Body.Data.Inverters['1'].SOC ); // Batterie Ladezustand
setState( csObjBattery, iVal, true );
// console.log( "Wert " + iVal + " " + json.Body.Data.Inverters['1'].SOC );
}
});
// PV Leistung Segment 1 / 2
request( csFroniusPVData, function (error, response, body) {
if( error != null )
{
setState( csObjStatus, "Error Fronius request: " + error, true );
}
else
{
// Nur beim ersten Zugriff den "fehlerfreien" Zustand übernehmen. Ansonsten den letzten Fehler beim Zugriff im Object halten.
if( getState( csObjStatus ).ack == false ) {
setState( csObjStatus, "Available", true );
}
var json = JSON.parse(body);
// console.log ( "JSON: " + JSON.stringify(json) );
var iVal = Math.round( json.Body.Data.IDC.Value * json.Body.Data.UDC.Value * 10 ) / 10; // Leistung PV1
setState( csObjPowerPV1, iVal, true );
iVal = Math.round( json.Body.Data.IDC_2.Value * json.Body.Data.UDC_2.Value * 10 ) / 10; // Leistung PV2
setState( csObjPowerPV2, iVal, true );
setState( csObjDeviceStatus, json.Body.Data.DeviceStatus.InverterState, true );
// console.log("PV2:" + json.Body.Data.IDC_2.Value );
}
});
}
schedule("/30 ", function () { // Abfrage alle 30 Sec ReadFroniusData(); });
Ich würde mir einen Adapter für den/die Wechselrichter der Firma Fronius wünschen, bzw. das jemand die Weiterentwicklung des bestehenden ioBroker Adapter übernimmt. Eine API Schnittstelle für Fronius Wechselrichter ist vorhanden.
https://www.fronius.com/de/solarenergie/produkte/alle-produkte/anlagen-monitoring/offene-schnittstellen/fronius-solar-api-json-
Es gibt bei ioBroker bereits einen Fronius Adapter. Wenn ich richtig informiert bin, basiert der aber auf einem alten API Datenbestand und wird vom Entwickler auch nicht mehr gepflegt, weil dieser keine Fronius Anlage mehr besitzt. In der Zwischenzeit hat sich jedoch bei Fronius einiges getan, sodaß es toll wäre wenn jemand anderer den bestehenden Adapter weiter entwickeln könnte, oder ggf einen neuen Adapter aus der Taufe heben würde.
https://github.com/iobroker-community-adapters/ioBroker.fronius/issues/34