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 » 19.10.2017, 21:30

Hallo ldittmar,
ich würde mich sehr freuen wenn du dir die Mühe machen würdest zu gucken woran es liegt.
Ich denke für dich ist das eine Kleinigkeit.

Gruß Jens

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 » 23.10.2017, 18:02

Hallo,
Ich muss mich korrigieren. Es wird nur noch der verbrauchte Strom angezeigt, wenn ich einspeise als negativer Wert, es fehlt dann aber der Eigenverbrauch.
Es wird also wohl nur das Smartmeter ausgelesen, nicht aber der Wechselrichter.

Gruß Jens

Benutzeravatar
ldittmar
Beiträge: 467
Registriert: 07.03.2015, 12:21
System: CCU
Danksagung erhalten: 1 Mal

Re: Fronius PV Anlage auslesen

Beitrag von ldittmar » 23.10.2017, 19:04

Hi Jens,

schick mir mal dein Skript zu und ich schaue es mir an.

Grüße,
ldittmar
Download: WebMatic 2.2.3. Für den Kauf von HM Geräte zur schnellere Weiterentwicklung von Webmatic, werden auch gerne SPENDEN entgegen genommen. Danke! Und hier geht es zur WebMatic Homepage

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 » 23.10.2017, 20:10

Hallo Idittmar,
hier mein Script, bzw deines, welches auch bis vor kurzem noch lief und korrekte Werte lieferte.

Gruß Jens

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,20).StrValueByIndex(pos2,0).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());

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

Re: Fronius PV Anlage auslesen

Beitrag von olli79 » 30.10.2017, 13:46

Läuft das Script bei euch noch? Auch nach den aktuellsten Firmware Updates von Fronius?
Welche Art von CuxD Gerät muss ich denn Anlegen, welche Parameter?

Gruss
olli
Auch nach X Jahren immer noch unwissend ;-)

Benutzeravatar
ldittmar
Beiträge: 467
Registriert: 07.03.2015, 12:21
System: CCU
Danksagung erhalten: 1 Mal

Re: Fronius PV Anlage auslesen

Beitrag von ldittmar » 30.10.2017, 13:57

Kann mir jemand den JSON was raus kommt zur Verfügung stellen?

http://FRONIUS-IP/solar_api/v1/GetMeter ... ope=System
http://FRONIUS-IP/solar_api/v1/GetInver ... verterData

Vielleicht haben die was geändert, aber nicht dokumentiert.

Grüße,
ldittmar
Download: WebMatic 2.2.3. Für den Kauf von HM Geräte zur schnellere Weiterentwicklung von Webmatic, werden auch gerne SPENDEN entgegen genommen. Danke! Und hier geht es zur WebMatic Homepage

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 » 30.10.2017, 19:42

Hallo Idittmar,
sehr gerne.
Meter:

Code: Alles auswählen

{
   "Body" : {
      "Data" : {
         "0" : {
            "Current_AC_Phase_1" : 0.35000001662410796,
            "Current_AC_Phase_2" : 0.54500002588611096,
            "Current_AC_Phase_3" : 0.21700001030694693,
            "Details" : {
               "Manufacturer" : "Fronius",
               "Model" : "Smart Meter 63A",
               "Serial" : "15510147"
            },
            "Enable" : 1,
            "EnergyReactive_VArAC_Sum_Consumed" : 16249490,
            "EnergyReactive_VArAC_Sum_Produced" : 3845970,
            "EnergyReal_WAC_Minus_Absolute" : 9304205,
            "EnergyReal_WAC_Plus_Absolute" : 1826666,
            "EnergyReal_WAC_Sum_Consumed" : 1826666,
            "EnergyReal_WAC_Sum_Produced" : 9304205,
            "Frequency_Phase_Average" : 50.00000074505806,
            "Meter_Location_Current" : 0,
            "PowerApparent_S_Phase_1" : 81.970007786732353,
            "PowerApparent_S_Phase_2" : 127.80251214058633,
            "PowerApparent_S_Phase_3" : 50.77800482365128,
            "PowerApparent_S_Sum" : 209.99999530613422,
            "PowerFactor_Phase_1" : 0.59999998658895493,
            "PowerFactor_Phase_2" : 0.97999997809529305,
            "PowerFactor_Phase_3" : 0.99999997764825821,
            "PowerFactor_Sum" : 0.92999997921288013,
            "PowerReactive_Q_Phase_1" : -46.559998959302902,
            "PowerReactive_Q_Phase_2" : -23.009999485686421,
            "PowerReactive_Q_Phase_3" : -5.909999867901206,
            "PowerReactive_Q_Sum" : -75.47999831289053,
            "PowerReal_P_Phase_1" : 35.749999200925231,
            "PowerReal_P_Phase_2" : 120.82999729923904,
            "PowerReal_P_Phase_3" : 40.309999099001288,
            "PowerReal_P_Sum" : 196.88999559916556,
            "TimeStamp" : 1509388471,
            "Visible" : 1,
            "Voltage_AC_PhaseToPhase_12" : 405.90001927921548,
            "Voltage_AC_PhaseToPhase_23" : 405.70001926971599,
            "Voltage_AC_PhaseToPhase_31" : 405.5000192602165,
            "Voltage_AC_Phase_1" : 234.2000111239031,
            "Voltage_AC_Phase_2" : 234.50001113815233,
            "Voltage_AC_Phase_3" : 234.00001111440361
         },
         "1" : {
            "Details" : {
               "Manufacturer" : "Fronius",
               "Model" : "S0 Meter at inverter 1",
               "Serial" : "n.a."
            },
            "Enable" : 0
         }
      }
   },
   "Head" : {
      "RequestArguments" : {
         "DeviceClass" : "Meter",
         "Scope" : "System"
      },
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2017-10-30T19:34:32+01:00"
   }
}
Inverter:

