no message

This commit is contained in:
dh
2025-08-06 15:25:55 +02:00
parent 2584456c7b
commit ae4b47dbae
+58 -29
View File
@@ -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