no message

This commit is contained in:
2025-08-06 13:43:02 +02:00
parent 0fb86b1463
commit 2ffd4efc4f

View File

@@ -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
);
} }
} }
} }