no message

This commit is contained in:
2025-05-01 07:15:33 +02:00
parent f873c80ba5
commit bc4edf1c5a
2 changed files with 13 additions and 12 deletions

View File

@@ -14,6 +14,7 @@ class HauptManager extends IPSModule
$this->RegisterPropertyInteger("Interval", 3); // Recheninterval
$this->RegisterVariableInteger("Gesamtnetzbezug", "Gesamtnetzbezug", "", 0);
$this->RegisterVariableBoolean("Is_Peak_Shaving", false);
// Timer registrieren
$this->RegisterTimer("Timer_DistributeEnergy",$this->ReadPropertyInteger("Interval")*1000,"IPS_RequestAction(" .$this->InstanceID .', "DistributeEnergy", "");');
@@ -77,15 +78,9 @@ class HauptManager extends IPSModule
$Ueberschussleistung = $this->ReadPropertyInteger("Ueberschussleistung");
$Is_Peak_Shaving = false;
IPS_LogMessage("MaHaunager", $Peakleistung);
IPS_LogMessage("MaHaunager", $Ueberschussleistung);
IPS_LogMessage("MaHaunager", $Netzbezug);
// Fallunterscheidung ob auf Solarladen oder Peakshaving gerregelt wird.
if ($Netzbezug < ($Peakleistung - $Ueberschussleistung) / 2) {
if ($Netzbezug < ($Peakleistung + $Ueberschussleistung) / 2) {
$remainingPower = -1 * (-1 * $Ueberschussleistung + $Netzbezug);
$Is_Peak_Shaving = false;
} else {
@@ -127,7 +122,7 @@ class HauptManager extends IPSModule
$remainingPower += $totalAktuelle_Leistung;
// Wenn nicht alle Benutzer Idle = true sind, rufe SetAktuelle_Leistung mit Aktuelle_Leistung Werten auf, (alle Verbraucher behalten die aktuelle Leistung)
if (!$allIdle) {
if (!$allIdle || ($Is_Peak_Shaving != $this->GetValue("Is_Peak_Shaving"))) {
// Schritt 1: Benutzer nach Writeback-Wert aufteilen
$writebackArrays = [];
foreach ($Verbraucher_Liste_Korr[0]["User"] as $user) {
@@ -161,8 +156,11 @@ class HauptManager extends IPSModule
// Schritt 4: RequestAction aufrufen
RequestAction($writeback, $resultString);
}
$this->SetValue("Is_Peak_Shaving", $Is_Peak_Shaving);
return;
}
$this->SetValue("Is_Peak_Shaving", $Is_Peak_Shaving);
// Sortiere die Verbruacher nach Priorität entweder der PV_Prio oder der Peak Prio
usort($Verbraucher_Liste_Korr[0]["User"], function ($a, $b) use (

View File

@@ -17,6 +17,8 @@ class Manager extends IPSModule
$this->RegisterPropertyInteger("DatenZuruck", 0); // Initialisierung mit 0
$this->RegisterPropertyInteger("Interval", 2); // Recheninterval
$this->RegisterVariableBoolean("Is_Peak_Shaving", false);
// Timer registrieren
$this->RegisterTimer("Timer_DistributeEnergy",$this->ReadPropertyInteger("Interval")*1000,"IPS_RequestAction(" .$this->InstanceID .', "DistributeEnergy", "");');
@@ -78,7 +80,7 @@ class Manager extends IPSModule
$Ueberschussleistung = $this->ReadPropertyInteger("Ueberschussleistung");
// Fallunterscheidung ob auf Solarladen oder Peakshaving gerregelt wird.
if ($Netzbezug < ($Peakleistung - $Ueberschussleistung) / 2) {
if ($Netzbezug < ($Peakleistung + $Ueberschussleistung) / 2) {
$remainingPower = -1 * (-1 * $Ueberschussleistung + $Netzbezug);
$Is_Peak_Shaving = false;
} else {
@@ -163,16 +165,17 @@ class Manager extends IPSModule
return;
}
// Wenn nicht alle Benutzer Idle = true sind, rufe SetAktuelle_Leistung mit Aktuelle_Leistung Werten auf, (alle Verbraucher behalten die aktuelle Leistung)
if (!$allIdle) {
// Wenn nicht alle Benutzer Idle = true sind, oder sich der zustand von Is_Peak_shaving gerade verändert hat rufe SetAktuelle_Leistung mit Aktuelle_Leistung Werten auf, (alle Verbraucher behalten die aktuelle Leistung)
if (!$allIdle || ($Is_Peak_Shaving != $this->GetValue("Is_Peak_Shaving"))) {
foreach ($filteredVerbraucher as $user) {
IPS_RequestAction($user["InstanceID"],"SetAktuelle_Leistung",$user["Aktuelle_Leistung"]);
IPS_LogMessage("Manager", "aufgerufen nicht alle idle");
$this->SetValue("Is_Peak_Shaving", $Is_Peak_Shaving);
}
return;
}
$this->SetValue("Is_Peak_Shaving", $Is_Peak_Shaving);
// Sortiere die Verbruacher nach Priorität entweder der PV_Prio oder der Peak Prio
usort($filteredVerbraucher, function ($a, $b) use (
$Is_Peak_Shaving