From 60b1007b7aaa4d1683e8062ec9de2ff9be98005c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=A4fliger?= Date: Tue, 23 Sep 2025 16:34:05 +0200 Subject: [PATCH] no message --- Manager/module.php | 88 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 65 insertions(+), 23 deletions(-) diff --git a/Manager/module.php b/Manager/module.php index de47798..f7bf637 100644 --- a/Manager/module.php +++ b/Manager/module.php @@ -270,33 +270,75 @@ class Manager extends IPSModule } */ - // Nun die verteilen, die 0 erhalten können. -$samePriorityUsers = $withZero; + /* Neuer Block */ + foreach ($samePriorityUsers as $entry) { + $withZero[] = $entry; -$userEnergyProv = []; + if (min($entry["PowerSteps"]) > 0) { + + $withoutZeroHigh[] = $entry; + } + if (max($entry["PowerSteps"]) < 0) { + + $withoutZeroLow[] = $entry; + } + } + + // Verbraucher die nicht 0 annhemen können erhalten nun den minimalwert + if (!empty($withoutZeroHigh)) { + foreach ($withoutZeroHigh as $entry) { + $instanceID = $entry["InstanceID"]; + $minPowerStep = min($entry["PowerSteps"]); -// Initialisierung für jeden Benutzer abhängig von den Bedingungen -foreach ($samePriorityUsers as $entry) { - $instanceID = $entry["InstanceID"]; + $remainingPower -= $minPowerStep; + } + } + // Verbraucher die nicht 0 annhemen können erhalten nun den minimalwert + if (!empty($withoutZeroLow)) { + foreach ($withoutZeroLow as $entry) { + $instanceID = $entry["InstanceID"]; + $minPowerStep = max($entry["PowerSteps"]); + + $remainingPower += $minPowerStep; + } + } + + + /* Neuer Block Ende */ + + + + + // 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; + } + } + } - 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; - } - } -} IPS_LogMessage("Manag", $remainingPower); if($remainingPower>=0){