Heizplan für Feiertage

Feiertag! Ausschlafen und gemütlich frühstücken. Da hast Du sicher andere Dinge im Kopf als Deinen Fibaro Heizplan. Aber Vorsicht, beim Frühstück könnte es kalte Füße und schlechte Laune geben. Dein Heizplan kennt nämlich keine Feiertage und geht davon aus, dass jeder Wochentag ein ganz normaler Arbeitstag ist. Diese Szene stellt Dir einen Heizplan für Feiertage zur Verfügung in dem sie Deinen Heizplan mit den Werten für Sonntag überschriebt und nach dem Feiertag wieder auf den Ursprung zurücksetzt. Ganz automatisch, ohne manuellen Eingriff.
Feiertag erkennen
Um das manuelle Überschreiben des Heizplanes realisieren zu können muss das HC2 erstmal wissen, ob heute ein Feiertag ist oder nicht. Dafür habe ich eine Szene mit der Anbindung an einen Webdienst veröffentlicht. Mit Hilfe der gelieferten Daten und daraus generierten globalen Variablen weiß das Smart Home ob ein Feiertag ist oder nicht.
Heizplan für Feiertage
Ist heute ein Feiertag wird der aktuelle Heizplan für alle Räume in dynamisch generierten globalen Variablen gespeichert und der aktuelle Tag mit den Sollwerten für Sonntag überschrieben. Fällt der Feiertag auf einen Sonntag bleibt natürlich der „richtige“ Heizplan aktiv.
Anders als in früheren Versionen (< v1.0) der Szene wird nun der echte Heizplan angepasst und kein anfälliger Umweg über den manuellen Modus verwendet. Die damit verbundenen Nachteile gehören damit der Vergangenheit an. So bleiben andere Szenen zur Steuerung der Temperatur weiterhin voll funktionsfähig und funktionieren wie gewohnt und ohne Einschränkung. Wird beispielsweise für einen Raum die Solltemperatur manuell geändert oder ein Fenster geöffnet greifen die dafür vorgesehenen Mechanismen wie gewohnt.
Ablauf der Szene
Ursprungsheizplan
Der Heizplan im Bad unterscheidet sich bei uns zwischen Wochentagen und Wochenenden. An Wochentagen zwischen 9 und 17 Uhr wird die Temperatur auf 18°C gesenkt. Dies geschieht am Wochenende nicht. Hier werden die 21°C durchgehend bis 22 Uhr gehalten.
Feiertag
Nehmen wir an heute ist Donnerstag 0:01 Uhr und ein Feiertag. Die globale Variable holidayToday wurde also durch die Feiertagsszene auf den Wert 1 gesetzt und die Heizplanszene durch die Änderung getriggert.
Die Szene stellt fest, dass ein Feiertag ist und sucht sich alle Heizpläne aus dem Home Center. In diesem Beispiel (Auszug) sind es die Heizpläne mit den IDs 4 (Schlafzimmer),185 (Bad) und 186 (Wohnzimmer). Mit den ermittelten IDs werden nun die vollständigen Heizpläne abgerufen und für jeden Raum separat in einer dynamisch generierten globalen Variable gespeichert. Für das Beispiel Bad heißt die globale Variable heatplan185 und enthält den ursprünglichen Heizplan im JSON Format.
{ "id":185, "name":"Bad", "properties":{ "monday":{ "morning":{ "hour":6, "minute":0, "temperature":21 }, "day":{ "hour":9, "minute":0, "temperature":18 }, "evening":{ "hour":17, "minute":0, "temperature":21 }, "night":{ "hour":22, "minute":0, "temperature":18 } }, "tuesday":{ "morning":{ "hour":6, "minute":0, "temperature":21 }, "day":{ "hour":9, "minute":0, "temperature":18 }, "evening":{ "hour":17, "minute":0, "temperature":21 }, "night":{ "hour":22, "minute":0, "temperature":18 } }, "wednesday":{ "morning":{ "hour":6, "minute":0, "temperature":21 }, "day":{ "hour":9, "minute":0, "temperature":18 }, "evening":{ "hour":17, "minute":0, "temperature":21 }, "night":{ "hour":22, "minute":0, "temperature":18 } }, "thursday":{ "morning":{ "hour":6, "minute":0, "temperature":21 }, "day":{ "hour":9, "minute":0, "temperature":18 }, "evening":{ "hour":17, "minute":0, "temperature":21 }, "night":{ "hour":22, "minute":0, "temperature":18 } }, "friday":{ "morning":{ "hour":6, "minute":0, "temperature":21 }, "day":{ "hour":9, "minute":0, "temperature":18 }, "evening":{ "hour":17, "minute":0, "temperature":21 }, "night":{ "hour":22, "minute":0, "temperature":18 } }, "saturday":{ "morning":{ "hour":6, "minute":0, "temperature":21 }, "day":{ "hour":10, "minute":0, "temperature":21 }, "evening":{ "hour":17, "minute":0, "temperature":21 }, "night":{ "hour":22, "minute":0, "temperature":18 } }, "sunday":{ "morning":{ "hour":6, "minute":0, "temperature":21 }, "day":{ "hour":10, "minute":0, "temperature":21 }, "evening":{ "hour":17, "minute":0, "temperature":21 }, "night":{ "hour":22, "minute":0, "temperature":18 } }, "handTemperature":0, "handTimestamp":0, "vacationTemperature":5, "rooms":[ 8 ] }, "created":1482175342, "modified":1482175342 }
Heizplan überschreiben
Nun wird der Heizplan des aktuellen Wochentages sowie für den darauffolgenden Tag – im Beispiel also Donnerstag und Freitag – mit den Werten für Sonntag überschrieben. Der darauffolgende Tag wird gleich mit überschrieben, weil beispielsweise der 1. und 2. Weihnachtsfeiertag direkt aufeinander folgen und die globale Variable gHoliday erst am 27.12. wieder geändert wird. Weiterhin wird zum Schutz der gespeicherten Heizpläne die ebenfalls generierte globale Variable heatplanOverwrite auf den Wert 1 gesetzt. Dies verhindert, dass bei erneuter Ausführung der Szene die Sicherungen überschrieben werden.
Nach dem Feiertag
Durch die erneute Änderung der globalen Variable gHolidayToday durch die Feiertagsszene wird der ursprüngliche Heizplan für alle Räume aus der Sicherung geholt und wieder aktiviert.
Konfiguration der Szene
--------------------------------------------------- ------------- Config ------------------------------ gHolidayToday = 'holidayToday' gHeatplanOverwrite = 'heatplanOverwrite' advDebug = true version = 'v1.0'
gHeatplanOverwrite: Name der globalen Variable die ein versehentlichen Überschreiben der Sicherungen verhindert.
gHolidayToday: Name der globalen Variable für Feiertage (1 oder 0) -> Siehe „Feiertagsvariablen“
Changelog
Version 0.5 (26.12.2016)
- Bugfix: Sollzeit-Berechnung korrigiert
Version 1.0 (29.12.2016)
- Neuentwicklung: Überschreiben und Sichern kompletter Heizpläne
Download
Download “Heizplan für Feiertage” Heizplan-Feiertag-1.0.zip – 31-mal heruntergeladen – 2 kB
Feedback erwünscht
Du findest die Umsetzung nicht gut, oder die Idee dahinter einfach sinnlos? Dann hinterlasse Deine Gedanken in der Kommentarfunktion und ich überlege mir, was ich damit anstelle. Wenn Du anders lautendes Feedback hast, dann selbstverständlich auch in die Kommentare damit.
Comments ()