[Modul] Fronius Wechselrichter

Ich habe den Wert im letzten Modul-Release v1.2 hinzugefügt:
image

Hallo Ihr Beiden,

vielen Dank für die Info, aber der Wert wird im Fronius nicht geloggt. Weder per json, noch per Modbus kommt da was rein. Deshalb muss ich selbst rechnen.

Übrigens: Was ist Lifetime Energy produktion? Der Wert scheint mir nicht plausibel.

Das was der WR seit Beginn erzeugt hat! 1.773 MegaWattStunden - was hast du für eine Anlage?

Mir kommt vor bei deiner Konfig ist noch wo der Wurm drin.

Was steht bei dir wenn du in einem Browser folgendes eingibst (ID anpassen wenn nicht 1):

ip.adresse.deinesWR/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData

Da sollte die Tagesenergie kommen.

lg
hagi

Der WR läuft erst seit einer Woche. :rofl: Wäre schän, wenn ich diese Energie seither erzeugt hätte.

{
   "Body" : {
      "Data" : {
         "DeviceStatus" : {
            "InverterState" : "Running"
         },
         "FAC" : {
            "Unit" : "Hz",
            "Value" : 49.994186401367188
         },
         "IAC" : {
            "Unit" : "A",
            "Value" : 2.0231322646141052
         },
         "IAC_L1" : {
            "Unit" : "A",
            "Value" : 0.50184017419815063
         },
         "IAC_L2" : {
            "Unit" : "A",
            "Value" : 0.50400185585021973
         },
         "IAC_L3" : {
            "Unit" : "A",
            "Value" : 0.50864511728286743
         },
         "IDC" : {
            "Unit" : "A",
            "Value" : 0.30706396698951721
         },
         "IDC_2" : {
            "Unit" : "A",
            "Value" : 0.36248928308486938
         },
         "PAC" : {
            "Unit" : "W",
            "Value" : 351.40074920654297
         },
         "SAC" : {
            "Unit" : "VA",
            "Value" : 352.57949829101562
         },
         "UAC" : {
            "Unit" : "V",
            "Value" : 232.79817199707031
         },
         "UAC_L1" : {
            "Unit" : "V",
            "Value" : 232.97799682617188
         },
         "UAC_L2" : {
            "Unit" : "V",
            "Value" : 232.72367858886719
         },
         "UDC" : {
            "Unit" : "V",
            "Value" : 714.51531982421875
         },
         "UDC_2" : {
            "Unit" : "V",
            "Value" : 426.08538818359375
         }
      }
   },
   "Head" : {
      "RequestArguments" : {
         "DataCollection" : "CommonInverterData",
         "DeviceClass" : "Inverter",
         "DeviceId" : "1",
         "Scope" : "Device"
      },
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2021-04-29T17:42:20+00:00"
   }
}

Und wenn du folgendes eingibst:

ip.adresse.deinesWR/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CumulationInverterData

na ja, jetzt ist schon dunkel :laughing:
Ich versuch es morgen noch einmal.

{
   "Body" : {
      "Data" : {
         "DeviceStatus" : {
            "InverterState" : "Sleeping"
         },
         "PAC" : {
            "Unit" : "W",
            "Value" : 0.0
         }
      }
   },
   "Head" : {
      "RequestArguments" : {
         "DataCollection" : "CumulationInverterData",
         "DeviceClass" : "Inverter",
         "DeviceId" : "1",
         "Scope" : "Device"
      },
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2021-04-29T19:58:07+00:00"
   }
}

Letzter Versuch:

ip.adresse.deinesWR/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System&DeviceID=1&DataCollection=CumulationInverterData

https://www.loxone.com/dede/wp-content/uploads/sites/2/2016/08/Fronius-Symo-GEN24-Plus-Solar-API-Schnittstelle.pdf

Guten Morgen Hagi01,

