no message
This commit is contained in:
+58
-29
@@ -349,22 +349,36 @@ 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 $userInstanceID => $leistung) {
|
||||||
$minimalleitsung = min(
|
$positiveValues = array_filter(
|
||||||
array_column(
|
array_column(
|
||||||
array_filter($allSteps, function ($entry) use (
|
$samePriorityUsers,
|
||||||
$userInstanceID
|
'PowerSteps',
|
||||||
) {
|
'InstanceID'
|
||||||
return $entry["user"] == $userInstanceID;
|
)[$userInstanceID],
|
||||||
}),
|
function ($l) {
|
||||||
"step"
|
return $l >= 0;
|
||||||
)
|
}
|
||||||
);
|
);
|
||||||
|
// 2. Falls keine Werte ≥ 0 vorhanden sind, auf 0 zurückfallen
|
||||||
|
$fallbackMinimum = empty($positiveValues)
|
||||||
|
? max( array_column(
|
||||||
|
$samePriorityUsers,
|
||||||
|
'PowerSteps',
|
||||||
|
'InstanceID'
|
||||||
|
)[$userInstanceID])
|
||||||
|
: min($positiveValues);
|
||||||
|
|
||||||
IPS_LogMessage("Manager", $userInstanceID);
|
// 3. minimalleistung = dieser Fallback
|
||||||
IPS_LogMessage("Manager", $minimalleitsung);
|
$minimalleistung = $fallbackMinimum;
|
||||||
IPS_LogMessage("Manager", $remainingPower);
|
|
||||||
// Jedem user den höheren der beiden werte aus minimalwert oder vergebenem zuteilen
|
// 4. den höheren Wert wählen und für IPS negativieren
|
||||||
$leistung = max($leistung["Set_Leistung"], $minimalleitsung);
|
//$schreibleistung = max($leistung, $minimalleistung);
|
||||||
|
|
||||||
|
if (abs($leistung["Set_Leistung"]) > abs($minimalleistung)) {
|
||||||
|
$leistung = $leistung["Set_Leistung"];
|
||||||
|
} else {
|
||||||
|
$leistung = $minimalleistung;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Methode SetAktuelle_Leistung für jeden Verbraucher mit der entsprechenden Energie aufrufen
|
// Methode SetAktuelle_Leistung für jeden Verbraucher mit der entsprechenden Energie aufrufen
|
||||||
@@ -437,22 +451,37 @@ 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 $userInstanceID => $leistung) {
|
||||||
$minimalleitsung = min(
|
$positiveValues = array_filter(
|
||||||
array_column(
|
array_column(
|
||||||
array_filter($allSteps, function ($entry) use (
|
$samePriorityUsers,
|
||||||
$userInstanceID
|
'PowerSteps',
|
||||||
) {
|
'InstanceID'
|
||||||
return $entry["user"] == $userInstanceID;
|
)[$userInstanceID],
|
||||||
}),
|
function ($l) {
|
||||||
"step"
|
return $l <= 0;
|
||||||
)
|
}
|
||||||
);
|
);
|
||||||
|
// 2. Falls keine Werte ≥ 0 vorhanden sind, auf 0 zurückfallen
|
||||||
|
$fallbackMinimum = empty($positiveValues)
|
||||||
|
? min( array_column(
|
||||||
|
$samePriorityUsers,
|
||||||
|
'PowerSteps',
|
||||||
|
'InstanceID'
|
||||||
|
)[$userInstanceID])
|
||||||
|
: max($positiveValues);
|
||||||
|
|
||||||
IPS_LogMessage("Manager", $userInstanceID);
|
// 3. minimalleistung = dieser Fallback
|
||||||
IPS_LogMessage("Manager", $minimalleitsung);
|
$minimalleistung = $fallbackMinimum;
|
||||||
IPS_LogMessage("Manager", $remainingPower);
|
|
||||||
|
// 4. den höheren Wert wählen und für IPS negativieren
|
||||||
|
//$schreibleistung = max($leistung, $minimalleistung);
|
||||||
|
|
||||||
|
if (abs($leistung["Set_Leistung"]) > abs($minimalleistung)) {
|
||||||
|
$leistung = $leistung["Set_Leistung"]*-1;
|
||||||
|
} else {
|
||||||
|
$leistung = $minimalleistung;
|
||||||
|
}
|
||||||
// Jedem user den höheren der beiden werte aus minimalwert oder vergebenem zuteilen
|
// Jedem user den höheren der beiden werte aus minimalwert oder vergebenem zuteilen
|
||||||
$leistung = max($leistung["Set_Leistung"], $minimalleitsung)*-1;
|
|
||||||
|
|
||||||
|
|
||||||
// Methode SetAktuelle_Leistung für jeden Verbraucher mit der entsprechenden Energie aufrufen
|
// Methode SetAktuelle_Leistung für jeden Verbraucher mit der entsprechenden Energie aufrufen
|
||||||
|
|||||||
Reference in New Issue
Block a user