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 <noreply@anthropic.com>
This commit is contained in:
@@ -630,10 +630,15 @@ function saveAutomation($data)
|
|||||||
throw new RuntimeException("Automatik " . $id . " gibt es nicht mehr.");
|
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 = ?,
|
$stmt = $db->prepare("UPDATE automations SET name = ?, floor = ?, enabled = ?,
|
||||||
window_from = ?, window_to = ?, weekdays = ?,
|
window_from = ?, window_to = ?, weekdays = ?,
|
||||||
on_vacation = ?, on_holiday = ?, force_once = ?,
|
on_vacation = ?, on_holiday = ?, force_once = ?,
|
||||||
lockout_secs = ?
|
lockout_secs = ?, changed = NOW()
|
||||||
WHERE id = ?");
|
WHERE id = ?");
|
||||||
$stmt->bind_param("ssissiiiiii", $name, $floor, $enabled, $windowFrom, $windowTo,
|
$stmt->bind_param("ssissiiiiii", $name, $floor, $enabled, $windowFrom, $windowTo,
|
||||||
$weekdays, $onVacation, $onHoliday, $forceOnce, $lockout, $id);
|
$weekdays, $onVacation, $onHoliday, $forceOnce, $lockout, $id);
|
||||||
|
|||||||
Reference in New Issue
Block a user