vielen Dank für Deine Bemühungen, aber es kommt immer der aktuelle PAC Wert. Wahrscheinlich ist es so, dass die vollständige API erst im Juni zur Verfügung steht.

Ich möchte aber noch einmal auf meine Ausgangsfrage zurück kommen. Wie berechnet man den Tagesertrag aus den geloggten PAC Werten? Mein Ansatz bisher:
PAC wird jede Minute in eine Variable geschrieben. Die Aggregation steht auf Zähler. Das Script dazu habe ich mir hier aus dem Forum geholt:

$ScaleFactor      		= 1; 	
define("AC_HANDLER_ID", IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]);
define("SCALEFACTOR", $ScaleFactor);

// Tagesverbrauch heute bis jetzt ermitteln
$EV_10KW = 13282 /*[Haus\Keller\Waschraum\Photovoltaik\Fronius 10 KW\Power]*/;  //WR 10 KW
$EV_8KW = 30598 /*[Haus\Keller\Waschraum\Photovoltaik\Fronius 8 KW\Power]*/;  //WR 10 KW

   $ts            							= mktime(0, 0, 0, date("m", time()), date("d", time()), date("Y", time()));
   $te            							= mktime(23, 59, 59, date("m", time()), date("d", time()), date("Y", time()));
//Berechnung des 10 KW WR
   $DayValues	   							= array_reverse(AC_GetAggregatedValues(AC_HANDLER_ID, $EV_10KW, 0, $ts, $te, 2000));
   $DayValue      							= 0;
   
   foreach($DayValues as $v)
	{
		
			$DayValue		 				+= $v['Avg'];
	
	}
	
    $Day_10KW_Value                         = $DayValue * SCALEFACTOR;
	
//Berechnung des 8 KW WR
   $DayValues	   							= array_reverse(AC_GetAggregatedValues(AC_HANDLER_ID, $EV_8KW, 0, $ts, $te, 2000));
   $DayValue      							= 0;
   foreach($DayValues as $v)
	{
		$DayValue							+= $v['Avg'];
	}
    
	$Day_8KW_Value                           = $DayValue;

	
	
	SetValue(50336 /*[Haus\Keller\Waschraum\Photovoltaik\Fronius 10 KW\Day Energy]*/,$Day_10KW_Value/1000);
	SetValue(49387 /*[Haus\Keller\Waschraum\Photovoltaik\Fronius 8 KW\Day Energy]*/,$Day_8KW_Value/1000);
	
		
	echo ($Day_10KW_Value+$Day_8KW_Value)/1000;

Wenn ich die Werte mit denen von Fronius vergleiche, erhalte ich eine Differenz, welche im Laufe des Tages immer mehr abweicht. Z.Z
Fronius : 953 W
mein Script : 1345 W

Was läuft da falsch?

Ja, es scheint so dass hier noch nachgebessert werden muss. Steht auch in der Antwort vom Fronius Support.

Zu deiner Frage:

Wenn ich dich richtig verstehe willst du die Tageserzeugung in kWh.
Logge einfach die Lifetime Energy und mach ein kl. Script welches jeden Tag von 0Uhr bis Abfrage den Wert aus dem Archiv holt und schon hast du es. Wenn du nicht klar kommst melde dich.

Lg
Hagi

Ok, scheint aber dann nur ein GEN24 Problem zu sein:

Ja denke ich auch - mein Symo liefert auch die Werte - mal sehen wenn in 2 Wochen der Gen24 zusätzlich an den Start geht.

Das versuche ich mit meinem Script oben, aber die Werte stimmen nicht überein.
Jetzt meldet das Fronius Portal 1,5 kWh erzeugt und mein Script schon 4,39 kWh.

Du machst oben etwas anderes bzw. in Minuten Abstand wird das nie was! Da müsstest du unter einer Sekunde rechnen und dann wird es nicht genau passen!

Du musst einfach nur die Variable „Wh -AC Lifetime Energy production“ loggen.

Und dann mit:

