Seite 9 von 16

Re: Fronius PV Anlage auslesen

Verfasst: 22.10.2020, 16:30
von ihno
Moin,

ich habe jetzt einen Fronius Symo Gen24 plus 10.0 mit BYD HVS 10.2.
Da funktioniert das Script so leider nicht.
Ich schreibe das gerade um. Im Moment stehe ich auf dem Schlauch !
Unter anderem interessiert mich die jeweilige String-Spannung.
Die 1. ist problemlos auslesbar : Find UDC klappt, bei Find UDC_1 findet er aber auch die erste Stelle.
Hat jemand eine Idee, wie ich zwischen UDC und UDC_1 unterscheiden kann ?
Edit : Ich hatte wohl einen Tippfehler... Jetzt klappt es !

Re: Fronius PV Anlage auslesen

Verfasst: 22.10.2020, 20:07
von ihno
christian.mann88 hat geschrieben:
12.06.2020, 16:32
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
Moin,

auch, wenn ich das für den neuen Fronius gerade programmiere, nimm doch dafür lieber das Sonnenstandsscript : https://www.stall.biz/project/sonnenst ... sen-lampen

Re: Fronius PV Anlage auslesen

Verfasst: 07.11.2020, 10:38
von qwertz
Hallo zusammen !

Vor ein paar Tagen ist mein Fronius Symo mit SmartMeter ans Netz gegangen. Ich habe für meine Zwecke das Skript von ldittmar aus Post 1 modifiziert, damit die CCU-Historian Ansicht wie im Fronius SolarWeb aussieht d.h. einzelne positive Kurven für Erzeugung, Verbrauch, Einspeisung und Netzbezug.

Besten Dank für die Vorarbeit. Am Auslesen per Skript mit Find und Substr usw. wäre ich gescheitert !

Sebastian

Code: Alles auswählen

!Modifikation der Ursprungsversion von ldittmar  https://homematic-forum.de/forum/viewtopic.php?f=31&t=24675&hilit=fronius#p212221
!-----------------------------------------------------------------------------
! Hier alle was man verändern kann/muss
! Voraussetzung: CUxD und Fronius Symo Wechselrichter mit Fronius SmartMeter
!-----------------------------------------------------------------------------
var froniusIP = "10.10.10.117"; !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).Variable(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).Variable(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).Variable(wertNetzfluss.ToInteger() *-1 );
     dom.GetObject(variable_netzbezug).Variable(0)}
  else{
    {dom.GetObject(variable_netzbezug).Variable(wertNetzfluss.ToInteger());
     dom.GetObject(variable_einspeisung).Variable(0)}};

Re: Fronius PV Anlage auslesen

Verfasst: 28.01.2021, 20:38
von flintstone99
Hallo qwertz,

nutze jetzt Dein Skript, funktioniert hervorragend, vielen Dank.
Ich nutze den Fronius Symo Gen24 mit einem Akku und möchte den Ladezustand auslesen. Der sollte in der Variable SOC sein
GetPowerFlowRealtimeData.JPG
Hier mein Skript:
Fronius Daten Script.txt
(4.97 KiB) 271-mal heruntergeladen
Leider wird für SoC in der Homematic nichts angezeigt. Irgendeine Idee?
Gruß
Dietmar

Re: Fronius PV Anlage auslesen

Verfasst: 29.01.2021, 18:00
von flintstone99
Hallo,

Problem hat sich irgendwie von selbst gelöst, hier noch mein aktualisiertes Skript. Liest Werte von einem Fronius Symo Gen 24 mit BYD Batterie aus

Re: Fronius PV Anlage auslesen

Verfasst: 01.02.2021, 09:36
von klexi58
Das Script funktioniert mit Fronius Symo und BYD Batterie einwandfrei
Danke Danke.

Re: Fronius PV Anlage auslesen

Verfasst: 16.03.2021, 16:45
von andiwalter
Hallo zusammen, ich nutze noch das orginale Script. Was mir fehlt ist der Ertrag vom ganzen Tag.

Wäre das möglich es noch mit reinzubringen?

Bild


Gruß
Andreas

Re: Fronius PV Anlage auslesen

Verfasst: 09.04.2021, 10:54
von Icefeldt
über welchen Link zum Wechselrichter hast du denn die Seite mit dieser Info aufgerufen?

Re: Fronius PV Anlage auslesen

Verfasst: 09.04.2021, 11:23
von Icefeldt
nape1 hat geschrieben:
29.12.2018, 12:41
Hallo grüss euch,

Falls von euch noch jemand das skript nutzt hätte ich eine frage,

Bei mir werden die Variablen nicht automatisch befüllt , erst wen ich sie aktualisiere werden sie neu befüllt ,doch der Zeitstempel beleit der alte.

Danke für jede hilfe.
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

Re: Fronius PV Anlage auslesen

Verfasst: 31.07.2021, 20:14
von schwgu
flintstone99 hat geschrieben:
29.01.2021, 18:00
Hallo,

Problem hat sich irgendwie von selbst gelöst, hier noch mein aktualisiertes Skript. Liest Werte von einem Fronius Symo Gen 24 mit BYD Batterie aus
Guten Abend,
hab das Script jetzt auch in Verwendung.
Das Script funktionierte gleich beim ersten Versuch,
Jetzt hätte ich gerne auch och die Daten vom Ohmpilot
Könnte bitte jemand das Script entsprechend anpassen ?
lg. schwgu