no message

This commit is contained in:
2025-09-26 15:35:16 +02:00
parent aa150f58be
commit 5e08aa051d
8 changed files with 527 additions and 14 deletions

View File

@@ -170,7 +170,10 @@ class Manager extends IPSModule
}
//if(in_array(0, $powerSteps, true)){
//if(in_array(0, $powerSteps, true)){
//}
// Addiere die aktuell bereits verwendete Leistung auf, um sie bei der verteilung zu berücksichtigen
$totalAktuelle_Leistung += ($Aktuelle_Leistung-$delta);
@@ -287,7 +290,7 @@ class Manager extends IPSModule
$instanceID = $entry["InstanceID"];
$minPowerStep = min($entry["PowerSteps"]);
$remainingPower -= $minPowerStep;
//$remainingPower -= $minPowerStep;
}
}
// Verbraucher die nicht 0 annhemen können erhalten nun den minimalwert
@@ -296,7 +299,7 @@ class Manager extends IPSModule
$instanceID = $entry["InstanceID"];
$minPowerStep = max($entry["PowerSteps"]);
$remainingPower += $minPowerStep;
//$remainingPower += $minPowerStep;
}
}
@@ -309,8 +312,42 @@ class Manager extends IPSModule
// 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
$userEnergyProv = [];
$userEnergyProv = array_fill_keys(array_column($samePriorityUsers, "InstanceID"), 0); // Initialisierung für jeden Benutzer auf 0 setzen
foreach ($samePriorityUsers as $entry) {
$instanceID = $entry["InstanceID"];
// Schutz: falls PowerSteps nicht gesetzt oder kein Array ist
$steps = (isset($entry["PowerSteps"]) && is_array($entry["PowerSteps"])) ? $entry["PowerSteps"] : [0];
// Wenn 0 als möglicher Step vorhanden ist -> 0 setzen
$minStep = min($steps);
$maxStep = max($steps);
if (in_array(0, $steps, true)) {
$userEnergyProv[$instanceID] = 0;
continue;
} elseif ($minStep > 0) {
// nur positive Schritte -> minimalen positiven Wert einsetzen
$userEnergyProv[$instanceID] = $minStep;
// entspricht deinem vorherigen Verhalten: remainingPower reduzieren
$remainingPower -= $minStep;
} elseif ($maxStep < 0) {
// nur negative Schritte -> maximalen (am wenigsten negativen) Wert einsetzen
$userEnergyProv[$instanceID] = $maxStep;
// entspricht deinem vorherigen Verhalten: remainingPower erhöhen (maxStep ist negativ)
$remainingPower += $maxStep;
} else {
// Mixed (positive & negative) aber kein 0 -> Fallback 0 (ändere wenn nötig)
$userEnergyProv[$instanceID] = 0;
}
}
IPS_LogMessage("Manag", $remainingPower);