diff --git a/HauptManager/module.php b/HauptManager/module.php index 007d9a6..e0aca4b 100644 --- a/HauptManager/module.php +++ b/HauptManager/module.php @@ -110,15 +110,36 @@ class HauptManager extends IPSModule IPS_LogMessage("Hauptmanager", print_r($Verbraucher_Liste_Korr)); // Wenn nicht alle Benutzer Idle = true sind, rufe SetAktuelle_Leistung mit Aktuelle_Leistung Werten auf, (alle Verbraucher behalten die aktuelle Leistung) - if (!$allIdle) { - foreach ($Verbraucher_Liste_Korr as $user) { - $sendarray = [ - "peak" => $Is_Peak_Shaving, - "setpower" => $user["User"]["Aktuelle_Leistung"] - ]; - RequestAction($user["Sendback"], json_encode($sendarray)); - IPS_LogMessage("HauptManager", "aufgerufen nicht alle idle"); + if (true) { + // Schritt 1: Benutzer nach Writeback-Wert aufteilen + $writebackArrays = []; + foreach ($Verbraucher_Liste_Korr[0] as $user) { + $writeback = $user['Writeback']; + if (!isset($writebackArrays[$writeback])) { + $writebackArrays[$writeback] = []; + } + $writebackArrays[$writeback][] = $user; + } + // Schritt 2: Foreach-Schleife pro Writeback-Array + foreach ($writebackArrays as $writeback => $users) { + $resultArray = [ + 'Is_Peak_Shaving' => true, + 'User' => [] + ]; + + foreach ($users as $user) { + $resultArray['User'][] = [ + 'InstanceID' => $user['InstanceID'], + 'Set_Leistung' => $user['Aktuelle_Leistung'] + ]; + } + + // Schritt 3: Array in String konvertieren + $resultString = json_encode($resultArray); + + // Schritt 4: RequestAction aufrufen + RequestAction($writeback, $resultString); } return; } diff --git a/library.json b/library.json index 5af3746..1fc1f76 100644 --- a/library.json +++ b/library.json @@ -6,7 +6,7 @@ "compatibility": { "version": "7.1" }, - "version": "1.152", + "version": "1.153", "build": 0, "date": 0 } \ No newline at end of file