Fronius PV Anlage auslesen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Fronius PV Anlage auslesen

Beitrag von MichaelN » 04.08.2021, 20:37

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.
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 +++

MarkusSchickaneder
Beiträge: 21
Registriert: 15.04.2021, 15:24
System: CCU und Access Point
Hat sich bedankt: 4 Mal

Re: Fronius PV Anlage auslesen

Beitrag von MarkusSchickaneder » 05.08.2021, 19:42

Skript Abfrage für Fronius Symo Gen 24
Zuletzt geändert von MarkusSchickaneder am 09.08.2021, 13:09, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Fronius PV Anlage auslesen

Beitrag von MichaelN » 05.08.2021, 22:56

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
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 +++

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Fronius PV Anlage auslesen

Beitrag von MichaelN » 21.08.2021, 12:51

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

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" } }
wird

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 +++

Stramon
Beiträge: 46
Registriert: 29.06.2016, 20:28
Wohnort: Kiel
Hat sich bedankt: 3 Mal

Re: Fronius PV Anlage auslesen

Beitrag von Stramon » 17.09.2021, 11:05

Icefeldt hat geschrieben:
09.04.2021, 11:23
Habe nun herausgefunden was hier der "Fehler" ist.
Man muss die Werte nicht mit

Variable() setzen, sondern mit State()

sieht bei mir also so aus:

Code: 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)}};
Zeitstempel wird gesetzt und auch aktualisiert sich der Wert auf der Anzeigeseite automatisch
Besten Dank für diese wesentlich stabiler laufende Version!
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

Tyfys
Beiträge: 531
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 26 Mal
Danksagung erhalten: 121 Mal

Re: Fronius PV Anlage auslesen

Beitrag von Tyfys » 17.09.2021, 11:49

Hallo

.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)
mal so:

Code: Alles auswählen

if(wertNetzfluss.ToInteger() < 0)
Gruß
Harry
Gruß
Harry

Stramon
Beiträge: 46
Registriert: 29.06.2016, 20:28
Wohnort: Kiel
Hat sich bedankt: 3 Mal

Re: Fronius PV Anlage auslesen

Beitrag von Stramon » 17.09.2021, 15:42

Tyfys hat geschrieben:
17.09.2021, 11:49

Code: Alles auswählen

if(wertNetzfluss.ToInteger() < 0)
Zack und geht. :D
Vielen Dank!

ckohrt
Beiträge: 43
Registriert: 27.09.2018, 13:05
Hat sich bedankt: 2 Mal

Re: Fronius PV Anlage auslesen

Beitrag von ckohrt » 02.11.2021, 14:29

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
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

ckohrt
Beiträge: 43
Registriert: 27.09.2018, 13:05
Hat sich bedankt: 2 Mal

Re: Fronius PV Anlage auslesen

Beitrag von ckohrt » 02.11.2021, 20:43

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....
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

christian.mann88
Beiträge: 128
Registriert: 04.11.2015, 22:03
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Fronius PV Anlage auslesen

Beitrag von christian.mann88 » 06.02.2022, 18:32

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?

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“