Huhu - hast du das noch so laufen? …hatte das irgendwie übersehen und eine eigene Regelung geschrieben.
Die „steped“ immer um 100er Schritte hoch und runter. Und bei hohem Bedarf, direkt den max Wert.
Deine Version werde ich aber auch mal testen. Bei der Ausführungszeit reagiere ich auf Wert Änderungen von meinem IR Lesekopf am Zähler. Wenn nix schwankt, kann auch die Regelung mehrere Minuten beim selben Wert bleiben. Auch kann ich über die Visu meine Regelwerte vorgeben und es flexibel einstellen. Ist aktuell auch keine Null-Speisung, da ich mir immer -200W Vorhalte für irgendwelche Verbraucher. Wenn der Akku Einzug erhält, wird das natürlich eher auf eine Null-Speisung rauslaufen.
<?php
// Hoymiles Begrentzer qwik
// 2023.07.17 - run version 1
// 2023.07.26 - run version 2
// 2024.02.08 - run faster version 3
//Spielwerte
//$leistungZEist = GetValue(59001);
//$leistungPVsoll = GetValue(42695);
//Werte einlesen
$leistungZEist = GetValue(37825);
$leistungPVsoll = GetValue(49222);
$WRonline = GetValue(47079);
$einAUS = GetValue(22966);
$leistungPVsollRunterAB = GetValue(21899);
$leistungPVsollRunterBIS = GetValue(23335);
$leistungPVsollHochAB = GetValue(50209);
$leistungPVsollHochMAX = GetValue(16560);
$leistungPVsollHochBIS = GetValue(31612);
//Warten auf Variablen
//IPS_Sleep(1000);
//-------------------------------------------------------------------------------------------------------------
// Runter drehen
if (($leistungZEist < $leistungPVsollRunterAB AND $leistungPVsoll > $leistungPVsollRunterBIS) AND $WRonline == true AND $einAUS == true)
{
HOYMILES_SetLimitAbsolute(37486,$leistungPVsoll - 100);
SetValue(49222,$leistungPVsoll - 100);
$sollEchoR = $leistungPVsoll - 100;
IPS_LogMessage(IPS_GetName(11753), "Die SOLL Leistung der PV wurde auf $sollEchoR W runter gestellt.");
}
//-------------------------------------------------------------------------------------------------------------
// Hoch drehen
if (($leistungZEist > $leistungPVsollHochAB AND $leistungPVsoll < $leistungPVsollHochBIS) AND $WRonline == true AND $einAUS == true)
{
HOYMILES_SetLimitAbsolute(37486,$leistungPVsoll + 100);
SetValue(49222,$leistungPVsoll + 100);
$sollEchoH = $leistungPVsoll + 100;
IPS_LogMessage(IPS_GetName(11753), "Die SOLL Leistung der PV wurde auf $sollEchoH W hoch gestellt.");
}
//-------------------------------------------------------------------------------------------------------------
// Hoch sofort
if (($leistungZEist > $leistungPVsollHochMAX AND $leistungPVsoll < $leistungPVsollHochBIS) AND $WRonline == true AND $einAUS == true)
{
HOYMILES_SetLimitAbsolute(37486, $leistungPVsollHochBIS);
SetValue(49222, $leistungPVsollHochBIS);
$sollEchoM = $leistungPVsollHochBIS;
IPS_LogMessage(IPS_GetName(11753), "Die SOLL Leistung der PV wurde auf den MAX Wert von $sollEchoM W gestellt.");
}
//-------------------------------------------------------------------------------------------------------------
//Testausgabe
//echo "Die SOLL Leistung der PV wurde auf $sollEchoR W runter gestellt.\n";
//echo "Die SOLL Leistung der PV wurde auf $sollEchoH W hoch gestellt.\n"
//echo "Die SOLL Leistung der PV wurde auf den MAX Wert von $sollEchoM W gestellt.\n";