Code: Alles auswählen

{
   "Body" : {
      "Data" : {
         "DAY_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 22997
         },
         "DeviceStatus" : {
            "ErrorCode" : 307,
            "LEDColor" : 1,
            "LEDState" : 0,
            "MgmtTimerRemainingTime" : 7,
            "StateToReset" : false,
            "StatusCode" : 3
         },
         "IDC" : {
            "Unit" : "A",
            "Value" : 0
         },
         "TOTAL_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 11127520
         },
         "UDC" : {
            "Unit" : "V",
            "Value" : 8.8000000000000007
         },
         "YEAR_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 5733093
         }
      }
   },
   "Head" : {
      "RequestArguments" : {
         "DataCollection" : "CommonInverterData",
         "DeviceClass" : "Inverter",
         "DeviceId" : "1",
         "Scope" : "Device"
      },
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2017-10-30T17:42:36+01:00"
   }
}
Ich hoffe das hilft.
Edit: Ich sehe gerade das beim Inverter die Watt-Angabe anscheinend nachts fehlt.
Das kann ich gerne morgen bei Licht noch mal nachreichen.

Gruß Jens

Benutzeravatar
ldittmar
Beiträge: 467
Registriert: 07.03.2015, 12:21
System: CCU
Danksagung erhalten: 1 Mal

Re: Fronius PV Anlage auslesen

Beitrag von ldittmar » 02.11.2017, 11:23

Hi Jens,

beim Meter wird doch der Wert "PowerReal_P_Sum" -> also Verbrauch richtig eingelesen. Der zweite Wert (also PV Anlage) solle PAC heißen und im Inverter drin sein. Kannst du nochmal schauen ob es Tagsüber da ist?

Grüße,
ldittmar
Download: WebMatic 2.2.3. Für den Kauf von HM Geräte zur schnellere Weiterentwicklung von Webmatic, werden auch gerne SPENDEN entgegen genommen. Danke! Und hier geht es zur WebMatic Homepage

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 » 03.11.2017, 11:54

Hallo Idittmar,
jetzt tagsüber ist der PAC Wert da, aber das Script scheint ihn nicht zu finden.

Gruß Jens

Code: Alles auswählen

{
   "Body" : {
      "Data" : {
         "DAY_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 2194.9000000000001
         },
         "DeviceStatus" : {
            "ErrorCode" : 0,
            "LEDColor" : 2,
            "LEDState" : 0,
            "MgmtTimerRemainingTime" : -1,
            "StateToReset" : false,
            "StatusCode" : 7
         },
         "FAC" : {
            "Unit" : "Hz",
            "Value" : 50
         },
         "IAC" : {
            "Unit" : "A",
            "Value" : 20.780000000000001
         },
         "IDC" : {
            "Unit" : "A",
            "Value" : 14.050000000000001
         },
         "PAC" : {
            "Unit" : "W",
            "Value" : 4741
         },
         "TOTAL_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 11147350
         },
         "UAC" : {
            "Unit" : "V",
            "Value" : 234.59999999999999
         },
         "UDC" : {
            "Unit" : "V",
            "Value" : 357.39999999999998
         },
         "YEAR_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 5752929.5
         }
      }
   },
   "Head" : {
      "RequestArguments" : {
         "DataCollection" : "CommonInverterData",
         "DeviceClass" : "Inverter",
         "DeviceId" : "1",
         "Scope" : "Device"
      },
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2017-11-03T11:50:03+01:00"
   }
}

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

Re: Fronius PV Anlage auslesen

Beitrag von Guillaume » 04.12.2017, 10:34

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

Antworten

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