From abfa84dff8888f5d82d8b2eacfbd8ba7fa3e549c Mon Sep 17 00:00:00 2001 From: Moirtz Wagner Date: Thu, 3 Sep 2026 19:26:40 +0200 Subject: [PATCH] Geaenderte Bedingungen erreichen den Runner wieder Die Seite speichert eine Automatik, indem sie deren Bedingungen loescht und neu einfuegt. Wer nur die Uhrzeit verstellt, aendert damit weder die Zeilenzahl noch automations.changed - ON UPDATE greift nur, wenn sich in automations wirklich eine Spalte aendert, und Name, Stockwerk und Fenster stehen ja noch genauso da. Der Runner prueft aber genau daran, ob er sein Regelwerk neu laden muss, und lief deshalb bis zum naechsten Neustart mit der alten Uhrzeit weiter. Aufgefallen ist es an einer Automatik, die auf 18:16 gestellt war und um 18:24 ausloeste - zur Zeit, die vor der Aenderung dort stand. changed wird jetzt ausdruecklich mitgeschrieben. Der Runner bekommt zusaetzlich einen Fingerabdruck ueber den Inhalt, damit er nicht darauf angewiesen ist, dass die Oberflaeche mitdenkt. Co-Authored-By: Claude Opus 5 --- restricted/automations.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/restricted/automations.php b/restricted/automations.php index f2690f9..e575797 100644 --- a/restricted/automations.php +++ b/restricted/automations.php @@ -630,10 +630,15 @@ function saveAutomation($data) throw new RuntimeException("Automatik " . $id . " gibt es nicht mehr."); } + // changed wird ausdruecklich mitgeschrieben. Es haengt zwar an + // ON UPDATE, das greift aber nur, wenn sich hier oben wirklich + // eine Spalte aendert - wer nur eine Bedingung verstellt, laesst + // Name, Stockwerk und Fenster ja unberuehrt. Der Runner sieht am + // Zeitstempel, dass er sein Regelwerk neu laden muss. $stmt = $db->prepare("UPDATE automations SET name = ?, floor = ?, enabled = ?, window_from = ?, window_to = ?, weekdays = ?, on_vacation = ?, on_holiday = ?, force_once = ?, - lockout_secs = ? + lockout_secs = ?, changed = NOW() WHERE id = ?"); $stmt->bind_param("ssissiiiiii", $name, $floor, $enabled, $windowFrom, $windowTo, $weekdays, $onVacation, $onHoliday, $forceOnce, $lockout, $id);