From 9e3c17df0effcd73f399888f2d21177ce3c21878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=A4fliger?= Date: Wed, 6 Aug 2025 14:40:03 +0200 Subject: [PATCH] no message --- Manager/module.php | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/Manager/module.php b/Manager/module.php index cdd3d1d..1697238 100644 --- a/Manager/module.php +++ b/Manager/module.php @@ -348,28 +348,31 @@ class Manager extends IPSModule } - - - // Prüfen, dass jeder User mindestens seinen minimalwert an Leistung bekommt foreach ($userEnergyProv as $userInstanceID => $leistung) { // 1. Innerhalb der Schleife: alle nicht-negativen Leistungen sammeln $positiveValues = array_filter( - $userEnergyProv, + $samePriorityUsers[$userInstanceID], function ($l) { return $l >= 0; } ); // 2. Falls keine Werte ≥ 0 vorhanden sind, auf 0 zurückfallen $fallbackMinimum = empty($positiveValues) - ? 0 + ? max($samePriorityUsers[$userInstanceID]) : min($positiveValues); // 3. minimalleistung = dieser Fallback $minimalleistung = $fallbackMinimum; // 4. den höheren Wert wählen und für IPS negativieren - $schreibleistung = max($leistung, $minimalleistung); + //$schreibleistung = max($leistung, $minimalleistung); + + if (abs($leistung) > abs($minimalleistung)) { + $schreibleistung = $leistung; + } else { + $schreibleistung = $minimalleistung; + } // 5. Aktion ausführen if (IPS_InstanceExists($userInstanceID)) { @@ -423,24 +426,30 @@ class Manager extends IPSModule // Prüfen, dass jeder User mindestens seinen minimalwert an Leistung bekommt - foreach ($userEnergyProv as $userInstanceID => $leistung) { + foreach ($userEnergyProv as $userInstanceID => $leistung) { // 1. Innerhalb der Schleife: alle nicht-negativen Leistungen sammeln $positiveValues = array_filter( - $userEnergyProv, + $samePriorityUsers[$userInstanceID], function ($l) { return $l <= 0; } ); // 2. Falls keine Werte ≥ 0 vorhanden sind, auf 0 zurückfallen $fallbackMinimum = empty($positiveValues) - ? 0 - : min($positiveValues); + ? min($samePriorityUsers[$userInstanceID]) + : max($positiveValues); // 3. minimalleistung = dieser Fallback - $minimalleistung = $fallbackMinimum*-1; + $minimalleistung = $fallbackMinimum; // 4. den höheren Wert wählen und für IPS negativieren - $schreibleistung = max($leistung, $minimalleistung) * -1; + //$schreibleistung = max($leistung, $minimalleistung); + + if (abs($leistung) > abs($minimalleistung)) { + $schreibleistung = $leistung; + } else { + $schreibleistung = $minimalleistung; + } // 5. Aktion ausführen if (IPS_InstanceExists($userInstanceID)) {