"Konnte die Anfrage nicht lesen."], 400); } try { switch ($action) { case "save": $id = saveAutomation($body); jsonAntwort(["id" => $id]); case "delete": // Der Modus kommt aus der Rueckfrage im Browser. Unbekanntes // faellt auf das schonendere "abhaengen" zurueck - lieber eine // pausierte Automatik zu viel als eine geloeschte zu viel. $modus = ($body["mode"] ?? "") === "mitloeschen" ? "mitloeschen" : "abhaengen"; deleteAutomation(intval($body["id"] ?? 0), $modus); jsonAntwort(["ok" => true]); case "toggle": jsonAntwort(["enabled" => toggleAutomation(intval($body["id"] ?? 0))]); default: jsonAntwort(["error" => "Unbekannte Aktion."], 400); } } catch (InvalidArgumentException $e) { jsonAntwort(["error" => $e->getMessage()], 400); } catch (Throwable $e) { jsonAntwort(["error" => "Speichern fehlgeschlagen: " . $e->getMessage()], 500); } } // --- Wer haengt an dieser Automatik? ------------------------------------- // Wird vor dem Loeschen gefragt, damit die Rueckfrage im Browser die Namen // nennen kann und nicht nur eine Zahl. if ($action === "followers") { jsonAntwort(["followers" => automationFollowers(intval($_GET["id"] ?? 0))]); } // --- Uebersichtstabelle -------------------------------------------------- if ($action === "list") { $tage = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]; $list = listAutomations($floor); if (!$list) { echo "
Für diese Etage ist noch nichts eingerichtet.
"; } else { echo "| Name | Auslöser | " . "Aktion | " . "Wann | " . "Zuletzt | |
|---|---|---|---|---|---|
| " . $einzug . $griff . htmlspecialchars($a["name"]) . " | "; echo "" . htmlspecialchars($a["conditionText"]) . " | "; echo "" . htmlspecialchars($a["actionText"]) . " | "; echo "" . htmlspecialchars($wann) . " | "; echo "" . $zuletzt . " | "; echo "" . " " . " " . "" . " |