Fronius PV Anlage auslesen

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

Moderator: Co-Administratoren

dvdfan
Beiträge: 45
Registriert: 09.02.2015, 18:00

Re: Fronius PV Anlage auslesen

Beitrag von dvdfan » 16.05.2019, 19:23

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

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

Re: Fronius PV Anlage auslesen

Beitrag von nape1 » 17.05.2019, 17:23

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

chrisss77
Beiträge: 20
Registriert: 29.11.2018, 10:17
Hat sich bedankt: 3 Mal

Re: Fronius PV Anlage auslesen

Beitrag von chrisss77 » 06.10.2019, 10:03

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.

klexi58
Beiträge: 6
Registriert: 22.05.2019, 07:57

Re: Fronius PV Anlage auslesen

Beitrag von klexi58 » 05.03.2020, 18:57

chrisss77 hat geschrieben:
06.10.2019, 10:03
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.
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"
   }
}
http://192.168.178.9/solar_api/v1/GetMe ... ope=System

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

odi24
Beiträge: 4
Registriert: 22.11.2016, 20:33

Re: Fronius PV Anlage auslesen

Beitrag von odi24 » 19.04.2020, 21:54

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:

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());

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

klexi58
Beiträge: 6
Registriert: 22.05.2019, 07:57

Re: Fronius PV Anlage auslesen

Beitrag von klexi58 » 24.04.2020, 09:56

Hallo,
Danke es funktioniert jetzt.
PV Verbrauch und PV Netz sind vertauscht kann man das ändern? habe keine Ahnung wie.

Mairex
Beiträge: 56
Registriert: 27.05.2015, 20:22

Re: Fronius PV Anlage auslesen

Beitrag von Mairex » 27.04.2020, 13:09

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

Mairex
Beiträge: 56
Registriert: 27.05.2015, 20:22

Re: Fronius PV Anlage auslesen

Beitrag von Mairex » 28.04.2020, 20:58

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

klexi58
Beiträge: 6
Registriert: 22.05.2019, 07:57

Re: Fronius PV Anlage auslesen

Beitrag von klexi58 » 11.05.2020, 09:24

Das Skript funktioniert jetzt sehr gut

Danke

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

Antworten

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