no message

This commit is contained in:
dh
2025-08-06 14:25:15 +02:00
parent a7e2a0cb3f
commit 4596eb1a03
+32 -40
View File
@@ -353,29 +353,25 @@ class Manager extends IPSModule
// Prüfen, dass jeder User mindestens seinen minimalwert an Leistung bekommt // Prüfen, dass jeder User mindestens seinen minimalwert an Leistung bekommt
foreach ($userEnergyProv as $userInstanceID => $leistung) { foreach ($userEnergyProv as $userInstanceID => $leistung) {
// 1. Fallback: Wert aus userEnergyProv, der betragsmäßig am nächsten bei 0 liegt // 1. Innerhalb der Schleife: alle nicht-negativen Leistungen sammeln
if (!empty($userEnergyProv)) { $positiveValues = array_filter(
$closestToZero = null; $userEnergyProv,
foreach ($userEnergyProv as $val) { function ($l) {
if ($closestToZero === null || abs($val) < abs($closestToZero)) { return $l >= 0;
$closestToZero = $val;
}
} }
$minimalleistung = $closestToZero; );
} else { // 2. Falls keine Werte ≥ 0 vorhanden sind, auf 0 zurückfallen
$minimalleistung = 0; $fallbackMinimum = empty($positiveValues)
} ? 0
: min($positiveValues);
// 2. Welcher Wert liegt weiter von 0 entfernt? (größerer Absolutwert) // 3. minimalleistung = dieser Fallback
if (abs($leistung) >= abs($minimalleistung)) { $minimalleistung = $fallbackMinimum;
$chosen = $leistung;
} else {
$chosen = $minimalleistung;
}
// 3. Für IPS negativieren und schreiben // 4. den höheren Wert wählen und für IPS negativieren
$schreibleistung = $chosen; $schreibleistung = max($leistung, $minimalleistung);
// 5. Aktion ausführen
if (IPS_InstanceExists($userInstanceID)) { if (IPS_InstanceExists($userInstanceID)) {
IPS_RequestAction( IPS_RequestAction(
$userInstanceID, $userInstanceID,
@@ -384,7 +380,7 @@ class Manager extends IPSModule
); );
IPS_LogMessage( IPS_LogMessage(
"Manager", "Manager",
"aufgerufen setleistung (weiter von 0): " . $schreibleistung "aufgerufen setleistung (Berechnung in foreach): " . $schreibleistung
); );
} }
} }
@@ -428,29 +424,25 @@ class Manager extends IPSModule
// Prüfen, dass jeder User mindestens seinen minimalwert an Leistung bekommt // Prüfen, dass jeder User mindestens seinen minimalwert an Leistung bekommt
foreach ($userEnergyProv as $userInstanceID => $leistung) { foreach ($userEnergyProv as $userInstanceID => $leistung) {
// 1. Fallback: Wert aus userEnergyProv, der betragsmäßig am nächsten bei 0 liegt // 1. Innerhalb der Schleife: alle nicht-negativen Leistungen sammeln
if (!empty($userEnergyProv)) { $positiveValues = array_filter(
$closestToZero = null; $userEnergyProv,
foreach ($userEnergyProv as $val) { function ($l) {
if ($closestToZero === null || abs($val) < abs($closestToZero)) { return $l <= 0;
$closestToZero = $val;
}
} }
$minimalleistung = $closestToZero; );
} else { // 2. Falls keine Werte ≥ 0 vorhanden sind, auf 0 zurückfallen
$minimalleistung = 0; $fallbackMinimum = empty($positiveValues)
} ? 0
: min($positiveValues);
// 2. Welcher Wert liegt weiter von 0 entfernt? (größerer Absolutwert) // 3. minimalleistung = dieser Fallback
if (abs($leistung) >= abs($minimalleistung)) { $minimalleistung = $fallbackMinimum*-1;
$chosen = $leistung*-1;
} else {
$chosen = $minimalleistung;
}
// 3. Für IPS negativieren und schreiben // 4. den höheren Wert wählen und für IPS negativieren
$schreibleistung = $chosen * -1; $schreibleistung = max($leistung, $minimalleistung) * -1;
// 5. Aktion ausführen
if (IPS_InstanceExists($userInstanceID)) { if (IPS_InstanceExists($userInstanceID)) {
IPS_RequestAction( IPS_RequestAction(
$userInstanceID, $userInstanceID,
@@ -459,7 +451,7 @@ class Manager extends IPSModule
); );
IPS_LogMessage( IPS_LogMessage(
"Manager", "Manager",
"aufgerufen setleistung (weiter von 0): " . $schreibleistung "aufgerufen setleistung (Berechnung in foreach): " . $schreibleistung
); );
} }
} }