diff --git a/Manager/module.php b/Manager/module.php index e8a1988..8671fcb 100644 --- a/Manager/module.php +++ b/Manager/module.php @@ -270,26 +270,19 @@ class Manager extends IPSModule } */ -$userEnergyProv = []; + /* Neuer Block */ + foreach ($samePriorityUsers as $entry) { + $withZero[] = $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; - } -} + 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)) { @@ -319,6 +312,8 @@ foreach ($samePriorityUsers as $entry) { // 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 IPS_LogMessage("Manag", $remainingPower);