diff --git a/Manager/module.php b/Manager/module.php index 8077c2e..de47798 100644 --- a/Manager/module.php +++ b/Manager/module.php @@ -270,51 +270,33 @@ class Manager extends IPSModule } */ - /* Neuer Block */ - foreach ($samePriorityUsers as $entry) { - $withZero[] = $entry; + // Nun die verteilen, die 0 erhalten können. +$samePriorityUsers = $withZero; - 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"]); +$userEnergyProv = []; - $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"]); +// Initialisierung für jeden Benutzer abhängig von den Bedingungen +foreach ($samePriorityUsers as $entry) { + $instanceID = $entry["InstanceID"]; - $remainingPower -= $minPowerStep; - } - } - - - /* Neuer Block Ende */ - - - - - // Nun die verteilen, die 0 erhalten können. - $samePriorityUsers = $withZero; - - $userEnergyProv = []; - $userEnergyProv = array_fill_keys(array_column($samePriorityUsers, "InstanceID"), 0); // Initialisierung für jeden Benutzer auf 0 setzen + 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){