no message
This commit is contained in:
@@ -240,7 +240,7 @@ class Manager extends IPSModule
|
|||||||
$withZero = [];
|
$withZero = [];
|
||||||
$withoutZeroHigh = [];
|
$withoutZeroHigh = [];
|
||||||
$withoutZeroLow = [];
|
$withoutZeroLow = [];
|
||||||
|
|
||||||
// Verbraucher die nicht 0 Annhemen können, bekommen einfach den tiefsten wert
|
// Verbraucher die nicht 0 Annhemen können, bekommen einfach den tiefsten wert
|
||||||
|
|
||||||
|
|
||||||
@@ -348,35 +348,40 @@ class Manager extends IPSModule
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//else
|
|
||||||
|
|
||||||
|
|
||||||
// mache invertierte verteilung
|
|
||||||
|
|
||||||
|
|
||||||
// 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(
|
// 1. Innerhalb der Schleife: alle nicht-negativen Leistungen sammeln
|
||||||
array_column(
|
$positiveValues = array_filter(
|
||||||
array_filter($allSteps, function ($entry) use (
|
$userEnergyProv,
|
||||||
$userInstanceID
|
function ($l) {
|
||||||
) {
|
return $l >= 0;
|
||||||
return $entry["user"] == $userInstanceID;
|
}
|
||||||
}),
|
|
||||||
"step"
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
// 2. Falls keine Werte ≥ 0 vorhanden sind, auf 0 zurückfallen
|
||||||
|
$fallbackMinimum = empty($positiveValues)
|
||||||
|
? 0
|
||||||
|
: min($positiveValues);
|
||||||
|
|
||||||
// Jedem user den höheren der beiden werte aus minimalwert oder vergebenem zuteilen
|
// 3. minimalleistung = dieser Fallback
|
||||||
$leistung = max($leistung, $minimalleitsung);
|
$minimalleistung = $fallbackMinimum;
|
||||||
|
|
||||||
|
// 4. den höheren Wert wählen und für IPS negativieren
|
||||||
|
$schreibleistung = max($leistung, $minimalleistung);
|
||||||
|
|
||||||
|
// 5. Aktion ausführen
|
||||||
// Methode SetAktuelle_Leistung für jeden Verbraucher mit der entsprechenden Energie aufrufen
|
|
||||||
if (IPS_InstanceExists($userInstanceID)) {
|
if (IPS_InstanceExists($userInstanceID)) {
|
||||||
IPS_RequestAction($userInstanceID,"SetAktuelle_Leistung",$leistung);
|
IPS_RequestAction(
|
||||||
IPS_LogMessage("Manager", "aufgerufen setleistung if". $leistung);
|
$userInstanceID,
|
||||||
|
"SetAktuelle_Leistung",
|
||||||
|
$schreibleistung
|
||||||
|
);
|
||||||
|
IPS_LogMessage(
|
||||||
|
"Manager",
|
||||||
|
"aufgerufen setleistung (Berechnung in foreach): " . $schreibleistung
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -388,7 +393,7 @@ class Manager extends IPSModule
|
|||||||
if($step<=0){
|
if($step<=0){
|
||||||
$allSteps[] = [
|
$allSteps[] = [
|
||||||
"user" => $user["InstanceID"],
|
"user" => $user["InstanceID"],
|
||||||
"Leistung_Delta" => $user["Leistung_Delta"],
|
//"Leistung_Delta" => $user["Leistung_Delta"],
|
||||||
"step" => -1*$step,
|
"step" => -1*$step,
|
||||||
];}
|
];}
|
||||||
}
|
}
|
||||||
@@ -419,27 +424,35 @@ 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) {
|
||||||
$minimalleitsung = min(
|
// 1. Innerhalb der Schleife: alle nicht-negativen Leistungen sammeln
|
||||||
array_column(
|
$positiveValues = array_filter(
|
||||||
array_filter($allSteps, function ($entry) use (
|
$userEnergyProv,
|
||||||
$userInstanceID
|
function ($l) {
|
||||||
) {
|
return $l <= 0;
|
||||||
return $entry["user"] == $userInstanceID;
|
}
|
||||||
}),
|
|
||||||
"step"
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
// 2. Falls keine Werte ≥ 0 vorhanden sind, auf 0 zurückfallen
|
||||||
|
$fallbackMinimum = empty($positiveValues)
|
||||||
|
? 0
|
||||||
|
: min($positiveValues);
|
||||||
|
|
||||||
// Jedem user den höheren der beiden werte aus minimalwert oder vergebenem zuteilen
|
// 3. minimalleistung = dieser Fallback
|
||||||
$schreibleistung = max($leistung, $minimalleitsung)*-1;
|
$minimalleistung = $fallbackMinimum*-1;
|
||||||
|
|
||||||
|
// 4. den höheren Wert wählen und für IPS negativieren
|
||||||
|
$schreibleistung = max($leistung, $minimalleistung) * -1;
|
||||||
|
|
||||||
|
// 5. Aktion ausführen
|
||||||
// Methode SetAktuelle_Leistung für jeden Verbraucher mit der entsprechenden Energie aufrufen
|
|
||||||
if (IPS_InstanceExists($userInstanceID)) {
|
if (IPS_InstanceExists($userInstanceID)) {
|
||||||
IPS_RequestAction($userInstanceID,"SetAktuelle_Leistung",$schreibleistung);
|
IPS_RequestAction(
|
||||||
IPS_LogMessage("Manager", "aufgerufen setleistung else ".$schreibleistung);
|
$userInstanceID,
|
||||||
|
"SetAktuelle_Leistung",
|
||||||
|
$schreibleistung
|
||||||
|
);
|
||||||
|
IPS_LogMessage(
|
||||||
|
"Manager",
|
||||||
|
"aufgerufen setleistung (Berechnung in foreach): " . $schreibleistung
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user