Files
adminandClaude Opus 5 8340e8356e Runner: Kalender am Vorabend fuer den folgenden Tag pruefen
Mit next_day = 1 gelten Wochentage, Ferien und Feiertage fuer morgen
(gemeinter_tag). kalender() merkt sich dafuer heute und morgen und haelt
einen fehlgeschlagenen Abruf nicht mehr den ganzen Tag fest. Uhrzeit,
Zeitfenster und once_per_day bleiben beim heutigen Tag. vorabend.sql legt
die Spalte an.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 09:33:59 +02:00

42 lines
1.7 KiB
SQL

-- ===========================================================================
-- Vorabend: Wochentage, Ferien und Feiertage fuer den folgenden Tag.
--
-- Einspielen:
-- mysql -h 127.0.0.1 -P 3310 -u homeMesh -p homeMesh < vorabend.sql
--
-- Danach den Runner neu starten (startSolarServer.sh) - Daten laedt er
-- selbst nach, neuen Code nicht.
--
-- Gebraucht fuer alles, was abends fuer den naechsten Tag geschieht:
-- "Kinderrollos zu, wenn morgen Schule ist". Mit dem heutigen Tag liess sich
-- das nur annaehern (So-Do, heute keine Ferien) und ging am letzten
-- Ferientag, am Abend vor einem Feiertag und am Abend eines Feiertags
-- daneben. Mit next_day = 1 heisst dieselbe Regel einfach Mo-Fr, Ferien nie,
-- Feiertage nie - wie der Wecker.
--
-- Nur der Rahmen verschiebt sich; Uhrzeit, Zeitfenster und "einmal am Tag"
-- bleiben beim heutigen Tag. Siehe gemeinter_tag() im Runner.
-- ===========================================================================
-- Idempotent: beim zweiten Lauf steht die Spalte schon da.
SET @vorhanden := (SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'automations'
AND COLUMN_NAME = 'next_day');
SET @sql := IF(@vorhanden = 0,
'ALTER TABLE automations ADD COLUMN next_day TINYINT(1) NOT NULL DEFAULT 0
COMMENT ''Wochentage, Ferien und Feiertage gelten fuer morgen (Vorabend)''
AFTER on_holiday',
'DO 0');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT COLUMN_NAME, COLUMN_DEFAULT, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'automations'
AND COLUMN_NAME = 'next_day';