auf instanz geprüft dies nicht gibt...

This commit is contained in:
2025-03-04 10:31:53 +01:00
parent 21eab7d4fc
commit 7e9e912cdf
2 changed files with 13 additions and 11 deletions

View File

@@ -214,14 +214,19 @@ class HauptManager extends IPSModule
$samePriorityUsers = $withZero; $samePriorityUsers = $withZero;
// Array für die verteilte Energie pro User erstellen // Array für die verteilte Energie pro User erstellen
$userEnergyProv = []; $userEnergyProv = [];
$userEnergyProv = array_fill_keys(array_column($samePriorityUsers, "InstanceID"), 0); // Initialisierung für jeden Benutzer auf 0 setzen foreach ($samePriorityUsers as $user) {
$userEnergyProv["User"] = [
'InstanceID' => $user['InstanceID'],
'Writeback' => $user['Writeback']
];
}
// Alle Schritte der Benutzer in einem Array sammeln // Alle Schritte der Benutzer in einem Array sammeln
$allSteps = []; $allSteps = [];
foreach ($samePriorityUsers as $user) { foreach ($samePriorityUsers as $user) {
foreach ($user["PowerSteps"] as $step) { foreach ($user["PowerSteps"] as $step) {
$allSteps[] = [ $allSteps[] = [
"user" => $user["InstanceID"], "user" => $user["InstanceID"],
"writeback" => $user["Writeback"],
"step" => $step, "step" => $step,
]; ];
} }
@@ -247,13 +252,11 @@ class HauptManager 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 $user) {
$minimalleitsung = min( $minimalleistung = min(
array_column( array_column(
array_filter($allSteps, function ($entry) use ( array_filter($allSteps, function ($entry) use ($user) {
$userInstanceID return $entry["user"] == $user['InstanceID'] && $entry["writeback"] == $user['Writeback'];
) {
return $entry["user"] == $userInstanceID;
}), }),
"step" "step"
) )
@@ -263,7 +266,6 @@ class HauptManager extends IPSModule
$leistung = max($leistung, $minimalleitsung); $leistung = max($leistung, $minimalleitsung);
// Methode SetAktuelle_Leistung für jeden Verbraucher mit der entsprechenden Energie aufrufen // Methode SetAktuelle_Leistung für jeden Verbraucher mit der entsprechenden Energie aufrufen
if (IPS_InstanceExists($userInstanceID)) {
$resultArray['User'][] = [ $resultArray['User'][] = [
'InstanceID' => $userInstanceID['InstanceID'], 'InstanceID' => $userInstanceID['InstanceID'],
@@ -272,7 +274,7 @@ class HauptManager extends IPSModule
]; ];
IPS_LogMessage("Hauptmanager", "aufgerufen setleistung normal"); IPS_LogMessage("Hauptmanager", "aufgerufen setleistung normal");
}
} }
} }

View File

@@ -6,7 +6,7 @@
"compatibility": { "compatibility": {
"version": "7.1" "version": "7.1"
}, },
"version": "1.161", "version": "1.162",
"build": 0, "build": 0,
"date": 0 "date": 0
} }