Fronius PV Anlage auslesen
Moderator: Co-Administratoren
Re: Fronius PV Anlage auslesen
Ok danke. Hab CUxD installiert und das Script liefert keine Daten in die Variablen. Dachte es liegt daran.
Dann muss der Fehler wo anders liegen.
Hab den Fronius Wechselrichter erst kurz. Meine Homematic auf Raspberry läuft schon seit Jahren stabil.
Bin leider kein Profi mit Scripts und freue mich über die tolle Hilfe hier im Forum.
Lg
Peter
Dann muss der Fehler wo anders liegen.
Hab den Fronius Wechselrichter erst kurz. Meine Homematic auf Raspberry läuft schon seit Jahren stabil.
Bin leider kein Profi mit Scripts und freue mich über die tolle Hilfe hier im Forum.
Lg
Peter
Re: Fronius PV Anlage auslesen
Hallo.
Der Fehler kann an mehreren Stellen sein.
1 hat dein fronius einen datenloger und kannst du den hausverbrauch im fronius Portal sehen.
Wen ja Dan must du das Skript umbauen, und statt den Variablen mit state ändern.
dom.GetObject(variable_verbrauch).Variable(wertVerbrauch.ToInteger() * -1);
dom.GetObject(variable_verbrauch).State(wertVerbrauch.ToInteger() * -1);
LG nape1
Der Fehler kann an mehreren Stellen sein.
1 hat dein fronius einen datenloger und kannst du den hausverbrauch im fronius Portal sehen.
Wen ja Dan must du das Skript umbauen, und statt den Variablen mit state ändern.
dom.GetObject(variable_verbrauch).Variable(wertVerbrauch.ToInteger() * -1);
dom.GetObject(variable_verbrauch).State(wertVerbrauch.ToInteger() * -1);
LG nape1
Re: Fronius PV Anlage auslesen
Hallo habe eine Fronius Symo Wechselrichter mit einen Fronius Smarteter inkl. Stromspeicher kann ich Irgendwie die Aktuelle Auslastung der drei Phasen auslesen bzw. wie ist das Realisierbar bitte um unterstützung kenn mich damit nicht so aus.
Mit freundlichen Grüßen.
Mit freundlichen Grüßen.
Mit freundlichen Grüßen.
Re: Fronius PV Anlage auslesen
Hallo, habe Wechselrichter, Smartmeter, und Akku, würde auch gerne auslesen, kenne mich mit Skripsprache nicht aus.
habe das ausgelesen
http://192.........../solar_api/v1/GetI ... verterData
Code: Alles auswählen
{
"Body" : {
"Data" : {
"DAY_ENERGY" : {
"Unit" : "Wh",
"Value" : 7494
},
"DeviceStatus" : {
"ErrorCode" : 0,
"LEDColor" : 0,
"LEDState" : 0,
"MgmtTimerRemainingTime" : -1,
"StateToReset" : false,
"StatusCode" : 2
},
"TOTAL_ENERGY" : {
"Unit" : "Wh",
"Value" : 7745
},
"YEAR_ENERGY" : {
"Unit" : "Wh",
"Value" : 7742
}
}
},
"Head" : {
"RequestArguments" : {
"DataCollection" : "CommonInverterData",
"DeviceClass" : "Inverter",
"DeviceId" : "1",
"Scope" : "Device"
},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : ""
},
"Timestamp" : "2020-03-05T18:52:18+01:00"
}
}
Code: Alles auswählen
{
"Körper" : {
"Daten" : {
"0": {
"Current_AC_Phase_1": 0.52000000000000002,
"Current_AC_Phase_2": 0,222,
"Current_AC_Phase_3": 0,83299999999999996,
"Einzelheiten" : {
"Hersteller": "Fronius",
"Modell": "Smart Meter 63A",
"Seriell": "19260289"
},
"Aktivieren": 1,
"EnergyReactive_VArAC_Sum_Consumed": 3660,
"EnergyReactive_VArAC_Sum_Produced": 52340,
"EnergyReal_WAC_Minus_Absolute": 3998,
"EnergyReal_WAC_Plus_Absolute": 9159,
"EnergyReal_WAC_Sum_Consumed": 9159,
"EnergyReal_WAC_Sum_Produced": 3998,
"Frequency_Phase_Average": 50,
"Meter_Location_Current": 0,
"PowerApparent_S_Phase_1": 117.72800000000001,
"PowerApparent_S_Phase_2": 50.416199999999996,
"PowerApparent_S_Phase_3": 187.50829999999999,
"PowerApparent_S_Sum": 283,
"PowerFactor_Phase_1": 0.67000000000000004,
"PowerFactor_Phase_2": 0.52000000000000002,
"PowerFactor_Phase_3": 0,87,
"PowerFactor_Sum": 0.76000000000000001,
"PowerReactive_Q_Phase_1": -80.040000000000006,
"PowerReactive_Q_Phase_2": -34.520000000000003,
"PowerReactive_Q_Phase_3": -69.060000000000002,
"PowerReactive_Q_Sum": -183,62,
"PowerReal_P_Phase_1": 72.640000000000001,
"PowerReal_P_Phase_2": 21,52,
"PowerReal_P_Phase_3": 122,72,
"PowerReal_P_Sum": 216,88,
"TimeStamp": 1583430936,
"Sichtbar": 1,
"Voltage_AC_PhaseToPhase_12": 392.69999999999999,
"Voltage_AC_PhaseToPhase_23": 391.60000000000002,
"Voltage_AC_PhaseToPhase_31": 391,
"Voltage_AC_Phase_1": 226.40000000000001,
"Voltage_AC_Phase_2": 227.09999999999999,
"Voltage_AC_Phase_3": 225.09999999999999
}}
}}
},
"Kopf" : {
"RequestArguments": {
"DeviceClass": "Meter",
"Geltungsbereich": "System"
},
"Status": {
"Code": 0,
"Grund" : "",
"UserMessage": ""
},
Zeitstempel: 2020-03-05T18: 55: 36 + 01: 00
}}
}}
Re: Fronius PV Anlage auslesen
Hallo klexi58 und alle anderen Homematic/Fronius-Nutzer, die das Problem mit den nicht befüllten Variablen haben!
U.a. wegen dieses vielversprechenden Threads habe ich mich bei meiner neuen PV-Anlage auch für einen WR von Fronius entschieden. Noch einmal besten Dank an den Programmierer dieses Skripts!
Nun läuft die PV-Anlange mit dem Symo und ich hatte das gleiche Problem, dass die Variablen nicht gefüllt wurden. Habe mich extra in die Skript-Sprache hineingefuxt um das Problem zu analysieren und kann nun berichten: mit dem Skript nach allen Modifikationen aus dem Verlauf dieses Threads ist alles i.O.
Das Problem lag bei CUx-Daemon! Scheinbar muss auch für die im Skript verwendten Befehle ein Gerät vom Typ „(28) System“ und der Funktion „Exec“ angelegt werden. Wie das funktioniert, steht in folgender Anleitung:
https://homematic.simdorn.net/cuxd-installation/
Nach dem Neustart meiner CCU2 hat mein Programm zum (minütlichen) Aufruf des folgenden Skripts super funktioniert:
Lediglich bei der Zuordnung von "PV_Verbrauch" und "PV_Netz" bin ich mir noch nicht sicher, da mein Smart Meter derzeit noch nicht mit dem WR kommuniziert. Ggf. müssen die beiden Variablen einfach getauscht werden.
Beste Grüße
Odi
U.a. wegen dieses vielversprechenden Threads habe ich mich bei meiner neuen PV-Anlage auch für einen WR von Fronius entschieden. Noch einmal besten Dank an den Programmierer dieses Skripts!
Nun läuft die PV-Anlange mit dem Symo und ich hatte das gleiche Problem, dass die Variablen nicht gefüllt wurden. Habe mich extra in die Skript-Sprache hineingefuxt um das Problem zu analysieren und kann nun berichten: mit dem Skript nach allen Modifikationen aus dem Verlauf dieses Threads ist alles i.O.
Das Problem lag bei CUx-Daemon! Scheinbar muss auch für die im Skript verwendten Befehle ein Gerät vom Typ „(28) System“ und der Funktion „Exec“ angelegt werden. Wie das funktioniert, steht in folgender Anleitung:
https://homematic.simdorn.net/cuxd-installation/
Nach dem Neustart meiner CCU2 hat mein Programm zum (minütlichen) Aufruf des folgenden Skripts super funktioniert:
Code: Alles auswählen
!-----------------------------------------------------------------------------
! Hier alle was man verändern kann/muss
! Voraussetzung: CUxD und Fronius Wechselrichter
!-----------------------------------------------------------------------------
var froniusIP = "192.168.178.15"; !IP des Fronius Wechselrichters
var deviceID = "1"; !Device ID (wird meistens stimmen, wenn nicht ausprobieren)
var CUxD_Device = "CUxD.CUX2801001:4"; !CUxD Virtuelles Gerät
string variable_verbrauch = "PV_Verbrauch"; !Name der Variabel für den Verbrauch
string variable_erzeugung = "PV_Erzeugung"; !Name der Variabel für die Erzeugung
string variable_differenz = "PV_Netz"; !Name der Variabel für die Differenz
!-----------------------------------------------------------------------------
! Ab hier muss man nichts mehr beachten
!-----------------------------------------------------------------------------
string pos1;
string pos2 = ",";
string pos3 = ":";
real wertVerbrauch;
real wertErzeugung = 0;
real wertDifferenz;
integer wert_pos;
var stdout;
string url = "http://" + froniusIP + "/solar_api/v1/";
string verbrauchParam = "GetMeterRealtimeData.cgi?Scope=System";
string erzeugungParam="GetInverterRealtimeData.cgi?Scope=Device&DeviceId=" + deviceID + "&DataCollection=CommonInverterData";
!-----------------------------------------------------------------------------
! Aktueller Verbrauch in [W]
!-----------------------------------------------------------------------------
dom.GetObject(CUxD_Device + ".CMD_SETS").State("wget -q -O - " + url + verbrauchParam);
dom.GetObject(CUxD_Device + ".CMD_QUERY_RET").State(1);
stdout = dom.GetObject(CUxD_Device + ".CMD_RETS").State();
pos1 = "\"PowerReal_P_Sum\" :";
wert_pos = stdout.Find(pos1) + pos1.Length();
wertVerbrauch = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
dom.GetObject(variable_verbrauch).State(wertVerbrauch.ToInteger() * -1);
!-----------------------------------------------------------------------------
! Aktuell wird erzeugt in [W] (Natürlich nicht Nachts)
!-----------------------------------------------------------------------------
real zeit = (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();
real tagesbeginn = (0.01 * system.SunriseTime("%M").ToInteger()) + system.SunriseTime("%H").ToInteger();
real tagesende = (0.01 * system.SunsetTime("%M").ToInteger()) + system.SunsetTime("%H").ToInteger();
if (zeit > tagesbeginn - 1 && zeit < tagesende + 1) {
dom.GetObject(CUxD_Device + ".CMD_SETS").State("wget -q -O - '" + url + erzeugungParam + "'");
dom.GetObject(CUxD_Device + ".CMD_QUERY_RET").State(1);
stdout = dom.GetObject(CUxD_Device + ".CMD_RETS").State();
pos1 = "\"PAC\" : {";
wert_pos = stdout.Find(pos1) + pos1.Length();
wertErzeugung = stdout.Substr(wert_pos,60).StrValueByIndex(pos2,1).StrValueByIndex(pos3,1);
dom.GetObject(variable_erzeugung).State(wertErzeugung.ToInteger());
}
!-----------------------------------------------------------------------------------------------
! Differenz in [W] (Wenn es < 0 wird, verbraucht man mehr als erzeugt wird)
!-----------------------------------------------------------------------------------------------
wertDifferenz = wertErzeugung.ToInteger() + wertVerbrauch.ToInteger();
dom.GetObject(variable_differenz).State(wertDifferenz.ToInteger());
Beste Grüße
Odi
Re: Fronius PV Anlage auslesen
Hallo,
Danke es funktioniert jetzt.
PV Verbrauch und PV Netz sind vertauscht kann man das ändern? habe keine Ahnung wie.
Danke es funktioniert jetzt.
PV Verbrauch und PV Netz sind vertauscht kann man das ändern? habe keine Ahnung wie.
Re: Fronius PV Anlage auslesen
Hallo,
bei mir sind auch Verbrauch und Überschuß vertauscht.
An welcher Stelle muss man die Variablen vertauschen?
Danke für das tolle Skript! Funktioniert sonst prima!!
Liebe Grüße,
Mairex
bei mir sind auch Verbrauch und Überschuß vertauscht.
An welcher Stelle muss man die Variablen vertauschen?
Danke für das tolle Skript! Funktioniert sonst prima!!
Liebe Grüße,
Mairex
Re: Fronius PV Anlage auslesen
Also, ich habe das jetzt so gelöst:
!-----------------------------------------------------------------------------
! Hier alle was man verändern kann/muss
! Voraussetzung: CUxD und Fronius Wechselrichter
!-----------------------------------------------------------------------------
var froniusIP = "192.168.xxx.xxx"; !IP des Fronius Wechselrichters
var deviceID = "1"; !Device ID (wird meistens stimmen, wenn nicht ausprobieren)
var CUxD_Device = "CUxD.CUX2801001:4"; !CUxD Virtuelles Gerät
string variable_verbrauch = "PV_Einspeisung"; !Name der Variabel für den Verbrauch
string variable_erzeugung = "PV_Erzeugung"; !Name der Variabel für die Erzeugung
string variable_differenz = "PV_Verbrauch"; !Name der Variabel für die Differenz
!-----------------------------------------------------------------------------
! Ab hier muss man nichts mehr beachten
!-----------------------------------------------------------------------------
Das funktioniert soweit und liefert die richtigen Werte.
Jetzt suche ich noch nach dem richtigen Code um tagesertrag, Monatsertrag; Jahresertrag und Gesamtertrag in eine Variable zu schreiben.
Hat da wer eine Idee?
Liebe Grüße,
Mairex
!-----------------------------------------------------------------------------
! Hier alle was man verändern kann/muss
! Voraussetzung: CUxD und Fronius Wechselrichter
!-----------------------------------------------------------------------------
var froniusIP = "192.168.xxx.xxx"; !IP des Fronius Wechselrichters
var deviceID = "1"; !Device ID (wird meistens stimmen, wenn nicht ausprobieren)
var CUxD_Device = "CUxD.CUX2801001:4"; !CUxD Virtuelles Gerät
string variable_verbrauch = "PV_Einspeisung"; !Name der Variabel für den Verbrauch
string variable_erzeugung = "PV_Erzeugung"; !Name der Variabel für die Erzeugung
string variable_differenz = "PV_Verbrauch"; !Name der Variabel für die Differenz
!-----------------------------------------------------------------------------
! Ab hier muss man nichts mehr beachten
!-----------------------------------------------------------------------------
Das funktioniert soweit und liefert die richtigen Werte.
Jetzt suche ich noch nach dem richtigen Code um tagesertrag, Monatsertrag; Jahresertrag und Gesamtertrag in eine Variable zu schreiben.
Hat da wer eine Idee?
Liebe Grüße,
Mairex
-
- Beiträge: 128
- Registriert: 04.11.2015, 22:03
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 5 Mal
Re: Fronius PV Anlage auslesen
Hallo zusammen,
ich hätte noch eine Frage zum API des Fronius Wechselrichters. Das Script funktioniert so bei mir auch einwandfrei - herzlichen Dank an dieser Stelle.
Was mich noch interessieren würde:
Ich habe die PV-Panele in 2 Strings auf Ost/West ausgerichtet.
Meine Idee wäre, die Leistungswerte der einzelnen Strings (lassen sich am Display separat ablesen und auch mittels der App separat darstellen) als Helligkeitswert zu verwenden bzw. eben den Sonnenstand damit zu ermitteln.
zB. Sonne im Osten --> Ostfenster Rolladen zu
Sonne im Westen --> Westfenster Rolladen zu
Leistungswerte O/W ca. gleich --> Sonnenstand Mittag --> alle Rolladen zu
Meine Frage daher: lassen sich mit dem API auch die einzelnen Strings auslesen? Ich habe leider keine Dokumentation dazu gefunden.
LG Christian
ich hätte noch eine Frage zum API des Fronius Wechselrichters. Das Script funktioniert so bei mir auch einwandfrei - herzlichen Dank an dieser Stelle.
Was mich noch interessieren würde:
Ich habe die PV-Panele in 2 Strings auf Ost/West ausgerichtet.
Meine Idee wäre, die Leistungswerte der einzelnen Strings (lassen sich am Display separat ablesen und auch mittels der App separat darstellen) als Helligkeitswert zu verwenden bzw. eben den Sonnenstand damit zu ermitteln.
zB. Sonne im Osten --> Ostfenster Rolladen zu
Sonne im Westen --> Westfenster Rolladen zu
Leistungswerte O/W ca. gleich --> Sonnenstand Mittag --> alle Rolladen zu
Meine Frage daher: lassen sich mit dem API auch die einzelnen Strings auslesen? Ich habe leider keine Dokumentation dazu gefunden.
LG Christian