Fronius PV Anlage auslesen

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

Moderator: Co-Administratoren

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 » 04.12.2017, 14:44

Guillaume hat geschrieben:Die Zeile für den PAC-Wert muss geändert werden in:

Code: Alles auswählen

wertErzeugung = stdout.Substr(wert_pos,60).StrValueByIndex(pos2,1).StrValueByIndex(pos3,1);
Wow! Jetzt funktioniert wieder alles wie gewohnt.
Vielen vielen Dank!

Gruß Jens

nape1
Beiträge: 246
Registriert: 10.11.2014, 17:26
Wohnort: Kärnten

Re: Fronius PV Anlage auslesen

Beitrag von nape1 » 04.12.2017, 19:10

Hallo Stramon.

Darf ich frage was wahr das es jetzt wieder klappt.

Und ist das Skript von der ersten Seite noch aktuell.

Danke nape1

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 » 04.12.2017, 20:17

Hallo nape1
nape1 hat geschrieben:Und ist das Skript von der ersten Seite noch aktuell.
Nein
nape1 hat geschrieben:Darf ich frage was wahr das es jetzt wieder klappt.
Die Zeile, welche mit "wertErzeugung" beginnt muss in

Code: Alles auswählen

wertErzeugung = stdout.Substr(wert_pos,60).StrValueByIndex(pos2,1).StrValueByIndex(pos3,1);
geändert werden, sonnst findet das Script den Wert nicht.
Hier das korrigierte Script

Code: Alles auswählen

!-----------------------------------------------------------------------------
! Hier alle was man verändern kann/muss
! Voraussetzung: CUxD und Fronius Wechselrichter
!-----------------------------------------------------------------------------
var froniusIP = "192.168.11.26"; !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_differenz"; !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).Variable(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).Variable(wertErzeugung.ToInteger());
}

!-----------------------------------------------------------------------------------------------
! Differenz in [W] (Wenn es < 0 wird, verbraucht man mehr als erzeugt wird)
!-----------------------------------------------------------------------------------------------
   
wertDifferenz = wertErzeugung.ToInteger() + wertVerbrauch.ToInteger();
dom.GetObject(variable_differenz).Variable(wertDifferenz.ToInteger());
Gruß Jens

nape1
Beiträge: 246
Registriert: 10.11.2014, 17:26
Wohnort: Kärnten

Re: Fronius PV Anlage auslesen

Beitrag von nape1 » 04.12.2017, 20:23

Hai Stramon .

Super danke dir werde es morgen gleich umsetzen.

Nur eine kurze frage noch, einige berichten von abstürzen der CCU durch das Skript.
Hast du davon auch was gemerkt , oder ist der Fehler dann wo anders gelegen.

Recht herzlichen dank.
nape1

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 » 04.12.2017, 20:37

Hallo nape1,
seitdem das Script wieder richtig läuft, also nur ein paar Stunden, ist mir die CCU tatsächlich einmal abgestürzt. Vorher lief sie ewig, ich glaube mehrere Monate, stabil.
Ich werde das beobachtet und berichten.

Gruß Jens

nape1
Beiträge: 246
Registriert: 10.11.2014, 17:26
Wohnort: Kärnten

Re: Fronius PV Anlage auslesen

Beitrag von nape1 » 04.12.2017, 20:43

Stramon

Herzlichen Dank für die Hilfe.
Lg nape1

Guillaume
Beiträge: 2
Registriert: 04.12.2017, 10:31

Re: Fronius PV Anlage auslesen

Beitrag von Guillaume » 06.12.2017, 07:22

Im Json wurde von fronius zu jedem Wert die Ausgabe der Einheit (Hier: W) ergänzt, der eigentliche Wert steht somit an einer anderen Stelle.
Das Skript habe ich daraufhin angepasst.

Dank gebührt dennoch ldittmar für die Idee und Initiale Umsetzung ;-)

nape1
Beiträge: 246
Registriert: 10.11.2014, 17:26
Wohnort: Kärnten

Re: Fronius PV Anlage auslesen

Beitrag von nape1 » 06.12.2017, 08:08

Hallo grüße dich.
Wen das das Skript ist was vor zwei Tagen,
Hier gepostet wurde, kann ich nur danke sagen an alle.
Habe es gestern getestet läuft einwandfrei.

LG nape1

Gesendet von meinem WAS-LX1 mit Tapatalk

olli79
Beiträge: 237
Registriert: 16.11.2013, 11:19
Hat sich bedankt: 13 Mal

Re: Fronius PV Anlage auslesen

Beitrag von olli79 » 01.03.2018, 11:13

Hallo zusammen,

hat vielleicht jemand einen Rat für mich? Bei jedem Systemneustart werden die Variablen richtig erfasst, starte ich das Programm aber manuell passiert hier nichts. Woran kann das liegen? Hat jemand eine Idee?

Gruß
Olli
Auch nach X Jahren immer noch unwissend ;-)

olli79
Beiträge: 237
Registriert: 16.11.2013, 11:19
Hat sich bedankt: 13 Mal

Re: Fronius PV Anlage auslesen

Beitrag von olli79 » 02.05.2018, 12:14

Stimmt denn bei euch die Bezeichnung? Bei mir irgendwie nicht:
Differenz ist bei mir der eigentliche Verbrauch und Verbrauch ist der eigentliche Netzbezug bzw. Einspeisung!
Schnappschuss (2018-05-02 12.11.07).jpg
Schnappschuss (2018-05-02 12.10.54).jpg
Auch nach X Jahren immer noch unwissend ;-)

Antworten

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