Fronius PV Anlage auslesen
Moderator: Co-Administratoren
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Fronius PV Anlage auslesen
SO, ich habe das Skript aktualisiert. Daher nochmal neu aus dem Beitrag viewtopic.php?f=18&t=68762#p672027 kopieren! Version 1.5b! Damit lassen sich die Daten dieser API auswerten. Ist auch noch nicht 100% perfekt, da diese API die JSON Daten unbedingt mehrfach schachteln muss, aber bis auf "InverterState" kommt wohl alles rüber.
EDIT: die neue Version 1.6 kommt auch mit "InverterState" klar.
EDIT: die neue Version 1.6 kommt auch mit "InverterState" klar.
Zuletzt geändert von MichaelN am 13.08.2021, 14:01, insgesamt 1-mal geändert.
LG, Michael.
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
-
- Beiträge: 21
- Registriert: 15.04.2021, 15:24
- System: CCU und Access Point
- Hat sich bedankt: 4 Mal
Re: Fronius PV Anlage auslesen
Skript Abfrage für Fronius Symo Gen 24
Zuletzt geändert von MarkusSchickaneder am 09.08.2021, 13:09, insgesamt 1-mal geändert.
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Fronius PV Anlage auslesen
Daraus entnehme ich, dass es nun funktioniert. Sehr gut.Kannst du mein Skript aus deinem Beitrag bitte löschen. Ich möchte nicht das ein Wildwuchs an verschiedenen Versionen entsteht.
Das gilt auch für diesen Beitrag
viewtopic.php?f=31&t=24675&start=90#p673799
Das gilt auch für diesen Beitrag
viewtopic.php?f=31&t=24675&start=90#p673799
LG, Michael.
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Fronius PV Anlage auslesen
Ich habe zwar Zweifel, da Du noch Interesse hast, aber vielleicht jemand anderes.
Die aktuelle Version 1.7 meines JSON Skriptes liest nun sämtliche Daten der Fronius-API fehlerfrei ein:
viewtopic.php?f=18&t=68762
aus
wird
Die aktuelle Version 1.7 meines JSON Skriptes liest nun sämtliche Daten der Fronius-API fehlerfrei ein:
viewtopic.php?f=18&t=68762
aus
Code: Alles auswählen
{ "Body" : { "Data" : { "DeviceStatus" : { "InverterState" : "Running" }, "FAC" : { "Unit" : "Hz", "Value" : 49.970474243164062 }, "IAC" : { "Unit" : "A", "Value" : 0.38200001418590546 }, "IAC_L1" : { "Unit" : "A", "Value" : 0.095000006258487701 }, "IAC_L2" : { "Unit" : "A", "Value" : 0.095000006258487701 }, "IAC_L3" : { "Unit" : "A", "Value" : 0.096000000834465027 }, "IDC" : { "Unit" : "A", "Value" : 0.17876286804676056 }, "IDC_2" : { "Unit" : "A", "Value" : 0.057208217680454254 }, "PAC" : { "Unit" : "W", "Value" : 63.0 }, "SAC" : { "Unit" : "VA", "Value" : 65.0 }, "UAC" : { "Unit" : "V", "Value" : 226.10000610351562 }, "UAC_L1" : { "Unit" : "V", "Value" : 225.90000915527344 }, "UAC_L2" : { "Unit" : "V", "Value" : 226.30000305175781 }, "UDC" : { "Unit" : "V", "Value" : 375.17230224609375 }, "UDC_2" : { "Unit" : "V", "Value" : 396.17791748046875 } } }, "Head" : { "RequestArguments" : { "DataCollection" : "CommonInverterData", "DeviceClass" : "Inverter", "DeviceId" : "1", "Scope" : "Device" }, "Status" : { "Code" : 0, "Reason" : "", "UserMessage" : "" }, "Timestamp" : "2021-08-03T18:10:02+00:00" } }
Code: Alles auswählen
=== Output V1.7 ===
JSON_Body_Data_DeviceStatus_InverterState = 'Running'
JSON_Body_Data_FAC_Unit = 'Hz'
JSON_Body_Data_FAC_Value = '49.970474243164062'
JSON_Body_Data_IAC_Unit = 'A'
JSON_Body_Data_IAC_Value = '0.38200001418590546'
JSON_Body_Data_IAC-L1_Unit = 'A'
JSON_Body_Data_IAC-L1_Value = '0.095000006258487701'
JSON_Body_Data_IAC-L2_Unit = 'A'
JSON_Body_Data_IAC-L2_Value = '0.095000006258487701'
JSON_Body_Data_IAC-L3_Unit = 'A'
JSON_Body_Data_IAC-L3_Value = '0.096000000834465027'
JSON_Body_Data_IDC_Unit = 'A'
JSON_Body_Data_IDC_Value = '0.17876286804676056'
JSON_Body_Data_IDC-2_Unit = 'A'
JSON_Body_Data_IDC-2_Value = '0.057208217680454254'
JSON_Body_Data_PAC_Unit = 'W'
JSON_Body_Data_PAC_Value = '63.0'
JSON_Body_Data_SAC_Unit = 'VA'
JSON_Body_Data_SAC_Value = '65.0'
JSON_Body_Data_UAC_Unit = 'V'
JSON_Body_Data_UAC_Value = '226.10000610351562'
JSON_Body_Data_UAC-L1_Unit = 'V'
JSON_Body_Data_UAC-L1_Value = '225.90000915527344'
JSON_Body_Data_UAC-L2_Unit = 'V'
JSON_Body_Data_UAC-L2_Value = '226.30000305175781'
JSON_Body_Data_UDC_Unit = 'V'
JSON_Body_Data_UDC_Value = '375.17230224609375'
JSON_Body_Data_UDC-2_Unit = 'V'
JSON_Body_Data_UDC-2_Value = '396.17791748046875'
JSON_Head_RequestArguments_DataCollection = 'CommonInverterData'
JSON_Head_RequestArguments_DeviceClass = 'Inverter'
JSON_Head_RequestArguments_DeviceId = '1'
JSON_Head_RequestArguments_Scope = 'Device'
JSON_Head_Status_Code = '0'
JSON_Head_Status_Reason = ''
JSON_Head_Status_UserMessage = ''
JSON_Head_Timestamp = '2021-08-03T18'
LG, Michael.
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
Re: Fronius PV Anlage auslesen
Besten Dank für diese wesentlich stabiler laufende Version!Icefeldt hat geschrieben: ↑09.04.2021, 11:23Habe nun herausgefunden was hier der "Fehler" ist.
Man muss die Werte nicht mit
Variable() setzen, sondern mit State()
sieht bei mir also so aus:
Zeitstempel wird gesetzt und auch aktualisiert sich der Wert auf der Anzeigeseite automatischCode: Alles auswählen
!PV Abfrage Script !----------------------------------------------------------------------------- ! Hier alle was man verändern kann/muss ! Voraussetzung: CUxD und Fronius Symo Wechselrichter mit Fronius SmartMeter !----------------------------------------------------------------------------- var froniusIP = "192.168.1.7"; !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_einspeisung = "PV_Einspeisung"; !Name der Variabel für den Einspeisung string variable_netzbezug = "PV_Netzbezug"; !Name der Variabel für den Netzbezug !----------------------------------------------------------------------------- ! Ab hier muss man nichts mehr beachten !----------------------------------------------------------------------------- string pos1; string pos2 = ","; string pos3 = ":"; real wertVerbrauch; real wertErzeugung; real wertNetzfluss; integer wert_pos; var stdout; string url = "http://" + froniusIP + "/solar_api/v1/"; string flussParam="GetPowerFlowRealtimeData.fcgi?Scope=System"; !----------------------------------------------------------------------------- ! Aktueller Verbrauch in [W] !----------------------------------------------------------------------------- dom.GetObject(CUxD_Device + ".CMD_SETS").State("wget -q -O - " + url + flussParam); dom.GetObject(CUxD_Device + ".CMD_QUERY_RET").State(1); stdout = dom.GetObject(CUxD_Device + ".CMD_RETS").State(); pos1 = "\"P_Load\" :"; 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] !----------------------------------------------------------------------------- pos1 = "\"P_PV\" :"; wert_pos = stdout.Find(pos1) + pos1.Length(); wertErzeugung = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0); dom.GetObject(variable_erzeugung).State(wertErzeugung.ToInteger()); !----------------------------------------------------------------------------- ! Netzfluss auslesen eingespeist(negativ)/bezogen(positiv) in [W] !----------------------------------------------------------------------------- pos1 = "\"P_Grid\" :"; wert_pos = stdout.Find(pos1) + pos1.Length(); wertNetzfluss = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0); !----------------------------------------------------------------------------- ! Wenn Netzfluss ist negativ, dann als positive Einspeisungs-Wert in Watt Speichern, sonst als Netzbezug !----------------------------------------------------------------------------- if(wertNetzfluss.Value() <0) {dom.GetObject(variable_einspeisung).State(wertNetzfluss.ToInteger() *-1 ); dom.GetObject(variable_netzbezug).State(0)} else{ {dom.GetObject(variable_netzbezug).State(wertNetzfluss.ToInteger()); dom.GetObject(variable_einspeisung).State(0)}};
Leider wird bei mir die Variable "PV_Netzbezug" nicht befüllt. Stattdessen habe ich einen negativen Wert in "PV_Einspeisung".
Habe ich hier einen Fehler oder funktioniert das Script nicht richtig?
Was könnte ich falsch machen?
Viele Grüße Jens
-
- Beiträge: 551
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 125 Mal
Re: Fronius PV Anlage auslesen
Hallo
.Value() funktioniert mW nur bei entsprechenden Objekten.
wertNetzfluss ist aber durch die Funktion .Substr() ein String geworden.
Versuch es bei dieser Zeile:
mal so:
Gruß
Harry
.Value() funktioniert mW nur bei entsprechenden Objekten.
wertNetzfluss ist aber durch die Funktion .Substr() ein String geworden.
Versuch es bei dieser Zeile:
Code: Alles auswählen
if(wertNetzfluss.Value() <0)
Code: Alles auswählen
if(wertNetzfluss.ToInteger() < 0)
Harry
Gruß
Harry
Harry
Re: Fronius PV Anlage auslesen
Interessanter Thread! Ich nutze das Skript auch und benötige die PV Produktion, also der Zählerwert des SmartMeters, der (zumindest bei mir) verbaut ist. Wird ja woanders auch so sein. Ich sehe aber in diesem Skript leider diesen Wert nicht....
Kann da jemand sagen wie ihr das macht? Muss ich da noch modbus an den SmartMeter ran legen obwohl der Inverter das ja schon hat....
Vielen Dank euch!
lg
Christian
Kann da jemand sagen wie ihr das macht? Muss ich da noch modbus an den SmartMeter ran legen obwohl der Inverter das ja schon hat....
Vielen Dank euch!
lg
Christian
Raspberry Pi 3 B mit fhem, CUNO
Raspberry Pi 3 B+ mit RaspberryMatic Version 3.37.8.20180922, S.USV Hardware Rev 2.2, Firmware 2.61, Software Version 2.40, mit Akku 300mAh, EQ3-Funkmodul HM-MOD-RPI-PCB & externe Antenne
Raspberry Pi 3 B+ mit RaspberryMatic Version 3.37.8.20180922, S.USV Hardware Rev 2.2, Firmware 2.61, Software Version 2.40, mit Akku 300mAh, EQ3-Funkmodul HM-MOD-RPI-PCB & externe Antenne
Re: Fronius PV Anlage auslesen
Also mit diesem Aufruf bekomme ich schon was raus:
http://<IP>/solar_api/v1/GetMeterRealtimeData.cgi
oder
http://<IP>/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System
Allerdings passt das was raus kommt nicht mit dem zusammen was im Web als "Produzierte Energie gesamt" angegeben wird....
Beispiel "GetPowerFlowRealtimeData":
{
"Body" : {
"Data" : {
"Inverters" : {
"1" : {
"Battery_Mode" : "normal",
"DT" : 1,
"E_Day" : null,
"E_Total" : 920716.39972222224,
"E_Year" : null,
"P" : 580.472412109375,
"SOC" : 53.0
}
},
"Site" : {
"BackupMode" : true,
"BatteryStandby" : true,
"E_Day" : null,
"E_Total" : 920716.39972222224,
"E_Year" : null,
"Meter_Location" : "grid",
"Mode" : "bidirectional",
"P_Akku" : 628.02862548828125,
"P_Grid" : -2.21,
"P_Load" : -578.26241210937496,
"P_PV" : 0.21012445539236069,
"rel_Autonomy" : 100.0,
"rel_SelfConsumption" : 99.619275618634632
},
"Smartloads" : {
"Ohmpilots" : {}
},
"Version" : "12"
}
},
"Head" : {
"RequestArguments" : {},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : ""
},
"Timestamp" : "2021-11-02T19:28:19+00:00"
}
}
Das fette ist nicht gleich 981,21kWh Gesamt PV Produktion....
http://<IP>/solar_api/v1/GetMeterRealtimeData.cgi
oder
http://<IP>/solar_api/v1/GetPowerFlowRealtimeData.fcgi?Scope=System
Allerdings passt das was raus kommt nicht mit dem zusammen was im Web als "Produzierte Energie gesamt" angegeben wird....
Beispiel "GetPowerFlowRealtimeData":
{
"Body" : {
"Data" : {
"Inverters" : {
"1" : {
"Battery_Mode" : "normal",
"DT" : 1,
"E_Day" : null,
"E_Total" : 920716.39972222224,
"E_Year" : null,
"P" : 580.472412109375,
"SOC" : 53.0
}
},
"Site" : {
"BackupMode" : true,
"BatteryStandby" : true,
"E_Day" : null,
"E_Total" : 920716.39972222224,
"E_Year" : null,
"Meter_Location" : "grid",
"Mode" : "bidirectional",
"P_Akku" : 628.02862548828125,
"P_Grid" : -2.21,
"P_Load" : -578.26241210937496,
"P_PV" : 0.21012445539236069,
"rel_Autonomy" : 100.0,
"rel_SelfConsumption" : 99.619275618634632
},
"Smartloads" : {
"Ohmpilots" : {}
},
"Version" : "12"
}
},
"Head" : {
"RequestArguments" : {},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : ""
},
"Timestamp" : "2021-11-02T19:28:19+00:00"
}
}
Das fette ist nicht gleich 981,21kWh Gesamt PV Produktion....
Raspberry Pi 3 B mit fhem, CUNO
Raspberry Pi 3 B+ mit RaspberryMatic Version 3.37.8.20180922, S.USV Hardware Rev 2.2, Firmware 2.61, Software Version 2.40, mit Akku 300mAh, EQ3-Funkmodul HM-MOD-RPI-PCB & externe Antenne
Raspberry Pi 3 B+ mit RaspberryMatic Version 3.37.8.20180922, S.USV Hardware Rev 2.2, Firmware 2.61, Software Version 2.40, mit Akku 300mAh, EQ3-Funkmodul HM-MOD-RPI-PCB & externe Antenne
-
- Beiträge: 128
- Registriert: 04.11.2015, 22:03
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 5 Mal
Re: Fronius PV Anlage auslesen
In welchem (kürzest möglichem) Zeitabstand kann man die Abfrage denn der CCU3 denn zumuten? Würde die Json Abfrage auch für mein Smart Meter verwenden und möchte die Daten möglichst sehr aktuell halten.
Geht eine solche http-Abfrage sehr auf die Performance?
Geht eine solche http-Abfrage sehr auf die Performance?