Hallo Community,
ich lerne gerade erst die Basics von IPS und PHP daher bedanke ich mich gleich schonmal im voraus für die Hilfe. Ausgangspunkt ist wie folgend:
Ich besitze einen Fenecon Stromspeicher welche mir Daten über Energieverbrauch, Speicherladung, PV-Erzeugung usw. liefert. Diesen versuche ich über die API auszulesen, das funktioniert auch soweit jedoch werden mir die Infos nicht in einer einzigen Abfrage zur Verfügung gestellt. Ich muss jeden einzelnen Wert abfragen (Wenn es einen besseren weg gibt bin ich jederzeit für Tipps dankbar (Modbus evtl.?)). Ich würde die Werte gerne so aktuell wie möglich halten und lasse das Skript zur abfrage daher alle 5 Sekunden neu ausführen.
Nun zum eigentlichen Problem: Teilweise dauert die Abfrage des Speichers etwas länger und und das Skript wird während es noch läuft erneut gestartet. Dadurch wird IPS teilweise etwas träge und ich bekomme auch Fehlermeldungen das zu viele Skripts gleichzeitig ausgeführt werden.
Dauert eine solche Abfrage einfach seine Zeit und die einfachste Lösung ist die Abfragezeit zu erhöhen?
Gibt es einen einfacheren weg an die Variablen zu kommen ?
Kann ich das Skript automatisch erneut starten wenn es „fertig“ ist ?
hier noch der Code:
<?php
$VerbrauchGesamt = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ConsumptionActivePower"),true);
$VerbrauchL1 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ConsumptionActivePowerL1"),true);
$VerbrauchL2 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ConsumptionActivePowerL2"),true);
$VerbrauchL3 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ConsumptionActivePowerL3"),true);
$NetzGesamt = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/GridActivePower"),true);
$NetzL1 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/GridActivePowerL1"),true);
$NetzL2 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/GridActivePowerL2"),true);
$NetzL3 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/GridActivePowerL3"),true);
$SpeicherGesamt = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/EssActivePower"),true);
$SpeicherL1 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/EssActivePowerL1"),true);
$SpeicherL2 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/EssActivePowerL2"),true);
$SpeicherL3 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/EssActivePowerL3"),true);
$SpeicherLadung = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/EssSoc"),true);
$PVGesamt = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ProductionAcActivePower"),true);
$PVL1 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ProductionAcActivePowerL1"),true);
$PVL2 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ProductionAcActivePowerL2"),true);
$PVL3 = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ProductionAcActivePowerL2"),true);
$NetzbezugWh = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/GridBuyActiveEnergy"),true);
$NetzbezugkWh = $NetzbezugWh ['value'] * 0.001;
$NetzeinspeisungWh = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/GridSellActiveEnergy"),true);
$NetzeinspeisungkWh = $NetzeinspeisungWh ['value'] * 0.001;
$ErzeugungWh = json_decode(
file_get_contents("http://x:user@192.168.250.58:80/rest/channel/_sum/ProductionActiveEnergy"),true);
$ErzeugungkWh = $ErzeugungWh ['value'] * 0.001;
//Verbrauch
setvalue(17292, $VerbrauchGesamt ['value']);
setvalue(38324, $VerbrauchL1 ['value']);
setvalue(37695, $VerbrauchL2 ['value']);
setvalue(33962, $VerbrauchL3 ['value']);
//NETZ
setvalue(10625, $NetzGesamt ['value']);
setvalue(59789, $NetzL1 ['value']);
setvalue(31634, $NetzL2 ['value']);
setvalue(52611, $NetzL3 ['value']);
if($NetzGesamt ['value'] > 0 ) {
setvalue(11804, $NetzGesamt ['value']);
setvalue(26301, 0);
}
elseif ($NetzGesamt ['value'] < 0 ) {
setvalue(11804, 0);
setvalue(26301, $NetzGesamt ['value']*-1);
}
else {
setvalue(11804, 0);
setvalue(26301, 0);
}
//SPEICHER
setvalue(17660, $SpeicherGesamt ['value']);
setvalue(56736, $SpeicherL1 ['value']);
setvalue(58141, $SpeicherL2 ['value']);
setvalue(41429, $SpeicherL3 ['value']);
setvalue(36552, $SpeicherLadung ['value']);
if($SpeicherGesamt ['value'] > 0 ) {
setvalue(31972, 0);
setvalue(29347, $SpeicherGesamt ['value']);
}
elseif ($SpeicherGesamt ['value'] < 0 ) {
setvalue(31972, $SpeicherGesamt ['value']*-1);
setvalue(29347, 0);
}
else {
setvalue(31972, 0);
setvalue(29347, 0);
}
//PV
setvalue(24122, $PVGesamt ['value']);
setvalue(21979, $PVL1 ['value']);
setvalue(54932, $PVL2 ['value']);
setvalue(17750, $PVL3 ['value']);
//Energie
setvalue(52292, $NetzbezugkWh);
setvalue(51061, $NetzeinspeisungkWh);
setvalue(41466, $ErzeugungkWh);