Heizplan für Feiertage

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.

Feiertagsheizplan
Feiertagsheizplan

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.

Heizplan für Wochentage
Heizplan für Wochentage

Heizplan für Wochenenden
Heizplan für Wochenenden

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.

Start der Szene an einem Feiertag
Start der Szene an einem Feiertag

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.

Der überschriebene Heizplan
Der überschriebene Heizplan

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.

Zurücksetzen der Heizpläne
Zurücksetzen der Heizpläne

Heizplan für Wochentage
Heizplan für Wochentage

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.