$tageserzeugung_heute = AC_GetAggregatedValues(„ID deines Archivs“, „ID der Variable lifetime energy“, 1 /* Täglich */, strtotime(„today 00:00“), time(), 0);

zyklisch abfragen und mit SetValue in eine neue Variable schreiben.

lg
hagi

Stromerzeugung heute ist aber ein Array. Und da müsste ich doch wieder die [Avg] addieren, oder?
Letztendlich komme ich dann auf nmein Script oben und die Produktion, welche errechnet wurde, ist höher als die welche im solarweb ausgegeben wird.

Vergiß mal dein Skript!

Der Wh -AC Lifetime Energy production - Wert über Modbus ist der gesamt erzeugte Energiewert (kein Array!) - den zeichnest du auf (loggen!) und machst so wie ich geschrieben habe.

Mehr kann ich dir auch nicht mehr helfen.

lg
hagi

@ Brovning: Evt. sind die Modbus Tabellen nicht ident. Sieh dir mal die Adresse der Lifetime Energy an - Modul (40102) im Vergleich zu der Doku die ich vom Gen24 oben (40197) übermittelt habe.

lg
hagi

Entschuldige bitte, aber irgenwie stehe ich auf dem Schlauch. Wenn ich mit Deiner Codezeile abfrage erhalte ich das:

Array
(
    [0] => Array
        (
            [Duration] => 49088
            [TimeStamp] => 1619733600
            [Avg] => 20613,280479431
            [MinTime] => 1619756241
            [Min] => 0,03521728515625
            [MaxTime] => 1619771258
            [Max] => 4053,2194824219
        )

)

Und das ist doch ein Array, oder?
Nur leider stimmt das nicht mit dem überein was das Solarweb ausspuckt. Hat dazu noch jemand eine Idee. Vielleicht vergleiche ich die Werte nicht richtig.

sry das muss noch rein

$tagesenergie_heute = $tageserzeugung_heute[0][‚Max‘];

Du hattest heute bis 10:27 Uhr 4,053 kWh erzeugt

Das ist dann zumindest ein WR falls du 2 hast musst du die Werte addieren. Ein kleines Gap hast du natürlich zu Solar.wep da das Archiv ein wenig zeitverzögert ist. Wenn es finster wird sollten die Werte dann stimmen.

Leider bekomme ich noch immer nicht die korrekten Werte rein. Hab eigentlich alles so gemacht wie du geschrieben hast. Hier noch mal meine Werte von 19:13 Uhr

Array
(
    [0] => Array
        (
            [Duration] => 69202
            [TimeStamp] => 1619733600
            [Avg] => 25589,490531921
            [MinTime] => 1619756241
            [Min] => 0,03521728515625
            [MaxTime] => 1619771258
            [Max] => 4053,2194824219
        )

)
Array
(
    [0] => Array
        (
            [Duration] => 69202
            [TimeStamp] => 1619733600
            [Avg] => 787,85167005906
            [MinTime] => 1619733600
            [Min] => 0
            [MaxTime] => 1619771422
            [Max] => 4627
        )

)

Das Portal sieht so aus:

Eigentlich ist das der Weg, aber wie ich oben an Brovning geschrieben habe, denke ich das die Modbus-Adressen beim Gen24 nicht gleich sind wie bei den Vorgängern. Somit glaube ich das du bei Lifetime Energy was anderes loggst. Weil auch dein Max wo du schreibst 19:13 ist von 10:30 lt. Zeitstempel. Wobei 4,6 kWh um 10:30 realistisch sein könnte.

Da ich leider noch keinen Gen24 habe kann ich das auch noch nicht testen. Da kann nur Brovning mal die Adressen wie ich oben geschrieben habe kontrollieren.

Ich vermute da ist der Wurm drin.

Schau mal wenn du im Objektbaum die Archivwerte der Lifetime Variable ansiehst wie sieht das aus?

lg hagi