From 022d295d3075206ad8a3f009545528e4396bbf48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=A4fliger?= Date: Tue, 23 Sep 2025 16:43:56 +0200 Subject: [PATCH] no message --- Manager/module.php | 63 ++++++++++++++++------------------------------ 1 file changed, 22 insertions(+), 41 deletions(-) diff --git a/Manager/module.php b/Manager/module.php index 7865ec0..e8a1988 100644 --- a/Manager/module.php +++ b/Manager/module.php @@ -270,19 +270,26 @@ class Manager extends IPSModule } */ - /* Neuer Block */ - foreach ($samePriorityUsers as $entry) { - $withZero[] = $entry; +$userEnergyProv = []; - if (min($entry["PowerSteps"]) > 0) { - - $withoutZeroHigh[] = $entry; - } - if (max($entry["PowerSteps"]) < 0) { - - $withoutZeroLow[] = $entry; - } - } +foreach ($samePriorityUsers as $entry) { + $instanceID = $entry["InstanceID"]; + $minPowerStep = min($entry["PowerSteps"]); + $maxPowerStep = max($entry["PowerSteps"]); + + if ($minPowerStep > 0) { + // Nur positive Werte -> minimaler Wert einsetzen + $userEnergyProv[$instanceID] = $minPowerStep; + $remainingPower -= $minPowerStep; + } elseif ($maxPowerStep < 0) { + // Nur negative Werte -> maximaler Wert einsetzen + $userEnergyProv[$instanceID] = $maxPowerStep; + $remainingPower += $maxPowerStep; + } else { + // Darf 0 haben + $userEnergyProv[$instanceID] = 0; + } +} // Verbraucher die nicht 0 annhemen können erhalten nun den minimalwert if (!empty($withoutZeroHigh)) { @@ -290,7 +297,7 @@ class Manager extends IPSModule $instanceID = $entry["InstanceID"]; $minPowerStep = min($entry["PowerSteps"]); - //$remainingPower -= $minPowerStep; + $remainingPower -= $minPowerStep; } } // Verbraucher die nicht 0 annhemen können erhalten nun den minimalwert @@ -299,7 +306,7 @@ class Manager extends IPSModule $instanceID = $entry["InstanceID"]; $minPowerStep = max($entry["PowerSteps"]); - //$remainingPower += $minPowerStep; + $remainingPower += $minPowerStep; } } @@ -310,33 +317,7 @@ class Manager extends IPSModule // Nun die verteilen, die 0 erhalten können. - //$samePriorityUsers = $withZero; - // Nun die verteilen, die 0 erhalten können. - - $userEnergyProv = []; - - // Initialisierung für jeden Benutzer abhängig von den Bedingungen - foreach ($samePriorityUsers as $entry) { - $instanceID = $entry["InstanceID"]; - - if (in_array($entry, $withZero, true)) { - // User darf 0 annehmen - $userEnergyProv[$instanceID] = 0; - } else { - // User darf nicht 0 annehmen -> min() oder max() - $minPowerStep = min($entry["PowerSteps"]); - $maxPowerStep = max($entry["PowerSteps"]); - - if ($minPowerStep > 0) { - $userEnergyProv[$instanceID] = $minPowerStep; - } elseif ($maxPowerStep < 0) { - $userEnergyProv[$instanceID] = $maxPowerStep; - } else { - // Falls weder klar >0 noch klar <0 -> als Fallback 0 - $userEnergyProv[$instanceID] = 0; - } - } - } + $samePriorityUsers = $withZero; IPS_LogMessage("Manag", $remainingPower);