Hi,
ich kämpfe seit einige Zeit mit Abstürzen von IPS und ich habe diese Script in Verdacht.
<?
// Konstanten
$Einspeiseverguetung = '0.1664';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'http://www.solax-portal.com/api/v1/inverter/GetCurrentData/XXXXXXXX');
$json = curl_exec($ch);
curl_close($ch);
//echo $json;
$data = json_decode($json);
$PowerNow = $data->data->values[4];
//print_r(json_decode($json));
SetValue(29257 /*[4 Variablen & Wartung\Solax JSON\PV1 Strang Eingangsleistung]*/,$data->data->values[0]);
SetValue(25688 /*[4 Variablen & Wartung\Solax JSON\PV2 Strang Eingangsleistung]*/,$data->data->values[1]);
SetValue(14141 /*[4 Variablen & Wartung\Solax JSON\PV1 Strang Spannung Aktuell]*/,$data->data->values[2]);
SetValue(45486 /*[4 Variablen & Wartung\Solax JSON\PV2 Strang Spannung Aktuell]*/,$data->data->values[3]);
SetValue(53321 /*[4 Variablen & Wartung\Solax JSON\Ausgangsstrom]*/,$data->data->values[4]);
SetValue(25894 /*[4 Variablen & Wartung\Solax JSON\Netzspannung]*/,$data->data->values[5]);
SetValue(52587 /*[4 Variablen & Wartung\Solax JSON\Aktelle Leistung]*/,$data->data->values[6]);
SetValue(59907 /*[4 Variablen & Wartung\Solax JSON\Aktuelle Ausgangsleistung]*/,$data->data->values[7]);
SetValue(31144 /*[4 Variablen & Wartung\Solax JSON\Ertrag Heute]*/,$data->data->values[8]);
SetValue(22413 /*[4 Variablen & Wartung\Solax JSON\Ertrag Gesamt]*/,$data->data->values[9]);
SetValue(48918 /*[4 Variablen & Wartung\Solax JSON\Ankauf und Einspeisung Aktuell]*/,$data->data->values[10]);
SetValue(26827 /*[4 Variablen & Wartung\Solax JSON\PV1 Strang Leistung Aktuell]*/,$data->data->values[11]);
SetValue(22943 /*[4 Variablen & Wartung\Solax JSON\PV2 Strang Leistung Aktuell]*/,$data->data->values[12]);
SetValue(34252 /*[4 Variablen & Wartung\Solax JSON\Batterie Spannung]*/,$data->data->values[13]);
SetValue(39547 /*[4 Variablen & Wartung\Solax JSON\Batterie Ladespannung]*/,$data->data->values[14]);
SetValue(49570 /*[4 Variablen & Wartung\Solax JSON\Batterie Leistung]*/,$data->data->values[15]);
SetValue(47619 /*[4 Variablen & Wartung\Solax JSON\Batterie Temperatur]*/,$data->data->values[16]);
SetValue(38000 /*[4 Variablen & Wartung\Solax JSON\Batterie Füllstand]*/,$data->data->values[17]);
SetValue(59907 /*[4 Variablen & Wartung\Solax JSON\Aktuelle Ausgangsleistung]*/,$data->data->values[18]);
//SetValue(59907 /*[4 Variablen & Wartung\Solax JSON\Aktuelle Ausgangsleistung]*/,$data->data->values[19]);
SetValue(44525 /*[4 Variablen & Wartung\Solax JSON\Verkauf an Netz (Einspeisung)]*/,$data->data->values[20]);
SetValue(15818 /*[4 Variablen & Wartung\Solax JSON\Einkauf vom Netz]*/,$data->data->values[21]);
//SetValue(59907 /*[4 Variablen & Wartung\Solax JSON\Aktuelle Ausgangsleistung]*/,$data->data->values[22]);
//Ermitteln des aktuellen Stromverbrauchs
$Ausgangsleistung = GetValue(52587 /*[4 Variablen & Wartung\Solax JSON\Aktelle Leistung]*/);
$Einspeisung = GetValue(48918 /*[4 Variablen & Wartung\Solax JSON\Ankauf und Einspeisung Aktuell]*/);
//Kein Strom vom Dach oder aus Batterie
if ($Ausgangsleistung=="0" AND $Einspeisung < "0")
{
$AktuellerVerbrauch = ($Einspeisung *= -1);
}
//Strom vom Dach weniger als verbraucht wird - es wird noch Strom zugekauft
else if ($Ausgangsleistung > "0" AND $Einspeisung <= "0")
{
$AktuellerVerbrauch = $Ausgangsleistung + ($Einspeisung *= -1);
}
//Strom vom Dach als verbraucht wird
else if ($Ausgangsleistung > "0" AND $Einspeisung >= "0")
{
$AktuellerVerbrauch = $Ausgangsleistung;
}
// Echo $AktuellerVerbrauch;
IPS_LogMessage($_IPS['SELF'], "Stromverbrauch: ".$AktuellerVerbrauch." W");
SetValue(56816 /*[4 Variablen & Wartung\Solax JSON\Aktueller Stromverbrauch (berechnet)]*/,$AktuellerVerbrauch);
//Erechnen PV Ertrag String 1 und 2
$LeistungString1 = GetValue(26827 /*[4 Variablen & Wartung\Solax JSON\PV1 Strang Leistung Aktuell]*/);
$LeistungString2 = GetValue(22943 /*[4 Variablen & Wartung\Solax JSON\PV2 Strang Leistung Aktuell]*/);
SetValue(29692 /*[4 Variablen & Wartung\Solax JSON\PV Ertrag String 1 und 2]*/,$LeistungString1+$LeistungString2);
//Berechnen von Beträgen
$ErtragHeute = GetValue(31144 /*[4 Variablen & Wartung\Solax JSON\Ertrag Heute]*/);
$ErtragGesamt = GetValue(44525 /*[4 Variablen & Wartung\Solax JSON\Verkauf an Netz (Einspeisung)]*/);
$ErtragHeuteEuro = $ErtragHeute * $Einspeiseverguetung;
$ErtragVerkaufEuro = $ErtragGesamt * $Einspeiseverguetung;
SetValue(10880 /*[4 Variablen & Wartung\Solax JSON\Euro Ertrag Heute]*/,$ErtragHeuteEuro);
Setvalue(34356 /*[4 Variablen & Wartung\Solax JSON\Euro Ertrag Gesamt]*/,$ErtragVerkaufEuro);
?>
Diese Script liest das Solax Wechselrichter Portal aus und funktioniert bei Ausführung ohne Probleme. Aber irgendwann so nach 1 -2 Tagen kommt ein Fehler das zu viele Scripte ausgeführt werden und ich konnte diese Abstürze beheben, in dem ich ein ähnliches „CURL Script“ deaktivierte. Ich könnte im Log keine Fehler o.ä. finden - wie gesagt - das Script läuft meist ohne Probleme.
Kann hier jemand eine Fehler sehen (vermutlich im oberen Bereich) - schliesse ich evtl. eine Session nicht???
Ist nur so eine Idee - evtl. hat CURL ja auch ein Problem?