no message

This commit is contained in:
2025-09-23 16:34:05 +02:00
parent a022b59960
commit 60b1007b7a

View File

@@ -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){