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>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
-- ===========================================================================
|
||||
-- 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';
|
||||
Reference in New Issue
Block a user